/* ==========================================================================
   ONEHELVETICA — main stylesheet
   Swiss-inspired, editorial, warm minimal.
   ========================================================================== */

:root {
	--oh-ivory: #F6F3EE;
	--oh-white: #FFFFFF;
	--oh-stone: #ECE6DD;
	--oh-taupe: #D6CCBE;
	--oh-sand: #B89F7A;
	--oh-gray: #6E6A64;
	--oh-charcoal: #22211F;
	--oh-black: #111111;
	--oh-line: rgba(34, 33, 31, 0.14);
	--oh-line-light: rgba(246, 243, 238, 0.18);

	--oh-font: "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
	--oh-wrap: 1320px;
	--oh-gutter: clamp(20px, 4.2vw, 56px);
	--oh-section: clamp(72px, 9vw, 136px);
	--oh-header-h: 84px;
	--oh-ease: cubic-bezier(.2, .7, .2, 1);
}

/* Base ------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--oh-header-h) + 16px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
	margin: 0;
	background: var(--oh-ivory);
	color: var(--oh-charcoal);
	font-family: var(--oh-font);
	font-size: 1.0625rem;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	font-feature-settings: "ss01" on, "kern" on;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { color: var(--oh-black); }
:focus-visible { outline: 2px solid var(--oh-sand); outline-offset: 3px; }
::selection { background: var(--oh-taupe); color: var(--oh-black); }
p { margin: 0 0 1.1em; }
h1, h2, h3, h4, h5, h6 { margin: 0 0 .6em; font-weight: 400; line-height: 1.08; letter-spacing: -0.02em; color: var(--oh-black); }
h1 { font-size: clamp(2.75rem, 6vw, 6rem); letter-spacing: -0.035em; line-height: 1.0; }
h2 { font-size: clamp(2rem, 3.6vw, 3.5rem); letter-spacing: -0.03em; }
h3 { font-size: 1.25rem; font-weight: 500; letter-spacing: -0.01em; line-height: 1.3; }
strong { font-weight: 600; }
address { font-style: normal; }

.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 !important; width: 1px; word-wrap: normal !important;
}
.skip-link {
	position: absolute; left: 16px; top: -100px; z-index: 1000; background: var(--oh-black); color: var(--oh-ivory);
	padding: 12px 18px; font-size: .875rem; text-decoration: none;
}
.skip-link:focus { top: 16px; }
.oh-main:focus { outline: none; }

/* Utilities --------------------------------------------------------------- */
.oh-eyebrow {
	font-size: .75rem !important; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;
	color: var(--oh-gray); margin-bottom: 1.6em !important;
}
.oh-lead { font-size: clamp(1.125rem, 1.5vw, 1.375rem); line-height: 1.55; color: var(--oh-charcoal); letter-spacing: -0.005em; }
.oh-link-arrow, .oh-content .oh-link-arrow {
	display: inline-flex; align-items: center; gap: 12px; font-size: .75rem; font-weight: 500;
	letter-spacing: .16em; text-transform: uppercase; text-decoration: none; padding-bottom: 6px;
	border-bottom: 1px solid currentColor;
}
.oh-link-arrow::after { content: "→"; font-size: 1rem; letter-spacing: 0; transition: transform .3s var(--oh-ease); }
.oh-link-arrow .oh-arrow { display: none; }
.oh-link-arrow:hover::after { transform: translateX(4px); }
.oh-arrow { display: inline-block; vertical-align: middle; }

/* Buttons ----------------------------------------------------------------- */
.oh-btn,
.wp-block-button__link,
.wp-element-button {
	display: inline-flex; align-items: center; justify-content: center; gap: 12px;
	min-height: 52px; padding: 16px 30px;
	background: var(--oh-black); color: var(--oh-ivory) !important; border: 1px solid var(--oh-black); border-radius: 0;
	font-family: var(--oh-font); font-size: .75rem; font-weight: 500; letter-spacing: .16em; text-transform: uppercase;
	text-decoration: none; line-height: 1.2; cursor: pointer;
	transition: background-color .3s var(--oh-ease), color .3s var(--oh-ease), border-color .3s var(--oh-ease);
}
.wp-block-button__link::after { content: "→"; font-size: 1rem; letter-spacing: 0; transition: transform .3s var(--oh-ease); }
.wp-block-button__link:hover::after { transform: translateX(4px); }
.oh-btn:hover, .wp-block-button__link:hover { background: var(--oh-charcoal); border-color: var(--oh-charcoal); color: var(--oh-white) !important; }
.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent; color: var(--oh-black) !important; border: 1px solid var(--oh-black); padding: 16px 30px;
}
.wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--oh-black); color: var(--oh-ivory) !important; }
.oh-btn--small { min-height: 42px; padding: 10px 20px; font-size: .6875rem; }
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 2.2em; }
.wp-block-buttons > .wp-block-button { margin: 0; }

/* Header ------------------------------------------------------------------ */
.oh-header {
	position: sticky; top: 0; z-index: 100; height: var(--oh-header-h);
	background: rgba(246, 243, 238, 0.96);
	border-bottom: 1px solid transparent;
	transition: border-color .3s var(--oh-ease), background-color .3s var(--oh-ease);
}
@supports (backdrop-filter: blur(8px)) {
	.oh-header { background: rgba(246, 243, 238, 0.86); backdrop-filter: saturate(1.2) blur(12px); -webkit-backdrop-filter: saturate(1.2) blur(12px); }
}
.oh-header.is-scrolled { border-bottom-color: var(--oh-line); }
.admin-bar .oh-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .oh-header { top: 46px; } }
@media (max-width: 600px) { .admin-bar .oh-header { top: 0; } }
.oh-header__inner {
	max-width: calc(var(--oh-wrap) + 2 * var(--oh-gutter)); margin: 0 auto; height: 100%;
	padding: 0 var(--oh-gutter); display: flex; align-items: center; justify-content: space-between; gap: 32px;
}
.oh-wordmark { display: inline-flex; flex-direction: column; align-items: center; text-decoration: none; color: var(--oh-black); line-height: 1; }
.oh-wordmark__name { font-size: 1.3125rem; font-weight: 600; letter-spacing: .015em; }
.oh-wordmark__sub { font-size: .5625rem; font-weight: 500; letter-spacing: .62em; text-transform: uppercase; margin-top: 6px; padding-left: .62em; }
.custom-logo { max-height: 48px; width: auto; }

.oh-nav { display: flex; align-items: center; gap: clamp(20px, 3vw, 44px); }
.oh-nav__list { list-style: none; margin: 0; padding: 0; display: flex; gap: clamp(18px, 2.4vw, 36px); }
.oh-nav__list a {
	position: relative; font-size: .75rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase;
	text-decoration: none; padding: 8px 0; color: var(--oh-charcoal);
}
.oh-nav__list a::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 2px; height: 1px; background: currentColor;
	transform: scaleX(0); transform-origin: left; transition: transform .35s var(--oh-ease);
}
.oh-nav__list a:hover::after,
.oh-nav__list .current-menu-item > a::after,
.oh-nav__list .current_page_item > a::after { transform: scaleX(1); }
.oh-menu-toggle { display: none; }

@media (max-width: 960px) {
	:root { --oh-header-h: 70px; }
	.oh-header { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; background: var(--oh-ivory) !important; }
	.oh-menu-toggle {
		display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px;
		border: 0; background: transparent; color: var(--oh-black); cursor: pointer; position: relative; z-index: 102; margin-right: -10px;
	}
	.oh-menu-toggle__bars { position: relative; width: 24px; height: 10px; display: block; }
	.oh-menu-toggle__bars span { position: absolute; left: 0; width: 100%; height: 1.5px; background: currentColor; transition: transform .35s var(--oh-ease), top .35s var(--oh-ease); }
	.oh-menu-toggle__bars span:first-child { top: 0; }
	.oh-menu-toggle__bars span:last-child { top: 8.5px; }
	.menu-open .oh-menu-toggle__bars span:first-child { top: 4.25px; transform: rotate(45deg); }
	.menu-open .oh-menu-toggle__bars span:last-child { top: 4.25px; transform: rotate(-45deg); }

	.oh-nav {
		position: fixed; inset: 0; z-index: 101; background: var(--oh-ivory);
		flex-direction: column; align-items: flex-start; justify-content: center; gap: 40px;
		padding: calc(var(--oh-header-h) + 24px) var(--oh-gutter) 48px;
		opacity: 0; visibility: hidden; transition: opacity .35s var(--oh-ease), visibility .35s;
	}
	.menu-open .oh-nav { opacity: 1; visibility: visible; }
	.menu-open { overflow: hidden; }
	.oh-nav__list { flex-direction: column; gap: 6px; }
	.oh-nav__list a { font-size: clamp(2rem, 8vw, 3rem); font-weight: 400; letter-spacing: -0.02em; text-transform: none; }
	.oh-nav__list a::after { bottom: 6px; }
	.oh-header .oh-wordmark { position: relative; z-index: 102; }
}
@media (max-width: 960px) {
	.js .oh-nav { display: flex; }
}

/* Content scaffolding --------------------------------------------------- */
.oh-content > * { margin-top: 0; margin-bottom: 0; }
.oh-content > :not(.oh-section) {
	max-width: calc(760px + 2 * var(--oh-gutter)); margin-left: auto; margin-right: auto; padding-left: var(--oh-gutter); padding-right: var(--oh-gutter);
}
.oh-section {
	padding-top: var(--oh-section); padding-bottom: var(--oh-section);
	padding-left: max(var(--oh-gutter), calc((100% - var(--oh-wrap)) / 2));
	padding-right: max(var(--oh-gutter), calc((100% - var(--oh-wrap)) / 2));
	margin: 0 !important;
}
.oh-section > * { margin-top: 0; }
.oh-content .oh-section > * + *, .oh-section > * + * { margin-top: clamp(48px, 6vw, 88px); }
.oh-section--flush { padding-top: 0; }
.is-stone { background: var(--oh-stone); }
.is-dark { background: var(--oh-charcoal); color: var(--oh-ivory); }
.is-dark h1, .is-dark h2, .is-dark h3, .is-dark .oh-lead { color: var(--oh-ivory); }
.is-dark .oh-eyebrow { color: var(--oh-taupe); }
.is-dark a { color: var(--oh-ivory); }
.is-dark .wp-block-button__link { background: var(--oh-ivory); color: var(--oh-black) !important; border-color: var(--oh-ivory); }
.is-dark .wp-block-button__link:hover { background: transparent; color: var(--oh-ivory) !important; }

/* Neutralise default flow spacing inside our grids. */
.oh-cards > *, .oh-work > *, .oh-gallery > *, .oh-steps > *, .oh-stats > *, .oh-values > *, .oh-contact-list > * { margin-block: 0 !important; }

/* Generic columns → grid */
.oh-content .wp-block-columns { margin-bottom: 0; }
.oh-content .wp-block-column > :last-child { margin-bottom: 0; }
.oh-content .wp-block-image { margin: 0; }
.oh-content .wp-block-image img { width: 100%; height: auto; }

.oh-split {
	display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(40px, 7vw, 112px) !important; align-items: center;
}
.oh-split > .wp-block-column { flex-basis: auto !important; min-width: 0; }
.oh-split .oh-col-label { align-self: start; }
.oh-split .oh-col-label h2 { margin-bottom: 0; }
.oh-split .oh-col-body { align-self: end; }
.oh-split__media img { aspect-ratio: 4 / 5; object-fit: cover; }
.oh-split__text h2 { margin-bottom: .55em; }
@media (max-width: 860px) {
	.oh-split { grid-template-columns: 1fr; }
	.oh-split > .oh-split__media { order: -1; }
	.oh-split__media img { aspect-ratio: 4 / 3; }
}

/* Hero -------------------------------------------------------------------- */
.oh-hero { padding-top: clamp(32px, 4vw, 56px); padding-bottom: clamp(56px, 7vw, 104px); }
.oh-hero__grid {
	display: grid !important; grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
	gap: clamp(36px, 6vw, 96px) !important; align-items: end;
}
.oh-hero__grid > .wp-block-column { flex-basis: auto !important; min-width: 0; }
.oh-hero__text { padding-bottom: clamp(0px, 2vw, 24px); }
.oh-hero__title { font-size: clamp(3rem, 6.4vw, 6.5rem) !important; letter-spacing: -0.045em !important; line-height: .98 !important; margin-bottom: .45em !important; }
.oh-hero .oh-lead { max-width: 30em; color: var(--oh-gray); }
.oh-hero__media img { aspect-ratio: 5 / 6; object-fit: cover; max-height: calc(100vh - var(--oh-header-h) - 64px); min-height: 420px; }
.oh-hero__index {
	margin-top: clamp(40px, 6vw, 88px) !important; font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; color: var(--oh-gray);
	display: flex; flex-wrap: wrap; gap: 6px 18px;
}
.oh-hero__index span { color: var(--oh-black); font-weight: 500; margin-right: -10px; }
.oh-hero__index span::after { content: ""; display: inline-block; width: 28px; height: 1px; background: var(--oh-line); vertical-align: middle; margin: 0 10px; }
@media (max-width: 860px) {
	.oh-hero__grid { grid-template-columns: 1fr; }
	.oh-hero__media { order: -1; }
	.oh-hero__media img { aspect-ratio: 4 / 3.4; min-height: 0; max-height: none; }
	.oh-hero__index { display: none; }
}

/* Section heads ------------------------------------------------------------ */
.oh-section-head {
	display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 12px 48px;
	border-bottom: 1px solid var(--oh-line); padding-bottom: 28px;
}
.oh-section-head > * { margin: 0 !important; }
.oh-section-head .oh-eyebrow { grid-column: 1 / -1; margin-bottom: 4px !important; }
.oh-section-head h2 { max-width: 16em; }
.is-dark .oh-section-head { border-color: var(--oh-line-light); }
@media (max-width: 700px) { .oh-section-head { grid-template-columns: 1fr; } }

.oh-section-head + .oh-steps, .oh-section-head + .oh-values { border-top: 0; margin-top: 0 !important; }

/* Stats ------------------------------------------------------------------- */
.oh-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--oh-line); }
.oh-stat { padding: 32px 24px 8px 0; }
.oh-stat + .oh-stat { padding-left: clamp(16px, 3vw, 40px); border-left: 1px solid var(--oh-line); }
.oh-stat__num { font-size: clamp(2.5rem, 4.4vw, 4rem) !important; font-weight: 300; letter-spacing: -0.04em; line-height: 1; margin: 0 0 14px !important; color: var(--oh-black); font-variant-numeric: tabular-nums; }
.oh-stat__label { font-size: .75rem !important; letter-spacing: .14em; text-transform: uppercase; color: var(--oh-gray); margin: 0 !important; }
@media (max-width: 700px) {
	.oh-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.oh-stat:nth-child(3) { border-left: 0; padding-left: 0; }
	.oh-stat:nth-child(n+3) { border-top: 1px solid var(--oh-line); }
}

/* Service cards ------------------------------------------------------------ */
.oh-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 56px 28px; }
.oh-card { position: relative; }
.oh-card .wp-block-image { overflow: hidden; margin-bottom: 22px !important; }
.oh-card .wp-block-image img { aspect-ratio: 4 / 3.2; object-fit: cover; transition: transform 1.1s var(--oh-ease); }
.oh-card:hover .wp-block-image img { transform: scale(1.035); }
.oh-card__num { font-size: .6875rem !important; letter-spacing: .16em; color: var(--oh-gray); margin: 0 0 8px !important; }
.oh-card__title { font-size: 1.0625rem !important; margin: 0 0 8px !important; }
.oh-card__text { font-size: .9375rem; color: var(--oh-gray); margin: 0 !important; line-height: 1.55; }
@media (max-width: 1100px) { .oh-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .oh-cards { grid-template-columns: 1fr; gap: 44px; } }

.oh-card--cta { background: var(--oh-charcoal); color: var(--oh-ivory); padding: 32px 28px; display: flex; flex-direction: column; justify-content: flex-end; min-height: 100%; }
.oh-card--cta .oh-card__title { font-size: 1.375rem !important; color: var(--oh-ivory); letter-spacing: -0.02em; line-height: 1.2; margin-bottom: 12px !important; }
.oh-card--cta .oh-card__text { color: rgba(246, 243, 238, .7); margin-bottom: 28px !important; }
.oh-card--cta .oh-link-arrow { color: var(--oh-ivory); }
.oh-card--cta p:last-child { margin: 0; }
@media (max-width: 560px) { .oh-card--cta { min-height: 240px; } }

/* Featured work (home) ----------------------------------------------------- */
.oh-work { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); }
.oh-work__item { overflow: hidden; display: flex; flex-direction: column; }
.oh-work__item a { display: block; overflow: hidden; flex: 1; }
.oh-work__item img { width: 100%; height: 100% !important; object-fit: cover; transition: transform 1.2s var(--oh-ease); }
.oh-work__item:hover img { transform: scale(1.03); }
.oh-work__item figcaption { margin: 14px 0 0; font-size: .8125rem; letter-spacing: .02em; text-align: left; color: var(--oh-charcoal); }
.oh-work__item:nth-child(1) { grid-column: 1 / span 7; grid-row: span 2; }
.oh-work__item:nth-child(1) img { min-height: 520px; }
.oh-work__item:nth-child(2) { grid-column: 8 / span 5; }
.oh-work__item:nth-child(3) { grid-column: 8 / span 5; }
.oh-work__item:nth-child(2) img, .oh-work__item:nth-child(3) img { aspect-ratio: 16 / 10; }
.oh-work__item:nth-child(4) { grid-column: 1 / span 5; }
.oh-work__item:nth-child(5) { grid-column: 6 / span 7; }
.oh-work__item:nth-child(4) img, .oh-work__item:nth-child(5) img { aspect-ratio: 16 / 10; }
.oh-work__item:nth-child(4) img { aspect-ratio: 5 / 4.4; }
@media (max-width: 860px) {
	.oh-work { grid-template-columns: 1fr 1fr; }
	.oh-work__item:nth-child(n) { grid-column: auto; grid-row: auto; }
	.oh-work__item:nth-child(1) { grid-column: 1 / -1; }
	.oh-work__item:nth-child(1) img { min-height: 0; aspect-ratio: 4 / 3; }
	.oh-work__item:nth-child(n+2) img { aspect-ratio: 1 / 1; }
}
@media (max-width: 520px) {
	.oh-work { grid-template-columns: 1fr; }
	.oh-work__item:nth-child(n+2) img { aspect-ratio: 4 / 3; }
}

/* Philosophy (dark) -------------------------------------------------------- */
.oh-philosophy { display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(40px, 7vw, 112px) !important; align-items: center; }
.oh-philosophy > .wp-block-column { flex-basis: auto !important; min-width: 0; }
.oh-philosophy__media img { aspect-ratio: 4 / 5; object-fit: cover; }
.oh-principles { list-style: none; padding: 0; margin: 2em 0 0; border-top: 1px solid var(--oh-line-light); }
.oh-principles li { padding: 16px 0; border-bottom: 1px solid var(--oh-line-light); color: rgba(246, 243, 238, .78); font-size: .9875rem; }
.oh-principles li strong { color: var(--oh-ivory); font-weight: 500; display: inline-block; min-width: 7.5em; }
@media (max-width: 860px) {
	.oh-philosophy { grid-template-columns: 1fr; }
	.oh-philosophy__media img { aspect-ratio: 4 / 3; }
}

/* Process steps ------------------------------------------------------------ */
.oh-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--oh-line); }
.oh-step { padding: 32px clamp(16px, 2.4vw, 36px) 8px 0; }
.oh-step + .oh-step { padding-left: clamp(16px, 2.4vw, 36px); border-left: 1px solid var(--oh-line); }
.oh-step__num { font-size: .75rem !important; letter-spacing: .16em; color: var(--oh-sand); font-weight: 500; margin: 0 0 40px !important; }
.oh-step__num--large { font-size: clamp(3.5rem, 7vw, 6rem) !important; letter-spacing: -0.05em; font-weight: 300; color: var(--oh-sand); line-height: 1; margin-bottom: 24px !important; }
.oh-step__title { font-size: 1.25rem !important; margin: 0 0 12px !important; }
.oh-step__text { font-size: .9375rem; color: var(--oh-gray); margin: 0 !important; line-height: 1.6; }
@media (max-width: 960px) {
	.oh-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.oh-step:nth-child(3) { border-left: 0; padding-left: 0; }
	.oh-step:nth-child(n+3) { border-top: 1px solid var(--oh-line); }
	.oh-step__num { margin-bottom: 20px !important; }
}
@media (max-width: 560px) {
	.oh-steps { grid-template-columns: 1fr; }
	.oh-step:nth-child(n) { border-left: 0; padding-left: 0; }
	.oh-step + .oh-step { border-top: 1px solid var(--oh-line); }
}

/* Values (about) ----------------------------------------------------------- */
.oh-values { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--oh-line); }
.oh-value { padding: 32px clamp(16px, 2.4vw, 36px) 40px 0; border-bottom: 1px solid var(--oh-line); }
.oh-value:not(:nth-child(3n+1)) { padding-left: clamp(16px, 2.4vw, 36px); border-left: 1px solid var(--oh-line); }
.oh-value .oh-step__num { margin-bottom: 28px !important; }
.oh-value__title { font-size: 1.1875rem !important; margin-bottom: 10px !important; }
.oh-value p:last-child { color: var(--oh-gray); font-size: .9375rem; margin: 0; }
@media (max-width: 860px) {
	.oh-values { grid-template-columns: 1fr; }
	.oh-value:nth-child(n) { padding-left: 0; border-left: 0; }
}

/* CTA ----------------------------------------------------------------------- */
.oh-cta { text-align: left; }
.oh-cta > * + * { margin-top: 0 !important; }
.oh-cta__title { font-size: clamp(2.5rem, 5.4vw, 5.25rem) !important; letter-spacing: -0.04em !important; max-width: 13em; margin-bottom: .4em !important; }
.oh-cta__text { max-width: 36em; color: rgba(246, 243, 238, .72); font-size: 1.0625rem; }
.oh-cta .wp-block-buttons { margin-top: 2em; }

/* Services page ------------------------------------------------------------- */
.oh-service-index {
	list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	border-top: 1px solid var(--oh-line);
}
.oh-service-index li { border-bottom: 1px solid var(--oh-line); }
.oh-service-index a { display: block; padding: 18px 24px 18px 0; text-decoration: none; font-size: .9375rem; transition: color .3s, padding .3s var(--oh-ease); }
.oh-service-index a:hover { padding-left: 8px; color: var(--oh-sand); }
.oh-service__title { font-size: clamp(1.875rem, 3vw, 2.75rem) !important; }
.oh-mini-heading { font-size: .75rem !important; font-weight: 500 !important; letter-spacing: .16em !important; text-transform: uppercase; color: var(--oh-gray); margin: 2.2em 0 1em !important; }
.oh-checklist { list-style: none; padding: 0; margin: 0 0 1em; }
.oh-checklist li { position: relative; padding: 10px 0 10px 28px; border-bottom: 1px solid var(--oh-line); font-size: .9875rem; }
.oh-checklist li::before { content: ""; position: absolute; left: 0; top: 20px; width: 12px; height: 1px; background: var(--oh-sand); }
.oh-service .oh-split__media img { aspect-ratio: 4 / 4.6; }

/* Portfolio gallery ------------------------------------------------------- */
.oh-gallery { columns: 3 320px; column-gap: clamp(16px, 2vw, 28px); }
.oh-gallery__item { break-inside: avoid; margin: 0 0 clamp(28px, 3vw, 44px) !important; display: block; }
.oh-gallery__item img { width: 100%; cursor: zoom-in; }
.oh-gallery__item figcaption { margin: 14px 0 0; font-size: .875rem; color: var(--oh-gray); line-height: 1.55; text-align: left; }
.oh-gallery__item figcaption strong { display: block; color: var(--oh-black); font-weight: 500; font-size: 1rem; margin-bottom: 2px; }

/* Contact -------------------------------------------------------------------- */
.oh-contact { display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(40px, 7vw, 112px) !important; align-items: start; }
.oh-contact > .wp-block-column { flex-basis: auto !important; min-width: 0; }
.oh-contact-list { margin: 2.4em 0; border-top: 1px solid var(--oh-line); }
.oh-contact-list p { padding: 16px 0; border-bottom: 1px solid var(--oh-line); margin: 0 !important; display: grid; grid-template-columns: 8.5em 1fr; gap: 16px; font-size: .9875rem; }
.oh-contact-list__label { font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; color: var(--oh-gray); padding-top: 4px; }
.oh-contact__img img { aspect-ratio: 16 / 10; object-fit: cover; }
.oh-contact__form { background: var(--oh-white); padding: clamp(28px, 4vw, 56px); }
.oh-form-title { font-size: 1.5rem !important; margin-bottom: 1.2em !important; }
@media (max-width: 960px) {
	.oh-contact { grid-template-columns: 1fr; }
	.oh-contact__img { display: none; }
}
@media (max-width: 480px) { .oh-contact-list p { grid-template-columns: 1fr; gap: 2px; } }

/* Form ------------------------------------------------------------------------- */
.oh-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px; }
.oh-field { margin: 0 0 22px; display: flex; flex-direction: column; }
.oh-field--full { grid-column: 1 / -1; }
.oh-field label { font-size: .6875rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--oh-gray); margin-bottom: 8px; }
.req { color: var(--oh-sand); }
.oh-form input[type="text"], .oh-form input[type="email"], .oh-form input[type="tel"], .oh-form select, .oh-form textarea {
	width: 100%; font: inherit; font-size: 1rem; color: var(--oh-black); background: transparent;
	border: 0; border-bottom: 1px solid rgba(34, 33, 31, .3); border-radius: 0; padding: 10px 0 12px;
	transition: border-color .3s; -webkit-appearance: none; appearance: none;
}
.oh-form select {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2322211F' stroke-width='1.2'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 2px center; padding-right: 24px; cursor: pointer;
}
.oh-form textarea { resize: vertical; min-height: 140px; line-height: 1.55; }
.oh-form input::placeholder, .oh-form textarea::placeholder { color: #9A948C; }
.oh-form input:focus, .oh-form select:focus, .oh-form textarea:focus { outline: none; border-bottom-color: var(--oh-black); }
.oh-form.was-validated :invalid { border-bottom-color: #9B3B2C; }
.oh-consent { font-size: .875rem; color: var(--oh-gray); margin: 4px 0 26px; }
.oh-consent label { display: flex; gap: 12px; align-items: flex-start; cursor: pointer; }
.oh-consent input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--oh-black); flex: none; }
.oh-form.was-validated .oh-consent input:invalid + span { color: #9B3B2C; }
.oh-form__submit { margin: 0; }
.oh-form__submit .oh-btn { width: 100%; }
.oh-btn.is-busy { opacity: .6; cursor: progress; }
.oh-form__note { font-size: .75rem; color: var(--oh-gray); margin: 14px 0 0; }
.oh-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.oh-form-notice { padding: 22px 24px; margin-bottom: 28px; border-left: 2px solid var(--oh-sand); background: var(--oh-ivory); font-size: .9375rem; }
.oh-form-notice:focus { outline: none; }
.oh-form-notice p:last-child { margin: 0; }
.oh-form-notice__title { font-size: 1.25rem; color: var(--oh-black); margin-bottom: .5em !important; }
.oh-form-notice.is-error { border-left-color: #9B3B2C; }
@media (max-width: 600px) { .oh-form__grid { grid-template-columns: 1fr; } }

/* Inner page hero --------------------------------------------------------- */
.oh-page-hero {
	position: relative; overflow: hidden; display: flex; align-items: flex-end;
	min-height: clamp(260px, 32vw, 420px);
	padding: clamp(56px, 7vw, 96px) max(var(--oh-gutter), calc((100% - var(--oh-wrap)) / 2)) clamp(40px, 5vw, 72px);
	border-bottom: 1px solid var(--oh-line);
}
.oh-page-hero__inner { position: relative; z-index: 2; max-width: 52rem; }
.oh-page-hero__title { font-size: clamp(2.75rem, 6.2vw, 5.75rem); letter-spacing: -0.045em; margin: 0 0 .25em; }
.oh-page-hero__lead { font-size: clamp(1.0625rem, 1.4vw, 1.25rem); max-width: 34em; margin: 0; color: var(--oh-gray); }
.oh-page-hero.has-image { min-height: clamp(340px, 44vw, 560px); color: var(--oh-ivory); border-bottom: 0; background: var(--oh-charcoal); }
.oh-page-hero__img { position: absolute; inset: 0; width: 100%; height: 100% !important; object-fit: cover; z-index: 0; }
.oh-page-hero.has-image::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(17, 17, 17, .66) 0%, rgba(17, 17, 17, .32) 55%, rgba(17, 17, 17, .12) 100%); }
.oh-page-hero.has-image .oh-page-hero__title { color: var(--oh-ivory); }
.oh-page-hero.has-image .oh-page-hero__lead { color: rgba(246, 243, 238, .86); }

/* Prose (legal / posts) ---------------------------------------------------- */
.oh-prose { max-width: none; }
.oh-section.oh-prose { padding-left: max(var(--oh-gutter), calc((100% - 760px) / 2)); padding-right: max(var(--oh-gutter), calc((100% - 760px) / 2)); }
.oh-prose > * + * { margin-top: 0 !important; }
.oh-prose h2 { font-size: 1.5rem; font-weight: 500; letter-spacing: -0.01em; margin: 2.2em 0 .7em !important; }
.oh-prose p, .oh-prose li { color: #3D3A36; }
.oh-prose ul { padding-left: 1.2em; margin: 0 0 1.2em; }
.oh-prose li { margin-bottom: .4em; }

/* Posts / archives / 404 ------------------------------------------------- */
.oh-archive { padding: var(--oh-section) max(var(--oh-gutter), calc((100% - var(--oh-wrap)) / 2)); }
.oh-post-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 56px 32px; }
.oh-post-card__media img { aspect-ratio: 4 / 3; object-fit: cover; margin-bottom: 20px; }
.oh-post-card__title { font-size: 1.375rem; }
.oh-post-card__title a { text-decoration: none; }
.oh-post-image { margin: 0 auto; max-width: calc(var(--oh-wrap) + 2 * var(--oh-gutter)); padding: var(--oh-gutter) var(--oh-gutter) 0; }
.oh-entry--post .oh-content { padding-top: 56px; padding-bottom: var(--oh-section); }
.oh-entry--post .oh-content > * + * { margin-top: 1.2em; }
.oh-post-nav { display: flex; justify-content: space-between; gap: 24px; max-width: calc(760px + 2 * var(--oh-gutter)); margin: 0 auto var(--oh-section); padding: 0 var(--oh-gutter); }
.nav-links { display: flex; gap: 12px; margin-top: 56px; }
.page-numbers { padding: 8px 14px; border: 1px solid var(--oh-line); text-decoration: none; }
.page-numbers.current { background: var(--oh-black); color: var(--oh-ivory); }
.oh-404 { min-height: 64vh; padding: var(--oh-section) max(var(--oh-gutter), calc((100% - var(--oh-wrap)) / 2)); }
.oh-404__title { font-size: clamp(2.75rem, 6vw, 5.5rem); letter-spacing: -0.045em; max-width: 12em; }
.oh-404__lead { max-width: 34em; color: var(--oh-gray); font-size: 1.125rem; }
.oh-404__links { list-style: none; padding: 0; margin: 48px 0 0; display: flex; flex-wrap: wrap; gap: 12px 32px; }
.oh-404__links a { font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 6px; }

/* Footer ---------------------------------------------------------------------- */
.oh-footer { background: var(--oh-stone); color: var(--oh-charcoal); font-size: .9375rem; }
.oh-footer__inner {
	max-width: calc(var(--oh-wrap) + 2 * var(--oh-gutter)); margin: 0 auto; padding: clamp(64px, 8vw, 104px) var(--oh-gutter) 56px;
	display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.1fr; gap: 48px;
}
.oh-footer .oh-wordmark { align-items: flex-start; }
.oh-footer .oh-wordmark__sub { padding-left: 0; }
.oh-footer__tagline { margin-top: 24px; max-width: 22em; color: var(--oh-gray); }
.oh-footer__heading { font-size: .6875rem; font-weight: 500; letter-spacing: .16em; text-transform: uppercase; color: var(--oh-gray); margin: 0 0 20px; }
.oh-footer__address { line-height: 1.7; margin-bottom: 12px; }
.oh-footer__address strong { font-weight: 500; }
.oh-footer a { text-decoration: none; }
.oh-footer a:hover { text-decoration: underline; }
.oh-footer__menu, .oh-footer__legal { list-style: none; margin: 0; padding: 0; }
.oh-footer__menu li { margin-bottom: 8px; }
.oh-footer__cta p { color: var(--oh-gray); }
.oh-footer__cta .oh-link-arrow:hover { text-decoration: none; }
.oh-footer__bottom {
	max-width: calc(var(--oh-wrap) + 2 * var(--oh-gutter)); margin: 0 auto; padding: 24px var(--oh-gutter) 32px;
	display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 32px; font-size: .8125rem; color: var(--oh-gray);
	border-top: 1px solid var(--oh-line);
}
.oh-footer__bottom p { margin: 0; }
.oh-footer__legal { display: flex; gap: 24px; }
@media (max-width: 960px) { .oh-footer__inner { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .oh-footer__inner { grid-template-columns: 1fr; gap: 40px; } }

/* Reveal motion ------------------------------------------------------------ */
.js .oh-reveal { opacity: 0; transform: translateY(24px); transition: opacity 1s var(--oh-ease), transform 1s var(--oh-ease); }
.js .oh-reveal.is-visible { opacity: 1; transform: none; }

/* Lightbox tweaks (core) -------------------------------------------------- */
.wp-lightbox-overlay .scrim { background-color: rgba(246, 243, 238, .96) !important; }

/* Editor niceties ------------------------------------------------------- */
.editor-styles-wrapper .oh-section { padding-left: 32px; padding-right: 32px; }
.editor-styles-wrapper .oh-reveal { opacity: 1; transform: none; }

/* Print ---------------------------------------------------------------------- */
@media print {
	.oh-header, .oh-footer, .oh-cta, .wp-block-buttons { display: none !important; }
	body { background: #fff; }
}
