:root {
	--sd-content: 760px;
	--sd-wide: min(80vw, 1560px);
	--sd-radius: 4px;
	--sd-shadow: 0 16px 45px rgba(0, 0, 0, .12);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
	overflow-x: clip;
	background: var(--sd-color-background, var(--wp--preset--color--background));
	color: var(--sd-color-text, var(--wp--preset--color--text));
}
img { max-width: 100%; height: auto; }

.sd-site-header {
	position: relative;
	z-index: 50;
	padding-block: .9rem;
	border-bottom: 1px solid var(--sd-color-border, rgba(0,0,0,.1));
	background: var(--sd-color-surface, var(--wp--preset--color--surface));
}
.sd-site-header__inner { gap: 1.25rem; }
.sd-site-brand { display: inline-flex; align-items: center; text-decoration: none; color: inherit; min-width: 0; }
.sd-site-brand__logos { display: inline-flex; align-items: center; }
.sd-site-brand__logo { display: block; width: auto; max-height: 58px; }
.sd-site-brand__logo--mobile { display: none; }
.sd-site-brand__text { display: grid; gap: .1rem; }
.sd-site-brand__title { font-family: var(--wp--preset--font-family--display); font-size: 1.3rem; line-height: 1; }
.sd-site-brand__tagline { font-size: .76rem; opacity: .7; }
.sd-header-cta .wp-element-button { white-space: nowrap; }

.sd-main { min-height: 60vh; }
.sd-section { padding-block: clamp(3rem, 7vw, 6rem); }
.sd-section--tight { padding-block: clamp(2rem, 4vw, 3.5rem); }
.is-style-sd-card,
.is-style-sd-soft-panel,
.is-style-sd-dark-panel { padding: clamp(1.25rem, 3vw, 2rem); border-radius: var(--sd-radius); box-shadow: var(--sd-shadow); }
.is-style-sd-card { background: var(--sd-color-surface, var(--wp--preset--color--surface)); }
.is-style-sd-soft-panel { background: color-mix(in srgb, var(--sd-color-background-alt, var(--wp--preset--color--accent-soft)) 45%, var(--sd-color-surface, var(--wp--preset--color--surface))); }
.is-style-sd-dark-panel { background: var(--sd-color-surface-alt, var(--wp--preset--color--dark)); color: var(--sd-color-surface-alt-text, var(--wp--preset--color--surface)); }
.is-style-sd-dark-panel :where(h1,h2,h3,h4,a) { color: inherit; }
.is-style-sd-framed-image img { border: 1px solid rgba(0,0,0,.15); box-shadow: var(--sd-shadow); }

.sd-page-shell,
.sd-single-shell { padding-block: clamp(3rem, 7vw, 6rem); }
.sd-page-shell > .wp-block-post-content,
.sd-single-shell > .wp-block-post-content { width: 100%; max-width: none; }
.sd-page-shell > .wp-block-post-content > :where(:not(.alignwide):not(.alignfull)),
.sd-single-shell > .wp-block-post-content > :where(:not(.alignwide):not(.alignfull)) { max-width: var(--sd-content); margin-left: auto; margin-right: auto; }
.sd-page-shell > .wp-block-post-content > .alignwide,
.sd-single-shell > .wp-block-post-content > .alignwide { width: min(100%, var(--sd-wide)); max-width: var(--sd-wide); margin-left: auto; margin-right: auto; }
.sd-page-shell > .wp-block-post-content > .alignfull,
.sd-single-shell > .wp-block-post-content > .alignfull { width: 100%; max-width: none; }
.sd-entry-header { margin-bottom: clamp(2rem, 5vw, 4rem); }
.sd-entry-meta { font-family: var(--wp--preset--font-family--mono); font-size: .8rem; opacity: .72; }
.sd-post-navigation { margin-block: 3rem; padding-block: 1.25rem; border-block: 1px solid var(--sd-color-border, rgba(0,0,0,.12)); }

.sd-portfolio-grid .wp-block-post-template {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(1.25rem, 2.5vw, 2.25rem);
}
.sd-portfolio-card { height: 100%; overflow: hidden; }
.sd-portfolio-card .wp-block-post-featured-image img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }
.sd-portfolio-card__body { padding: 1.15rem; }

.sd-site-footer { margin-top: 0; padding-block: 3rem 1.25rem; background: var(--sd-color-surface-alt, var(--wp--preset--color--dark)); color: var(--sd-color-surface-alt-text, var(--wp--preset--color--surface)); }
.sd-site-footer :where(h1,h2,h3,a) { color: inherit; }
.sd-footer-credit { font-size: .83rem; opacity: .78; }
.sd-footer-credit__line { display: flex; flex-wrap: wrap; gap: .35rem .75rem; align-items: center; }




/* V0.3.2 site-wide palette link standard. Component styles consume these tokens rather than inventing hover colors. */
a:not(.wp-element-button){color:var(--sd-color-link);text-decoration-color:var(--sd-color-link-decoration);text-underline-offset:.18em;transition:color .18s ease,text-decoration-color .18s ease}
a:not(.wp-element-button):hover{color:var(--sd-color-link-hover);text-decoration-color:currentColor}
a:not(.wp-element-button):focus-visible{color:var(--sd-color-link-focus);text-decoration-color:currentColor}

:where(a, button, input, select, textarea):focus-visible {
	outline: 3px solid var(--sd-color-focus, currentColor);
	outline-offset: 3px;
}

/* Optional shared interior-page banner. */
.sd-has-interior-banner .sd-page-shell { padding-top: 0; }
.sd-interior-banner {
	position: relative;
	width: 100vw;
	max-width: none !important;
	margin-left: calc(50% - 50vw) !important;
	margin-bottom: clamp(2rem, 5vw, 4rem);
	overflow: hidden;
	background: var(--sd-color-surface-alt, #111);
	border-bottom: 1px solid var(--sd-color-border, rgba(0,0,0,.15));
}
.sd-interior-banner__picture,
.sd-interior-banner__image {
	display: block;
	width: 100%;
}
.sd-interior-banner--fit .sd-interior-banner__image {
	height: auto;
	object-fit: contain;
}
.sd-interior-banner--fill .sd-interior-banner__image {
	height: clamp(180px, 28vw, 360px);
	object-fit: cover;
}
.sd-interior-banner__title-wrap {
	position: absolute;
	inset: 0;
	display: grid;
	align-items: end;
	padding: clamp(1.25rem, 4vw, 3.5rem) max(clamp(1rem, 4vw, 3rem), calc((100vw - var(--sd-wide)) / 2));
	background: linear-gradient(180deg, transparent 30%, color-mix(in srgb, var(--sd-color-overlay, #000) 72%, transparent));
}
.sd-interior-banner__title {
	max-width: var(--sd-wide);
	margin: 0;
	color: var(--sd-color-overlay-text, #fff);
	text-shadow: 0 2px 18px rgba(0,0,0,.48);
}
.sd-interior-banner-title-overlay .sd-page-shell > .sd-entry-header { display: none; }
.sd-has-interior-banner:not(.sd-interior-banner-title-overlay) .sd-entry-header { margin-top: 0; }

@media (max-width: 960px) {
	.sd-portfolio-grid .wp-block-post-template { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sd-header-cta { display: none; }
}
@media (max-width: 700px) {
	body { --wp--style--root--padding-left: 1rem; --wp--style--root--padding-right: 1rem; }
	.sd-site-header { padding-block: .65rem; }
	.sd-site-brand__logo { max-height: 44px; }
	.sd-site-brand__logo--desktop.has-mobile-alternative { display: none; }
	.sd-site-brand__logo--mobile { display: block; }
	.sd-site-brand__tagline { display: none; }
	.sd-site-header .wp-block-navigation__responsive-container.is-menu-open { padding: 1.5rem; }
	.sd-portfolio-grid .wp-block-post-template { grid-template-columns: 1fr; }
}
