/* =============================================================================
   Twenty Seven Marketing — main stylesheet
   Organized in sections; see the table of contents below.

   1.  Custom properties / design tokens
   2.  Reset & base
   3.  Typography
   4.  Layout utilities
   5.  Buttons & links
   6.  Header / navigation
   7.  Footer
   8.  Hero (home + inner-page + case study)
   9.  Marquee (client logos + behind-the-scenes)
   10. Stats / process / duo photos
   11. Work grid & cards
   12. Services grid & service rows
   13. Team
   14. Testimonials
   15. FAQ (static list + accordion)
   16. CTA band
   17. About-specific (values / awards / clients)
   18. Contact-specific + Contact Form 7
   19. Generic page / blog fallback
   20. Media & placeholders
   21. Misc utilities
   22. Motion & accessibility
   ========================================================================== */

/* -----------------------------------------------------------------------
   1. Custom properties
   -------------------------------------------------------------------- */
:root {
	--ts-ink: #01292D;
	--ts-cream: #F4F3F2;
	--ts-gold: #F3DF96;
	--ts-stone: #6E7A79;
	--ts-body: #2B3A3A;
	--ts-slate-blue: #78A0B5;
	--ts-maroon: #560000;
	--ts-light-blue: #BAD6FD;
	--ts-white: #FFFFFF;

	--ts-ink-08: rgba(1, 41, 45, 0.08);
	--ts-ink-12: rgba(1, 41, 45, 0.12);
	--ts-ink-15: rgba(1, 41, 45, 0.15);
	--ts-ink-25: rgba(1, 41, 45, 0.25);
	--ts-ink-60: rgba(1, 41, 45, 0.6);
	--ts-ink-70: rgba(1, 41, 45, 0.7);

	--ts-cream-55: rgba(244, 243, 242, 0.55);
	--ts-cream-60: rgba(244, 243, 242, 0.6);
	--ts-cream-65: rgba(244, 243, 242, 0.65);
	--ts-cream-75: rgba(244, 243, 242, 0.75);

	--ts-font-serif: 'Bodoni Moda', Georgia, 'Times New Roman', serif;
	--ts-font-sans: 'Jost', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;

	--ts-container-pad: 3rem;
	/* 48px */
	--ts-nav-height: 5.25rem;
	/* 84px */
	--ts-transition: 0.2s ease;
	--ts-transition-slow: 0.25s ease;
}

@media (max-width: 782px) {
	:root {
		--ts-container-pad: 1.5rem;
		--ts-nav-height: 4.5rem;
	}
}

/* -----------------------------------------------------------------------
   2. Reset & base
   -------------------------------------------------------------------- */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	margin: 0;
	padding: 0;
	background: var(--ts-cream);
	color: var(--ts-body);
	font-family: var(--ts-font-sans);
	font-size: 1rem;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

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

a {
	color: inherit;
	text-decoration: none;
}

a:hover {
	color: var(--ts-ink);
}

button {
	font-family: inherit;
}

ul,
ol {
	margin: 0;
	padding: 0;
	list-style: none;
}

p {
	margin: 0 0 1em;
}

p:last-child {
	margin-bottom: 0;
}

::selection {
	background: var(--ts-gold);
	color: var(--ts-ink);
}

/* -----------------------------------------------------------------------
   3. Typography
   -------------------------------------------------------------------- */
h1,
h2,
h3,
h4 {
	font-family: var(--ts-font-serif);
	font-weight: 600;
	margin: 0;
	color: var(--ts-ink);
}

.ts-h2 {
	font-size: 2.5rem;
	line-height: 1.15;
	margin: 0 0 2.5rem;
}

.ts-h2 em {
	font-style: italic;
	font-weight: 500;
	color: var(--ts-stone);
}

.ts-h2--light {
	color: var(--ts-cream);
}

.ts-h2--light em {
	color: var(--ts-cream-60);
}

.ts-h2--small {
	font-size: 2.25rem;
	margin-bottom: 2rem;
}

.ts-h3 {
	font-size: 1.75rem;
	margin: 0 0 1rem;
}

.ts-eyebrow {
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.125rem;
	text-transform: uppercase;
	color: var(--ts-stone);
	margin-bottom: 0.5rem;
}

.ts-eyebrow--gold {
	color: var(--ts-gold);
}

.ts-eyebrow--on-blue {
	color: var(--ts-ink);
	opacity: 0.8;
}

.ts-eyebrow--on-gold {
	color: var(--ts-ink);
	opacity: 0.8;
}

.ts-prose {
	font-size: 1.125rem;
	line-height: 1.75;
	color: var(--ts-body);
	max-width: 45rem;
}

.ts-prose h2,
.ts-prose h3 {
	margin-top: 1.5em;
	margin-bottom: 0.5em;
}

.ts-prose p {
	margin-bottom: 1.25em;
}

.ts-prose a {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.ts-prose ul,
.ts-prose ol {
	list-style: disc;
	margin: 0 0 1.25em 1.25em;
}

.ts-prose ol {
	list-style: decimal;
}

.ts-text-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	font-size: 0.8125rem;
	letter-spacing: 0.0625rem;
	text-transform: uppercase;
	color: var(--ts-ink);
	cursor: pointer;
	transition: opacity var(--ts-transition);
	white-space: nowrap;
}

.ts-text-link:hover {
	opacity: 0.6;
	color: var(--ts-ink);
}

.ts-text-link--gold {
	color: var(--ts-gold);
}

.ts-badge-pill {
	display: inline-block;
	border: 1px solid var(--ts-ink-25);
	border-radius: 999px;
	padding: 0.5rem 1.125rem;
	font-size: 0.75rem;
	letter-spacing: 0.0625rem;
	text-transform: uppercase;
	color: var(--ts-ink);
	margin-bottom: 1.75rem;
}

.ts-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

.ts-pill {
	border: 1px solid rgba(244, 243, 242, 0.4);
	border-radius: 999px;
	padding: 0.5rem 1.125rem;
	font-size: 0.75rem;
	letter-spacing: 0.0625rem;
	color: var(--ts-cream);
}

.ts-arrow {
	display: inline-block;
}

.ts-empty-note {
	color: var(--ts-stone);
	font-size: 1rem;
	border: 1px dashed var(--ts-ink-25);
	padding: 1.5rem;
}

/* -----------------------------------------------------------------------
   4. Layout utilities
   -------------------------------------------------------------------- */
.site {
	overflow-x: hidden;
}

.ts-section {
	padding: 6.25rem var(--ts-container-pad);
}

body.project-template main.ts-case-study .ts-section .ts-label-col-section {
	padding: 0;
}

body.project-template main.ts-case-study .ts-section:has(.ts-duo-photos.ts-duo-photos--even) {
	padding: 0 var(--ts-container-pad) 6.25rem;
}

body.project-template main.ts-case-study .ts-section.custom-content {
	max-width: 100%;
	width: 100%;
	padding: 6.25rem var(--ts-container-pad) 0;
}

@media (max-width: 782px) {
	.ts-section {
		padding: 3.5rem var(--ts-container-pad);
	}
}

.ts-section__header {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 2rem;
	margin-bottom: 3rem;
}

@media (max-width: 700px) {
	.ts-section__header {
		flex-direction: column;
		align-items: flex-start;
		gap: 1rem;
	}
}

.ts-two-col-section {
	padding: 6.25rem var(--ts-container-pad);
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 3.75rem;
}

.ts-two-col-section--bordered {
	border-top: 1px solid var(--ts-ink-15);
}

.ts-two-col-section__lead {
	font-size: 1.1875rem;
	line-height: 1.8;
	margin: 0;
}

@media (max-width: 782px) {
	.ts-two-col-section {
		grid-template-columns: 1fr;
		padding: 3.5rem var(--ts-container-pad);
		gap: 2rem;
	}
}

.ts-label-col-section {
	padding: 0 var(--ts-container-pad) 5rem;
	display: grid;
	grid-template-columns: 12.5rem minmax(0, 1fr);
	gap: 2.5rem;
}

.ts-label-col-section--bordered {
	border-top: 1px solid var(--ts-ink-15);
	padding-top: 5rem;
}

.ts-label-col-section--bordered-both {
	border-top: 1px solid var(--ts-ink-15);
	border-bottom: 1px solid var(--ts-ink-15);
	padding-top: 5rem;
}

.ts-label-col-section__label {
	font-size: 0.8125rem;
	letter-spacing: 0.125rem;
	text-transform: uppercase;
	color: var(--ts-stone);
}

.ts-label-col-section__body {
	font-size: 1.125rem;
	line-height: 1.75;
	color: var(--ts-body);
	/* max-width: 45rem; */
	max-width: 100%;
	margin: 0;
}

.ts-label-col-section__body--lg {
	font-size: 1.25rem;
	color: var(--ts-ink);
}

@media (max-width: 700px) {
	.ts-label-col-section {
		grid-template-columns: 1fr;
		padding-left: var(--ts-container-pad);
		padding-right: var(--ts-container-pad);
	}
}

/* -----------------------------------------------------------------------
   5. Buttons & links
   -------------------------------------------------------------------- */
.ts-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	font-weight: 600;
	font-size: 0.9375rem;
	padding: 1rem 1.875rem;
	text-transform: uppercase;
	letter-spacing: 0.03125rem;
	cursor: pointer;
	border: none;
	transition: transform var(--ts-transition), opacity var(--ts-transition);
}

.ts-btn:hover {
	transform: translateY(-2px);
	opacity: 0.85;
}

.ts-btn--gold {
	background: var(--ts-gold);
	color: var(--ts-ink);
}

.ts-btn--gold:hover {
	color: var(--ts-ink);
}

.ts-btn--ink {
	background: var(--ts-ink);
	color: var(--ts-cream);
}

.ts-btn--ink:hover {
	color: var(--ts-cream);
}

.ts-back-link {
	display: inline-block;
	font-size: 0.8125rem;
	letter-spacing: 0.0625rem;
	color: var(--ts-stone);
	cursor: pointer;
	margin-bottom: 1.5rem;
	transition: opacity var(--ts-transition);
}

.ts-back-link:hover {
	opacity: 0.6;
	color: var(--ts-stone);
}

.ts-back-link--on-dark {
	color: var(--ts-cream-75);
}

.ts-back-link--on-dark:hover {
	color: var(--ts-cream-75);
}

/* -----------------------------------------------------------------------
   6. Header / navigation
   -------------------------------------------------------------------- */
.ts-header {
	position: relative;
	z-index: 100;
}

.ts-nav {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	height: var(--ts-nav-height);
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 var(--ts-container-pad);
	background: var(--ts-ink);
	transition: background var(--ts-transition-slow);
}

body.ts-nav-transparent:not(.ts-nav-scrolled) .ts-nav {
	background: transparent;
}

.ts-nav__logo {
	display: inline-flex;
	align-items: center;
	pointer-events: auto;
}

.ts-nav__logo-img {
	height: 2.5625rem;
	width: auto;
	max-width: 11.1875rem;
}

.ts-nav__logo-text {
	font-family: var(--ts-font-serif);
	font-weight: 600;
	font-size: 1.25rem;
	color: var(--ts-cream);
}

.ts-nav .custom-logo {
	height: 2.5625rem;
	width: auto;
}

.ts-nav__right {
	display: flex;
	align-items: center;
	gap: 2.5rem;
}

.ts-nav__menu {
	display: flex;
}

.ts-nav__list {
	display: flex;
	align-items: center;
	gap: 2.5rem;
}

.ts-nav__list li {
	list-style: none;
}

.ts-nav__list a {
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--ts-cream-75);
	cursor: pointer;
	transition: color var(--ts-transition);
	pointer-events: auto;
}

.ts-nav__list a:hover,
.ts-nav__list .current-menu-item>a,
.ts-nav__list .current-menu-ancestor>a,
.ts-nav__list .current_page_item>a,
.ts-nav__list .current_page_ancestor>a {
	color: var(--ts-gold);
	font-weight: 600;
}

.ts-nav__cta {
	pointer-events: auto;
}

.ts-nav__toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 0.3125rem;
	width: 2.5rem;
	height: 2.5rem;
	background: transparent;
	border: none;
	cursor: pointer;
	pointer-events: auto;
}

.ts-nav__toggle-bar {
	display: block;
	height: 2px;
	width: 100%;
	background: var(--ts-cream);
	transition: transform var(--ts-transition), opacity var(--ts-transition);
}

body.ts-nav-transparent:not(.ts-nav-scrolled) .ts-nav__toggle-bar {
	background: var(--ts-cream);
}

.ts-mobile-menu {
	position: fixed;
	inset: 0;
	z-index: 99;
	background: var(--ts-ink);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	gap: 2rem;
	padding: 0 var(--ts-container-pad);
	transform: translateY(-100%);
	opacity: 0;
	visibility: hidden;
	transition: transform var(--ts-transition-slow), opacity var(--ts-transition-slow), visibility 0s linear var(--ts-transition-slow);
}

body.ts-mobile-menu-open .ts-mobile-menu {
	transform: translateY(0);
	opacity: 1;
	visibility: visible;
	transition: transform var(--ts-transition-slow), opacity var(--ts-transition-slow);
}

body.ts-mobile-menu-open {
	overflow: hidden;
}

.ts-mobile-menu__list {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.ts-mobile-menu__list a {
	font-family: var(--ts-font-serif);
	font-size: 2rem;
	line-height: 1.25;
	color: var(--ts-cream);
}

.ts-mobile-menu__list .current-menu-item>a {
	color: var(--ts-gold);
}

.ts-mobile-menu__cta {
	margin-top: 1rem;
}

@media (max-width: 900px) {
	.ts-nav__menu {
		display: none;
	}

	.ts-nav__cta {
		display: none;
	}

	.ts-nav__toggle {
		display: flex;
	}
}

/* -----------------------------------------------------------------------
   7. Footer
   -------------------------------------------------------------------- */
.ts-footer {
	background: var(--ts-ink);
	padding: 6.25rem var(--ts-container-pad) 2.5rem;
}

.ts-footer__grid {
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr 1fr;
	gap: 2.5rem;
	margin-bottom: 6.25rem;
}

@media (max-width: 900px) {
	.ts-footer__grid {
		grid-template-columns: 1fr 1fr;
		row-gap: 2.5rem;
	}
}

@media (max-width: 560px) {
	.ts-footer__grid {
		grid-template-columns: 1fr;
		margin-bottom: 3.5rem;
	}
}

.ts-footer__tagline {
	font-size: 1.375rem;
	line-height: 1.4;
	color: var(--ts-cream);
	font-weight: 500;
	margin: 0 0 1.25rem;
	max-width: 21.25rem;
}

.ts-footer__heading {
	font-size: 0.8125rem;
	color: rgba(244, 243, 242, 0.4);
	margin-bottom: 1rem;
	letter-spacing: 0.0625rem;
	text-transform: uppercase;
}

.ts-footer__list {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	font-size: 0.9375rem;
	color: var(--ts-cream-75);
}

.ts-footer__list a:hover {
	color: var(--ts-gold);
}

.ts-footer__logo img {
	height: 3.5rem !important;
	margin-bottom: 1.5rem;
	width: auto !important;
}

.ts-footer__bottom {
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 0.5rem;
	border-top: 1px solid rgba(244, 243, 242, 0.15);
	padding-top: 1.25rem;
	font-size: 0.8125rem;
	color: rgba(244, 243, 242, 0.4);
}

/* -----------------------------------------------------------------------
   8. Hero
   -------------------------------------------------------------------- */
.ts-hero {
	position: relative;
	width: 100%;
	height: 100vh;
	min-height: 42.5rem;
	background: var(--ts-ink);
	overflow: hidden;
}

.ts-hero__bg-img,
.ts-hero__bg-video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ts-hero__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(1, 41, 45, 0.5) 0%, rgba(1, 41, 45, 0.75) 45%, rgba(1, 41, 45, 0.9) 100%);
	pointer-events: none;
}

.ts-hero__content {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 0 var(--ts-container-pad) 4.5rem;
}

.ts-hero__top {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 1.5rem;
	margin-bottom: 1.5rem;
}

.ts-hero__heading {
	font-size: 6rem;
	line-height: 1;
	color: var(--ts-cream);
	max-width: 50rem;
}

.ts-hero__heading em {
	font-style: italic;
	font-weight: 500;
	color: var(--ts-cream-65);
}

.ts-hero__badge {
	text-align: right;
	flex-shrink: 0;
	padding-left: 1.5rem;
}

.ts-hero__badge-gold {
	font-size: 0.8125rem;
	letter-spacing: 0.0625rem;
	color: var(--ts-gold);
}

.ts-hero__badge-muted {
	font-size: 0.8125rem;
	letter-spacing: 0.0625rem;
	color: var(--ts-cream-65);
	margin-top: 0.375rem;
}

.ts-hero__paragraph {
	font-size: 1.1875rem;
	line-height: 1.7;
	color: rgba(244, 243, 242, 0.8);
	max-width: 35rem;
	margin: 0 0 2rem;
}

@media (max-width: 900px) {
	.ts-hero__heading {
		font-size: 3.5rem;
		max-width: 100%;
	}

	.ts-hero__top {
		flex-direction: column;
		align-items: flex-start;
	}

	.ts-hero__badge {
		text-align: left;
		padding-left: 0;
	}
}

.ts-page-hero {
	padding: 13.75rem var(--ts-container-pad) 5rem;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 2rem;
	flex-wrap: wrap;
}

.ts-page-hero__title {
	font-size: 6rem;
	line-height: 1;
}

.ts-page-hero__title--md {
	font-size: 4rem;
	max-width: 50rem;
}

.ts-page-hero__intro,
.ts-page-hero__body {
	font-size: 1.125rem;
	line-height: 1.6;
	color: var(--ts-stone);
	max-width: 26.25rem;
	margin: 0;
}

.ts-page-hero--tight {
	padding-top: 13.75rem;
	padding-bottom: 3.75rem;
	display: block;
}

.ts-page-hero--tight .ts-page-hero__body {
	max-width: 40rem;
	color: var(--ts-body);
	font-size: 1.1875rem;
	margin-top: 1.25rem;
}

@media (max-width: 900px) {
	.ts-page-hero {
		padding-top: 9rem;
		flex-direction: column;
		align-items: flex-start;
	}

	.ts-page-hero__title,
	.ts-page-hero__title--md {
		font-size: 2.75rem;
	}

	.ts-page-hero__intro,
	.ts-page-hero__body {
		text-align: left !important;
		max-width: 100%;
	}
}

.ts-case-hero {
	position: relative;
	width: 100%;
	height: 70vh;
	min-height: 32.5rem;
	background: var(--ts-ink);
	overflow: hidden;
}

.ts-case-hero__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ts-case-hero__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(1, 41, 45, 0.25) 0%, rgba(1, 41, 45, 0.55) 60%, rgba(1, 41, 45, 0.92) 100%);
	pointer-events: none;
}

.ts-case-hero__content {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 0 var(--ts-container-pad) 3.5rem;
}

.ts-case-hero__title {
	font-size: 4rem;
	color: var(--ts-cream);
	max-width: 50rem;
	margin-bottom: 1.25rem;
}

@media (max-width: 900px) {
	.ts-case-hero__title {
		font-size: 2.5rem;
		line-height: 1.25;
        margin-bottom: 2rem;
	}
}

/* -----------------------------------------------------------------------
   9. Marquee
   -------------------------------------------------------------------- */
@keyframes ts-marquee-scroll {
	from {
		transform: translateX(0);
	}

	to {
		transform: translateX(-50%);
	}
}

.ts-marquee-section {
	padding: 3rem 0;
	border-bottom: 1px solid var(--ts-ink-15);
	overflow: hidden;
}

.ts-marquee-heading {
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.125rem;
	color: var(--ts-stone);
	text-align: center;
	margin-bottom: 1.75rem;
	text-transform: uppercase;
}

.ts-marquee {
	width: 100%;
	overflow: hidden;
}

.ts-marquee__track {
	display: flex;
	width: max-content;
	gap: 4rem;
	height: 4.5rem;
	align-items: center;
	animation: ts-marquee-scroll 90s linear infinite;
}

.ts-marquee__item {
	height: 4.5rem;
	width: 10rem;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.ts-marquee__logo {
	height: 4rem;
	width: 12.5rem;
	max-width: 100%;
	object-fit: contain;
}

.ts-bts-marquee {
	width: 100%;
	overflow: hidden;
}

.ts-bts-marquee__track {
	display: flex;
	width: max-content;
	gap: 1rem;
	animation: ts-marquee-scroll 50s linear infinite;
}

.ts-bts-marquee__item {
	width: 20rem;
	height: 17.5rem;
	flex-shrink: 0;
	overflow: hidden;
}

.ts-bts-marquee__item .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ts-marquee:hover .ts-marquee__track,
.ts-bts-marquee:hover .ts-bts-marquee__track {
	animation-play-state: paused;
}

/* -----------------------------------------------------------------------
   10. Stats / process / duo photos
   -------------------------------------------------------------------- */
.ts-intro-section__lead {
	font-size: 1.25rem;
	line-height: 1.7;
	max-width: 40rem;
	margin: 0 auto 3rem;
	text-align: center;
}

.ts-stats-row {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	margin-bottom: 3.5rem;
	gap: 1.5rem;
}

.ts-stats-row--three {
	grid-template-columns: repeat(3, 1fr);
	margin-bottom: 0;
}

.ts-stat {
	text-align: center;
}

.ts-stat--left {
	text-align: left;
}

.ts-stat__n {
	font-family: var(--ts-font-serif);
	font-weight: 600;
	font-size: 2.25rem;
	color: var(--ts-ink);
}

.ts-stat--gold .ts-stat__n {
	color: var(--ts-gold);
}

.ts-stat__l {
	font-size: 0.75rem;
	letter-spacing: 0.0625rem;
	color: var(--ts-stone);
	margin-top: 0.375rem;
	text-transform: uppercase;
}

.ts-stat--gold .ts-stat__l {
	color: rgba(244, 243, 242, 0.6);
}

@media (max-width: 700px) {

	.ts-stats-row,
	.ts-stats-row--three {
		grid-template-columns: repeat(2, 1fr);
	}
}

.ts-duo-photos {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 1.25rem;
	margin-bottom: 3.5rem;
}

.ts-duo-photos__a,
.ts-duo-photos__b {
	height: 26.25rem;
}

.ts-duo-photos__a .ts-media,
.ts-duo-photos__b .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ts-duo-photos--even {
	margin-bottom: 0;
}

@media (max-width: 700px) {
	.ts-duo-photos {
		grid-template-columns: 1fr;
	}

	.ts-duo-photos__a,
	.ts-duo-photos__b {
		height: 16rem;
	}
}

.ts-process {
	max-width: 40rem;
	margin: 0 auto;
}

.ts-process__row {
	display: flex;
	gap: 1.5rem;
	padding: 1.25rem 0;
	border-top: 1px solid var(--ts-ink-15);
	align-items: baseline;
}

.ts-process__title {
	font-family: var(--ts-font-serif);
	font-style: italic;
	font-weight: 500;
	font-size: 1.25rem;
	color: var(--ts-ink);
	width: 8.75rem;
	flex-shrink: 0;
}

.ts-process__desc {
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ts-stone);
}

@media (max-width: 600px) {
	.ts-process__row {
		flex-direction: column;
		gap: 0.5rem;
	}

	.ts-process__title {
		width: auto;
	}
}

/* -----------------------------------------------------------------------
   11. Work grid & cards
   -------------------------------------------------------------------- */
.ts-work-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 2rem;
}

.ts-work-grid--two {
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.ts-work-grid--three {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

/*
 * Projects listing: a repeating 2-col / 1-col / 2-col rhythm. Base grid is
 * two columns; every 3rd card gets .ts-work-card--full (below) to span
 * both columns, which is what creates the single wide row every third
 * item.
 */
.ts-work-grid--staggered-212 {
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.ts-work-card--full {
	grid-column: 1 / -1;
}

/*
 * Keep the full-width row's image at the same rendered height as the
 * 2-column cards beside it, rather than the same 4:3 crop scaled up to
 * double height. Source images/upload size are unchanged (still
 * 'twentyseven-card', 800x600, 4:3) -- this only widens how much of that
 * same crop shows on screen via object-fit: cover.
 */
.ts-work-card--full .ts-work-card__media {
	aspect-ratio: 8 / 3;
}

@media (max-width: 700px) {
	.ts-work-card--full .ts-work-card__media {
		aspect-ratio: 4 / 3;
	}
}

.ts-work-card.is-hidden {
	display: none;
}

/*
 * Projects listing filter tabs (Category Tag). Underline-style, matching
 * the site's minimal ink/gold/stone palette rather than a filled pill.
 */
.ts-filter-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.75rem;
	margin-bottom: 3rem;
}

.ts-filter-tabs__tab {
	appearance: none;
	background: none;
	border: none;
	border-bottom: 2px solid transparent;
	padding: 0.5rem 0;
	font-size: 0.875rem;
	letter-spacing: 0.03125rem;
	color: var(--ts-stone);
	cursor: pointer;
	transition: color var(--ts-transition), border-color var(--ts-transition);
}

.ts-filter-tabs__tab:hover {
	color: var(--ts-ink);
}

.ts-filter-tabs__tab.is-active {
	color: var(--ts-ink);
	border-bottom-color: var(--ts-gold);
	font-weight: 600;
}

@media (max-width: 900px) {
	.ts-work-grid--three {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 600px) {

	.ts-work-grid,
	.ts-work-grid--two,
	.ts-work-grid--three,
	.ts-work-grid--staggered-212 {
		grid-template-columns: 1fr;
	}
}

.ts-work-card {
	display: block;
	cursor: pointer;
}

.ts-work-card--offset {
	margin-top: 3rem;
}

@media (max-width: 600px) {
	.ts-work-card--offset {
		margin-top: 0;
	}
}

.ts-work-card__media {
	width: 100%;
	aspect-ratio: 4 / 3;
	margin-bottom: 1rem;
	overflow: hidden;
}

.ts-work-card__media .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.4s ease;
}

.ts-work-card:hover .ts-work-card__media .ts-media {
	transform: scale(1.04);
}

.ts-work-card__meta {
	display: flex;
	justify-content: space-between;
	align-items: center;
}

.ts-work-card__title {
	font-weight: 600;
	font-size: 1.0625rem;
	color: var(--ts-ink);
	margin-bottom: 0.125rem;
}

.ts-work-card__tag {
	font-size: 0.8125rem;
	color: var(--ts-stone);
}

.ts-work-card__arrow {
	font-size: 1.125rem;
	color: var(--ts-ink);
	transition: transform var(--ts-transition);
}

.ts-work-card:hover .ts-work-card__arrow {
	transform: translateX(0.25rem);
}

.ts-more-work-section {
	border-top: 1px solid var(--ts-ink-15);
	padding-top: 6.25rem;
}

/* -----------------------------------------------------------------------
   12. Services grid & rows
   -------------------------------------------------------------------- */
.ts-services-grid {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 1rem;
}

@media (max-width: 900px) {
	.ts-services-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 500px) {
	.ts-services-grid {
		grid-template-columns: 1fr;
	}
}

.ts-service-card {
	display: block;
	background: var(--ts-cream);
	color: var(--ts-ink);
	border: 1px solid var(--ts-ink-15);
	border-radius: 4px;
	padding: 1.25rem;
	cursor: pointer;
	transition: all 0.25s ease;
}

.ts-service-card:hover {
	background: var(--ts-accent, var(--ts-ink));
	border-color: var(--ts-accent, var(--ts-ink));
	color: var(--ts-ink);
	transform: translateY(-6px);
	box-shadow: 0 1rem 2rem rgba(1, 41, 45, 0.18);
}

.ts-service-card:first-child:hover,
.ts-service-card:nth-child(2):hover,
.ts-service-card:nth-child(4):hover {
	color: var(--ts-white);
}

/* .ts-service-card:nth-child(2):hover {
	color: var(--ts-white);
} */

/* .ts-service-card:nth-child(3):hover {
	background: var(--ts-gold, var(--ts-gold));
	border-color: var(--ts-gold, var(--ts-gold));
	color: var(--ts-body);
	transform: translateY(-6px);
	box-shadow: 0 1rem 2rem rgba(1, 41, 45, 0.18);
} */

/* .ts-service-card:nth-child(4):hover {
	color: var(--ts-white);
} */

/* .ts-service-card:last-child:hover {
	background: var(--ts-light-blue, var(--ts-light-blue));
	border-color: var(--ts-light-blue, var(--ts-light-blue));
	color: var(--ts-body);
	transform: translateY(-6px);
	box-shadow: 0 1rem 2rem rgba(1, 41, 45, 0.18);
} */

.ts-service-card__title {
	font-weight: 600;
	font-size: 1rem;
	margin-bottom: 0.5rem;
}

.ts-service-card__tagline {
	font-size: 0.8125rem;
	line-height: 1.5;
	opacity: 0.75;
}

.ts-service-rows {
	padding-top: 0;
}

.ts-service-row {
	display: grid;
	grid-template-columns: 3.75rem minmax(0, 1fr) minmax(0, 1fr);
	gap: 2rem;
	align-items: center;
	border-top: 1px solid var(--ts-ink-15);
	padding: 2.75rem 0;
	cursor: pointer;
}

.ts-service-row:last-child {
	border-bottom: 1px solid var(--ts-ink-15);
}

.ts-service-row__num {
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--ts-ink);
}

.ts-service-row__title {
	font-family: var(--ts-font-serif);
	font-weight: 600;
	font-size: 1.75rem;
	color: var(--ts-ink);
	margin-bottom: 0.625rem;
}

.ts-service-row__tagline {
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--ts-ink);
	margin-bottom: 0.5rem;
}

.ts-service-row__intro {
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--ts-stone);
	max-width: 26.25rem;
	margin-bottom: 1rem;
}

.ts-service-row__media {
	position: relative;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.75rem;
}

.ts-service-row__media-item {
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.ts-service-row__media-item .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (max-width: 900px) {
	.ts-service-row {
		grid-template-columns: 1fr;
		gap: 1rem;
	}

	.ts-service-row__media {
		margin-top: 1rem;
	}
}

.ts-includes-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1rem 2.5rem;
}

.ts-includes-grid__item {
	border-top: 1px solid var(--ts-ink-15);
	padding: 1rem 0;
	font-size: 1rem;
	color: var(--ts-ink);
}

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

.ts-service-cta {
	background: var(--ts-gold);
	padding: 6.25rem var(--ts-container-pad);
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 2rem;
}

.ts-service-cta__text p {
	font-size: 1rem;
	line-height: 1.7;
	color: var(--ts-ink-70);
	margin: 1rem 0 0;
}

.ts-service-cta__form {
	width: 100%;
	max-width: 28rem;
}

.ts-service-cta__form .wpcf7-submit {
	align-self: center;
}

@media (max-width: 782px) {
	.ts-service-cta {
		padding: 3.5rem var(--ts-container-pad);
	}
}

/* -----------------------------------------------------------------------
   13. Team
   -------------------------------------------------------------------- */
.ts-team-section {
	background: var(--ts-ink);
}

.ts-team-counts {
	display: flex;
	gap: 2.5rem;
	flex-shrink: 0;
	padding-left: 2.5rem;
}

@media (max-width: 700px) {
	.ts-team-counts {
		padding-left: 0;
	}
}

.ts-team-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1.5rem;
	margin-top: 2rem;
}

.ts-team-grid--full {
	gap: 1.75rem;
}

@media (max-width: 900px) {

	.ts-team-grid,
	.ts-team-grid--full {
		grid-template-columns: repeat(2, 1fr);
	}
}

.ts-team-member__photo {
	width: 100%;
	aspect-ratio: 1;
	margin-bottom: 0.875rem;
	overflow: hidden;
}

.ts-team-member__photo--portrait {
	aspect-ratio: 4 / 5;
}

.ts-team-member__photo .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ts-team-member__name {
	font-weight: 600;
	font-size: 0.9375rem;
	color: var(--ts-cream);
	margin-bottom: 0.125rem;
}

.ts-team-full-section .ts-team-member__name {
	color: var(--ts-ink);
	font-size: 1rem;
}

.ts-team-member__role {
	font-size: 0.75rem;
	color: rgba(244, 243, 242, 0.55);
}

.ts-team-full-section .ts-team-member__role {
	color: var(--ts-stone);
}

.ts-team-full-section__intro {
	font-size: 1.0625rem;
	line-height: 1.7;
	color: var(--ts-stone);
	max-width: 40rem;
	margin: 0 0 3rem;
}

/* Hover-reveal team members (homepage preview + About full grid):
   name/role stay hidden until hover/focus, and the photo pans upward
   to reveal them as an overlay. */
.ts-team-member--reveal .ts-team-member__photo {
	position: relative;
}

.ts-team-member--reveal .ts-team-member__photo .ts-media {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 114%;
	object-fit: cover;
	transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.ts-team-member--reveal:hover .ts-team-member__photo .ts-media,
.ts-team-member--reveal:focus-within .ts-team-member__photo .ts-media {
	transform: translateY(-11%);
}

.ts-team-member__info {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 2.75rem 1rem 0.875rem;
	background: linear-gradient(to top, rgba(1, 41, 45, 0.85) 0%, rgba(1, 41, 45, 0) 100%);
	opacity: 0;
	transform: translateY(0.5rem);
	transition: opacity 0.35s ease, transform 0.35s ease;
	pointer-events: none;
}

.ts-team-member--reveal:hover .ts-team-member__info,
.ts-team-member--reveal:focus-within .ts-team-member__info {
	opacity: 1;
	transform: translateY(0);
}

.ts-team-member--reveal .ts-team-member__info .ts-team-member__name,
.ts-team-member--reveal .ts-team-member__info .ts-team-member__role {
	color: var(--ts-cream);
	margin: 0;
}

.ts-team-member--reveal .ts-team-member__info .ts-team-member__role {
	color: rgba(244, 243, 242, 0.75);
	margin-top: 0.125rem;
}

@media (prefers-reduced-motion: reduce) {
	.ts-team-member--reveal .ts-team-member__photo .ts-media,
	.ts-team-member__info {
		transition: none;
	}
}

/* -----------------------------------------------------------------------
   14. Testimonials
   -------------------------------------------------------------------- */
.ts-testimonial-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 2rem;
}

@media (max-width: 900px) {
	.ts-testimonial-grid {
		grid-template-columns: 1fr;
	}
}

.ts-testimonial {
	border-top: 1px solid var(--ts-ink-15);
	padding-top: 1.5rem;
}

.ts-testimonial__stars {
	color: var(--ts-gold);
	font-size: 0.875rem;
	letter-spacing: 0.125rem;
	margin-bottom: 1rem;
}

.ts-testimonial__quote {
	font-size: 1rem;
	line-height: 1.65;
	color: var(--ts-body);
	margin: 0 0 1.25rem;
}

.ts-testimonial__name {
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--ts-ink);
}

.ts-testimonial__role {
	font-size: 0.75rem;
	color: var(--ts-stone);
}

/* Single spotlight quote on the Case Study template, below "The Results". */
.ts-case-testimonial {
	max-width: 100%;
	margin: 0 auto;
	text-align: center;
	border-top: 1px solid var(--ts-ink-15);
}

.ts-case-testimonial .ts-testimonial__quote {
	max-width: 45rem;
    margin: 0 auto 1.5rem;
	font-size: 1.25rem;
	line-height: 1.6;
	color: var(--ts-ink);
}

.ts-case-testimonial__meta {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.875rem;
}

.ts-case-testimonial__photo {
	width: 3rem;
	height: 3rem;
	border-radius: 50%;
	overflow: hidden;
	flex-shrink: 0;
}

.ts-case-testimonial__photo .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* -----------------------------------------------------------------------
   15. FAQ
   -------------------------------------------------------------------- */
.ts-faq-list__row {
	border-top: 1px solid var(--ts-ink-15);
	padding: 1.5rem 0;
	display: flex;
	justify-content: space-between;
	gap: 2.5rem;
	align-items: baseline;
}

.ts-faq-list__q {
	font-weight: 600;
	font-size: 1.0625rem;
	color: var(--ts-ink);
	max-width: 26.25rem;
}

.ts-faq-list__a {
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--ts-stone);
	max-width: 30rem;
}

@media (max-width: 700px) {
	.ts-faq-list__row {
		flex-direction: column;
		gap: 0.5rem;
	}
}

.ts-faq-accordion__item {
	border: 1px solid var(--ts-ink-15);
	padding: 0;
	margin-bottom: 1rem;
}

.ts-faq-accordion__header {
	margin: 0;
	font-family: var(--ts-font-sans), sans-serif;
}

.ts-faq-accordion__trigger {
	width: 100%;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1.25rem;
	background: transparent;
	border: none;
	padding: 1.5rem 1.75rem;
	cursor: pointer;
	font-weight: 600;
	font-size: 1.0625rem;
	color: var(--ts-ink);
	text-align: left;
}

.ts-faq-accordion__symbol {
	font-size: 1.25rem;
	color: var(--ts-ink);
	flex-shrink: 0;
}

.ts-faq-accordion__panel {
	padding: 0 1.75rem 1.5rem;
}

.ts-faq-accordion__panel p {
	font-size: 0.9375rem;
	line-height: 1.7;
	color: var(--ts-stone);
	margin: 0;
	max-width: 40rem;
}

.ts-faq-accordion__panel[hidden] {
	display: none;
}

/* -----------------------------------------------------------------------
   16. CTA band
   -------------------------------------------------------------------- */
.ts-cta-band {
	background: var(--ts-gold);
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	/* gap: 2rem; */
}

.ts-cta-band__heading {
	font-size: 2.75rem;
}

.ts-cta-band__heading em {
	font-style: italic;
	font-weight: 500;
	color: var(--ts-ink-60);
}

.ts-cta-band--centered {
	flex-direction: column;
	text-align: center;
}

.ts-cta-band--centered .ts-cta-band__heading {
	font-size: 2.75rem;
	margin-bottom: 1.5rem;
}

.ts-cta-band__paragraph {
	font-size: 1.0625rem;
	color: var(--ts-ink-70);
	max-width: 30rem;
	margin: 0 0 2.25rem;
}

@media (max-width: 700px) {
	.ts-cta-band__heading {
		font-size: 2rem;
		line-height: 1.25;
        margin-bottom: 1.25rem;
	}
}

/* -----------------------------------------------------------------------
   17. About-specific
   -------------------------------------------------------------------- */
.ts-values-list {
	padding-top: 2.5rem;
}

.ts-values-list__row {
	display: grid;
	grid-template-columns: 3.75rem 21.25rem minmax(0, 1fr);
	gap: 1.5rem;
	padding: 2rem 0;
	border-top: 1px solid var(--ts-ink-15);
	align-items: start;
}

.ts-values-list__num {
	font-size: 0.875rem;
	color: var(--ts-ink);
	font-weight: 600;
}

.ts-values-list__title {
	font-family: var(--ts-font-serif);
	font-weight: 600;
	font-size: 1.375rem;
	color: var(--ts-ink);
}

.ts-values-list__desc {
	font-size: 1rem;
	line-height: 1.7;
	color: var(--ts-stone);
}

@media (max-width: 782px) {
	.ts-values-list__row {
		grid-template-columns: 1fr;
		gap: 0.5rem;
	}
}

.ts-awards-section {
	background: var(--ts-slate-blue);
	padding: 6.25rem var(--ts-container-pad);
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
	gap: 3.75rem;
	align-items: center;
}

.ts-awards-list {
	display: flex;
	flex-direction: column;
}

.ts-awards-list__row {
	display: flex;
	justify-content: space-between;
	border-top: 1px solid var(--ts-ink-25);
	padding: 1.125rem 0;
	font-size: 1rem;
	color: var(--ts-ink);
}

.ts-awards-list__title {
	font-weight: 600;
}

.ts-awards-list__year {
	color: var(--ts-ink-60);
}

.ts-awards-section__photo {
	aspect-ratio: 4 / 5;
	overflow: hidden;
}

.ts-awards-section__photo .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (max-width: 782px) {
	.ts-awards-section {
		grid-template-columns: 1fr;
		padding: 3.5rem var(--ts-container-pad);
	}
}

.ts-clients-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1.25rem;
}

.ts-clients-grid__item {
	height: 10rem;
	border: 1px solid var(--ts-ink-12);
	padding: 0.625rem;
	display: flex;
	align-items: center;
	justify-content: center;
}

.ts-clients-grid__item .ts-media {
	max-height: 6.25rem;
	width: auto;
	object-fit: contain;
}

@media (max-width: 700px) {
	.ts-clients-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

.ts-how-we-work h3 {
	font-size: 1.75rem;
}

.ts-how-we-work p {
	color: var(--ts-stone);
	font-size: 1rem;
	line-height: 1.7;
	margin: 0;
}

/* -----------------------------------------------------------------------
   18. Contact-specific + Contact Form 7
   -------------------------------------------------------------------- */
.ts-contact-hero {
	padding-top: 12.5rem;
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	gap: 5rem;
	align-items: start;
}

@media (max-width: 900px) {
	.ts-contact-hero {
		grid-template-columns: 1fr;
		padding-top: 8rem;
		gap: 2.5rem;
	}
}

.ts-contact-hero__title {
	font-size: 3.75rem;
	line-height: 1.05;
	margin: 0 0 1.25rem;
}

.ts-contact-hero__body {
	font-size: 1.0625rem;
	line-height: 1.7;
	color: var(--ts-stone);
	max-width: 26.25rem;
	margin: 0 0 2.75rem;
}

@media (max-width: 700px) {
	.ts-contact-hero__title {
		font-size: 2.5rem;
	}
}

.ts-contact-details {
	display: flex;
	flex-direction: column;
	gap: 1.75rem;
}

.ts-contact-details__item a,
.ts-contact-details__item div {
	font-size: 1.1875rem;
	font-weight: 600;
	color: var(--ts-ink);
}

.ts-contact-details__label {
	font-size: 0.8125rem !important;
	letter-spacing: 0.0625rem;
	color: var(--ts-stone) !important;
	font-weight: 400 !important;
	margin-bottom: 0.375rem;
	text-transform: uppercase;
}

.ts-contact-form-card {
	background: var(--ts-white);
	border: 1px solid var(--ts-ink-12);
	padding: 2.75rem;
}

@media (max-width: 600px) {
	.ts-contact-form-card {
		padding: 1.5rem;
	}
}

.ts-map {
	width: 100%;
	aspect-ratio: 21 / 9;
	border: 1px solid #D1D5D5;
	overflow: hidden;
}

.ts-map .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ts-map__embed,
.ts-map__embed iframe {
	width: 100%;
	height: 100%;
	border: 0;
}

.ts-contact-faq {
	padding-top: 6.25rem;
}

.ts-contact-faq>div:first-child p {
	color: var(--ts-stone);
	font-size: 1rem;
	max-width: 22.5rem;
	margin-top: 0.5rem;
}

/* Contact Form 7 styling — matches the theme's inputs regardless of which
   CF7 template the editor authored (basic <p>/<label> layout or the
   custom `.ts-field` layout suggested in README.md). */
.wpcf7-form,
.ts-contact-form {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
}

.wpcf7-form-control-wrap,
.ts-field {
	display: block;
}

.wpcf7 label,
.ts-field-label {
	display: block;
	font-size: 0.8125rem;
	letter-spacing: 0.0625rem;
	text-transform: uppercase;
	color: var(--ts-ink);
	margin-bottom: 0.5rem;
}

.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="url"],
.wpcf7 textarea,
.wpcf7 select {
	width: 100%;
	border: 1px solid var(--ts-ink-25);
	background: var(--ts-white);
	padding: 0.875rem 1rem;
	font-size: 0.9375rem;
	font-family: var(--ts-font-sans);
	color: var(--ts-ink);
}

.wpcf7 textarea {
	min-height: 6.875rem;
	resize: vertical;
}

.wpcf7 input:focus,
.wpcf7 textarea:focus,
.wpcf7 select:focus {
	outline: 2px solid var(--ts-slate-blue);
	outline-offset: 1px;
}

.wpcf7-form-control-wrap.two-col,
.ts-field-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.25rem;
}

@media (max-width: 480px) {

	.wpcf7-form-control-wrap.two-col,
	.ts-field-row {
		grid-template-columns: 1fr;
	}
}

.wpcf7-submit,
.ts-contact-form input[type="submit"] {
	align-self: flex-start;
	background: var(--ts-ink);
	color: var(--ts-cream);
	font-weight: 600;
	font-size: 0.9375rem;
	padding: 1rem 2.125rem;
	border: none;
	cursor: pointer;
	text-transform: uppercase;
	letter-spacing: 0.03125rem;
	transition: transform var(--ts-transition), opacity var(--ts-transition);
}

.wpcf7-submit:hover,
.ts-contact-form input[type="submit"]:hover {
	transform: translateY(-2px);
	opacity: 0.85;
}

.wpcf7-not-valid-tip {
	color: #B3261E;
	font-size: 0.8125rem;
	margin-top: 0.375rem;
}

.wpcf7-response-output {
	border-radius: 0 !important;
	font-size: 0.875rem;
}

.wpcf7-spinner {
	margin-left: 0.75rem;
}

/* -----------------------------------------------------------------------
   19. Generic page / blog fallback
   -------------------------------------------------------------------- */
.ts-generic-page .ts-prose-page {
	padding-bottom: 6.25rem;
}

.ts-post-meta {
	font-size: 0.875rem;
	color: var(--ts-stone);
	margin-top: 0.75rem;
}

.ts-page-links {
	margin-top: 2rem;
	font-size: 0.9375rem;
}

.ts-post-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 2rem;
}

@media (max-width: 900px) {
	.ts-post-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

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

.ts-post-card__media {
	display: block;
	aspect-ratio: 4 / 3;
	margin-bottom: 1rem;
	overflow: hidden;
}

.ts-post-card__media .ts-media,
.ts-post-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ts-post-card__title {
	font-size: 1.25rem;
	margin: 0 0 0.5rem;
}

.ts-post-card__title a:hover {
	color: var(--ts-stone);
}

.ts-post-card__excerpt {
	font-size: 0.9375rem;
	color: var(--ts-stone);
	line-height: 1.6;
}

.ts-pagination {
	margin-top: 3rem;
	display: flex;
	gap: 1rem;
}

.ts-pagination .page-numbers {
	padding: 0.5rem 0.875rem;
	border: 1px solid var(--ts-ink-15);
}

.ts-pagination .page-numbers.current {
	background: var(--ts-ink);
	color: var(--ts-cream);
}

.ts-comments {
	margin-top: 4rem;
	padding-top: 3rem;
	border-top: 1px solid var(--ts-ink-15);
}

.ts-comment-list {
	margin-top: 1.5rem;
}

.ts-comment-list li {
	margin-bottom: 1.5rem;
}

.ts-404 {
	text-align: center;
	padding-top: 10rem;
	padding-bottom: 10rem;
}

.ts-404 p {
	color: var(--ts-stone);
	max-width: 28rem;
	margin: 1rem auto 2rem;
}

/* -----------------------------------------------------------------------
   20. Media & placeholders
   -------------------------------------------------------------------- */
.ts-media {
	display: block;
}

img.ts-media,
.ts-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ts-media--placeholder {
	width: 100%;
	height: 100%;
	min-height: 6rem;
	background: repeating-linear-gradient(45deg, var(--ts-ink-08), var(--ts-ink-08) 10px, transparent 10px, transparent 20px);
	border: 1px dashed var(--ts-ink-25);
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
}

.ts-media--placeholder span {
	font-size: 0.75rem;
	letter-spacing: 0.03125rem;
	color: var(--ts-stone);
	padding: 0.5rem;
}

.ts-wide-photo,
.ts-wide-photo-section .ts-wide-photo {
	width: 100%;
	aspect-ratio: 21 / 9;
	overflow: hidden;
}

.ts-wide-photo--spaced {
	margin-bottom: 3.5rem;
}

.ts-wide-photo .ts-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* -----------------------------------------------------------------------
   21. Misc utilities
   -------------------------------------------------------------------- */
.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	border: 0;
	word-wrap: normal !important;
}

.ts-skip-link {
	position: absolute;
	top: -3rem;
	left: 0.5rem;
	z-index: 999999;
	background: var(--ts-ink);
	color: var(--ts-cream);
	padding: 0.75rem 1.25rem;
	transition: top var(--ts-transition);
}

.ts-skip-link:focus {
	top: 0.5rem;
	width: auto;
	height: auto;
	clip: auto;
	color: var(--ts-cream);
}

/* -----------------------------------------------------------------------
   22. Motion & accessibility
   -------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	.ts-marquee__track,
	.ts-bts-marquee__track {
		animation: none;
	}

	.ts-btn,
	.ts-work-card__media .ts-media,
	.ts-work-card__arrow,
	.ts-filter-tabs__tab,
	.ts-service-card,
	.ts-mobile-menu,
	.ts-nav {
		transition: none !important;
	}
}

*:focus-visible {
	outline: 2px solid var(--ts-slate-blue);
	outline-offset: 2px;
}