@charset "UTF-8";/* blockwright edit v2025-10-28-01 */
@layer theme-base {
	:root {
		/* breakpoints & rails are aliases; values defined in settings.custom */
		--bp-sm: var(--wp--custom--layout--breakpoints--sm);
		--bp-md: var(--wp--custom--layout--breakpoints--md);
		--bp-lg: var(--wp--custom--layout--breakpoints--lg);
		--bp-xl: var(--wp--custom--layout--breakpoints--xl);

		--rail-content-md: var(--wp--custom--layout--rail--content-md);
		--rail-content-lg: var(--wp--custom--layout--rail--content-lg);
		--rail-wide-md: var(--wp--custom--layout--rail--wide-md);
		--rail-wide-lg: var(--wp--custom--layout--rail--wide-lg);
	}

	/* Site chrome: neutralize any legacy inset shadows (borders now in template parts) */
	.wp-site-blocks > header,
	.wp-site-blocks > footer {
		box-shadow: none !important;
	}
}

/* === Header/Footer edge-to-edge override ===
   WordPress Core applies `margin-left: auto !important; margin-right: auto !important`
   to children of .is-layout-constrained that aren't .alignfull/.alignleft/.alignright.

   This override ensures alignfull outer groups in headers/footers stay edge-to-edge:
   - header-full/footer-full: use layout:default → is-layout-flow
   - header-wide/footer-wide: use layout:constrained → is-layout-constrained

   Both need the override because the page's own constrained layout applies margins.
*/
.wp-site-blocks > header > .wp-block-group.alignfull.is-layout-flow,
.wp-site-blocks > footer > .wp-block-group.alignfull.is-layout-flow,
.wp-site-blocks > header > .wp-block-group.alignfull.is-layout-constrained,
.wp-site-blocks > footer > .wp-block-group.alignfull.is-layout-constrained {
	margin-left: 0 !important;
	margin-right: 0 !important;
	margin-inline-start: 0 !important;
	margin-inline-end: 0 !important;
	max-width: none !important;
}

/* Inner alignfull children of full-width headers/footers also need the override */
.wp-site-blocks
	> header
	> .wp-block-group.alignfull.is-layout-flow
	.wp-block-group.alignfull,
.wp-site-blocks
	> footer
	> .wp-block-group.alignfull.is-layout-flow
	.wp-block-group.alignfull {
	margin-left: 0 !important;
	margin-right: 0 !important;
	margin-inline-start: 0 !important;
	margin-inline-end: 0 !important;
	max-width: none !important;
}

/* === Header layout row (token-driven) ===
   Forces left brand / right nav while neutralizing saved center alignment.
   Scoped narrowly to the header structure Gutenberg emits.
*/
/* Inner flex row: horizontal layout with space-between.
   Width follows the row's own alignment — alignwide rows constrain to
   wideSize (default header), alignfull rows stay edge-to-edge (header-full).
   We no longer force max-inline-size, so WP's native alignment governs it. */
.wp-site-blocks
	> header
	> .wp-block-group.alignfull.is-layout-constrained
	> .wp-block-group.is-layout-flex,
.wp-site-blocks
	> header
	> .wp-block-group.alignfull
	> .wp-block-group.is-layout-flex {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--style--block-gap, 1rem);
	flex-wrap: nowrap;
	min-height: var(
		--wp--custom--nav--bar-height,
		calc(var(--wp--custom--button--py, 0.75rem) * 2 + 1rem)
	);
	text-align: start;
}

/* alignwide header rows: constrain to wideSize, centered (WP's constrained
   layout does this, but restate it so it wins against the flex-row rule). */
.wp-site-blocks
	> header
	> .wp-block-group.alignfull.is-layout-constrained
	> .wp-block-group.alignwide.is-layout-flex {
	max-inline-size: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.wp-site-blocks
	> header
	> .wp-block-group.alignfull.is-layout-constrained
	> .wp-block-group.is-layout-flex
	> .wp-block-group,
.wp-site-blocks
	> header
	> .wp-block-group.alignfull
	> .wp-block-group.is-layout-flex
	> .wp-block-group {
	flex: 0 0 auto;
}

.wp-site-blocks
	> header
	.wp-block-navigation
	.wp-block-navigation-item
	.wp-block-navigation-item__content,
.wp-site-blocks > header .wp-block-navigation .wp-block-navigation-link {
	padding-inline: var(--wp--custom--nav--link--pad-inline, 0.75rem);
	padding-block: var(--wp--custom--nav--link--pad-block, 0.125rem);
	/* border-radius comes from assets/blocks/navigation.css (site-wide) */
}

/* Primary content wrappers take the token-driven root padding (the site gutter).
   Applies to main, constrained groups, and template parts. */
.wp-site-blocks > main,
.wp-site-blocks main,
.wp-site-blocks .wp-block-group.is-layout-constrained,
.wp-site-blocks div.wp-block-template-part {
	padding-inline-start: var(--wp--style--root--padding-left);
	padding-inline-end: var(--wp--style--root--padding-right);
}

div.wp-block-template-part,
.wp-site-blocks div.wp-block-template-part {
	box-sizing: border-box;
}

/* === Block overrides (production-facing blocks) ===
   Token-driven styling for code blocks and pullquotes, so site-wide instances
   match the style-guide specimens. Separators are governed entirely by
   theme.json (config/theme/blocks/core-separator.json) + WP's auto-generated
   color classes — no override needed here. */

/* Code blocks: lateral spacing. */
.wp-site-blocks pre.wp-block-code {
	margin-inline: var(--wp--preset--spacing--medium);
}

/* Pullquotes: block padding. */
figure.wp-block-pullquote {
	padding-top: var(--wp--preset--spacing--x-large);
	padding-bottom: var(--wp--preset--spacing--x-large);
}

/* Flex space-between groups in content: constrain to the reading width and
   centre (core otherwise leaves them at their alignment width). Scoped to main
   so header/footer rows keep their own full-width layout. */
.wp-site-blocks
	main
	.wp-block-group.is-content-justification-space-between.is-layout-flex {
	max-inline-size: var(--wp--style--global--content-size);
	margin-inline: auto;
	box-sizing: border-box;
}

/* Header/footer wide inner groups (layout:default outer, not constrained) use
   wideSize. !important overrides core's higher-specificity layout rule. */
.wp-site-blocks
	> header
	> .wp-block-group.alignfull.is-layout-flow
	.wp-block-group.alignwide,
.wp-site-blocks
	> footer
	> .wp-block-group.alignfull.is-layout-flow
	.wp-block-group.alignwide {
	max-inline-size: var(--wp--style--global--wide-size) !important;
	margin-inline-start: auto !important;
	margin-inline-end: auto !important;
}

/* tidy the title block inside the row */
.wp-site-blocks > header .wp-block-site-title {
	margin: 0;
	line-height: 1.2;
}

/* === Typography Rhythm: Section Spacing ===
   Give major section headings (H2) breathing room when they follow content.
   Subsection headings (H3/H4) get moderate spacing for clear hierarchy. */

/* H2 section headings: generous top margin for visual separation */
.wp-site-blocks :where(h2):not(:first-child),
.wp-site-blocks :where(.wp-block-heading[class*="h2"]):not(:first-child) {
	margin-block-start: var(--wp--preset--spacing--x-large);
}

/* H3/H4 subsection headings: moderate spacing when following paragraphs/content */
.wp-site-blocks :where(h3, h4):not(:first-child),
.wp-site-blocks
	:where(.wp-block-heading[class*="h3"], .wp-block-heading[class*="h4"]):not(
		:first-child
	) {
	margin-block-start: var(--wp--preset--spacing--large);
}

/* Tighten spacing when headings directly follow other headings (ladder effect) */
.wp-site-blocks
	:where(h1, h2, h3, h4, h5, h6)
	+ :where(h1, h2, h3, h4, h5, h6) {
	margin-block-start: var(--wp--preset--spacing--medium);
}

/* Blockwright modern card update v2025-10-21 */
/* Safety: ensure WP core button always shows pointer (in case missing elsewhere) */
.wp-block-button__link {
  cursor: pointer;
}

/* WordPress frontend buttons — token-driven, author styles respected */
/* blockwright edit v2025-12-04-03 */
:where(.wp-element-button, .wp-block-button__link) {
  --_bg: var(--wp--custom--button--default--bg);
  --_bg-h: var(--wp--custom--button--default--bg-hover);
  --_bg-a: var(--wp--custom--button--default--bg-active);
  --_tx: var(--wp--custom--button--default--text);
  --_border: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--wp--custom--button--text-gap, 0.5ch);
  background: var(--_bg);
  color: var(--_tx);
  border: var(--wp--custom--border--width--thin, 1px) solid var(--_border);
  border-radius: var(--wp--custom--button--radius);
  padding-block: var(--wp--custom--button--py);
  padding-inline: var(--wp--custom--button--px);
  line-height: calc(var(--wp--custom--button--height, 2.5rem) - var(--wp--custom--border--width--thin, 1px) * 2);
  min-height: var(--wp--custom--button--height, 2.5rem);
  font-weight: var(--wp--custom--button--weight);
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--wp--custom--motion--duration--fast) linear, border-color var(--wp--custom--motion--duration--fast) linear, transform var(--wp--custom--motion--duration--x-fast) var(--wp--custom--motion--easing--standard), filter var(--wp--custom--motion--duration--fast) linear;
}

/* Respect author overrides */
:where(.wp-element-button, .wp-block-button__link).has-background,
:where(.wp-element-button, .wp-block-button__link)[style*=background] {
  background: revert-layer;
  color: revert-layer;
}

:where(.wp-element-button, .wp-block-button__link).has-text-color,
:where(.wp-element-button, .wp-block-button__link)[style*=color] {
  color: revert-layer;
}

:where(.wp-element-button, .wp-block-button__link):hover {
  background: var(--_bg-h);
}

:where(.wp-element-button, .wp-block-button__link):active {
  background: var(--_bg-a);
  transform: translateY(var(--wp--custom--border--width--thin));
}

:where(.wp-element-button, .wp-block-button__link):focus-visible {
  outline: var(--wp--custom--button--focus-ring-width) solid var(--wp--custom--button--focus-ring-color);
  outline-offset: var(--wp--preset--spacing--xx-small);
}

:where(.wp-element-button, .wp-block-button__link)[disabled],
:where(.wp-element-button, .wp-block-button__link).is-disabled,
:where(.wp-element-button, .wp-block-button__link)[aria-disabled=true] {
  opacity: 0.6;
  pointer-events: none;
}

/* ─────────────────────────────────────────────────────────────────────────────
   CTA VARIANTS — Marketing buttons with generous sizing and clear hierarchy
   ───────────────────────────────────────────────────────────────────────────── */
/* Shared CTA base — generous padding and prominent typography */
.wp-block-button.is-style-fill .wp-block-button__link,
.wp-block-button.is-style-accent .wp-block-button__link,
.wp-block-button.is-style-subtle .wp-block-button__link {
  padding-block: var(--wp--custom--button--cta--py);
  padding-inline: var(--wp--custom--button--cta--px);
  border-radius: var(--wp--custom--button--cta--radius);
  font-weight: var(--wp--custom--button--cta--weight);
  font-size: var(--wp--custom--button--cta--font-size);
  min-height: calc(var(--wp--custom--button--cta--py) * 2 + var(--wp--custom--button--cta--font-size) * 1.2 + var(--wp--custom--border--width--thin, 1px) * 2);
  line-height: 1.2;
}

/* PRIMARY CTA (is-style-fill) — Solid background, highest emphasis */
.wp-block-button.is-style-fill .wp-block-button__link:not(.has-background):not([style*=background]) {
  --_bg: var(--wp--custom--button--primary--bg);
  --_bg-h: var(--wp--custom--button--primary--bg-hover);
  --_bg-a: var(--wp--custom--button--primary--bg-active);
  --_tx: var(--wp--custom--button--primary--text);
  --_border: transparent;
  background: var(--_bg);
  color: var(--_tx);
}

.wp-block-button.is-style-fill .wp-block-button__link:not(.has-background):not([style*=background]):hover {
  background: var(--wp--custom--button--primary--bg-hover);
}

.wp-block-button.is-style-fill .wp-block-button__link:not(.has-background):not([style*=background]):active {
  background: var(--wp--custom--button--primary--bg-active);
  transform: translateY(var(--wp--custom--border--width--thin));
}

/* Also support .is-primary class for fill buttons */
:where(.wp-element-button.is-primary, .wp-block-button__link.is-primary):not(.has-background):not([style*=background]) {
  --_bg: var(--wp--custom--button--primary--bg);
  --_bg-h: var(--wp--custom--button--primary--bg-hover);
  --_bg-a: var(--wp--custom--button--primary--bg-active);
  --_tx: var(--wp--custom--button--primary--text);
  --_border: transparent;
  background: var(--_bg);
  color: var(--_tx);
}

/* ACCENT CTA (is-style-accent) — Tinted background, medium emphasis */
.wp-block-button.is-style-accent .wp-block-button__link:not(.has-background):not([style*=background]) {
  --_bg: var(--wp--custom--button--accent--bg);
  --_bg-h: var(--wp--custom--button--accent--bg-hover);
  --_bg-a: var(--wp--custom--button--accent--bg-active);
  --_tx: var(--wp--custom--button--accent--text);
  --_border: var(--wp--custom--button--accent--border);
  background: var(--_bg);
  color: var(--_tx);
  border-color: var(--_border);
}

.wp-block-button.is-style-accent .wp-block-button__link:not(.has-background):not([style*=background]):hover {
  background: var(--wp--custom--button--accent--bg-hover);
}

.wp-block-button.is-style-accent .wp-block-button__link:not(.has-background):not([style*=background]):active {
  background: var(--wp--custom--button--accent--bg-active);
  transform: translateY(var(--wp--custom--border--width--thin));
}

/* SUBTLE CTA (is-style-subtle) — Outline/ghost, low emphasis */
.wp-block-button.is-style-subtle .wp-block-button__link:not(.has-background):not([style*=background]) {
  --_bg: var(--wp--custom--button--subtle--bg);
  --_bg-h: var(--wp--custom--button--subtle--bg-hover);
  --_bg-a: var(--wp--custom--button--subtle--bg-active);
  --_tx: var(--wp--custom--button--subtle--text);
  --_border: var(--wp--custom--button--subtle--border);
  background: var(--_bg);
  color: var(--_tx);
  border-color: var(--_border);
}

.wp-block-button.is-style-subtle .wp-block-button__link:not(.has-background):not([style*=background]):hover {
  background: var(--wp--custom--button--subtle--bg-hover);
}

.wp-block-button.is-style-subtle .wp-block-button__link:not(.has-background):not([style*=background]):active {
  background: var(--wp--custom--button--subtle--bg-active);
  transform: translateY(var(--wp--custom--border--width--thin));
}

body,
.wp-site-blocks {
  text-align: start;
}

:where(h1, h2, h3, h4, h5, h6, p, ul, ol, blockquote, figure) {
  text-align: inherit;
}

.wp-site-blocks > footer > .wp-block-group.alignfull.is-layout-constrained > .wp-block-group.is-layout-flex,
.wp-site-blocks > footer > .wp-block-group.alignfull > .wp-block-group.is-layout-flex {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--wp--style--block-gap, 1rem);
}

.wp-site-blocks > footer .wp-block-group.is-layout-flex > .wp-block-group.is-layout-flex {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: var(--wp--preset--spacing--small);
}

/* Layout & structure (moved from custom.css) */
:where(input:not([type=checkbox]):not([type=radio]), select, textarea) {
  min-height: var(--wp--custom--form--control-height);
  padding-inline: var(--wp--custom--form--pad-inline);
  border-radius: var(--wp--custom--form--border-radius);
  border-width: var(--wp--custom--form--border-width);
  border-style: solid;
  border-color: var(--wp--preset--color--outline-1);
  background-color: var(--wp--custom--form--bg);
  color: var(--wp--custom--form--text);
  font-size: var(--wp--preset--font-size--base);
  line-height: var(--wp--custom--typography--line-height-control);
}

:where(input:not([type=checkbox]):not([type=radio]),
select,
textarea)::placeholder {
  color: var(--wp--custom--form--placeholder);
  opacity: 1;
}

:where(input[type=checkbox], input[type=radio]) {
  accent-color: var(--wp--custom--form--focus-ring);
}

/* Native form elements (moved from custom.css) */
:where(a,
button,
[role=button],
.wp-element-button,
input,
select,
textarea):focus-visible {
  outline: var(--wp--custom--form--focus-width) solid var(--wp--custom--form--focus-ring);
  outline-offset: var(--wp--preset--spacing--xx-small);
}

a {
  text-decoration-thickness: var(--wp--custom--border--width--thin);
  text-underline-offset: 0.15em;
  transition: color 0.15s ease, text-decoration-color 0.15s ease;
}

:where(h1, h2, h3, h4, h5, h6) {
  text-wrap: balance;
}

:where(p, li, dd, figcaption, blockquote) {
  text-wrap: pretty;
  overflow-wrap: break-word;
}

:where(h1, h2, h3, h4, h5, h6)[id] {
  scroll-margin-top: 5rem;
}

:where(.wp-element-button,
.wp-block-button__link,
button,
input[type=submit],
input[type=button]) {
  transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

::selection {
  background-color: color-mix(in oklab, var(--wp--preset--color--text-1) 16%, transparent);
}

.bw-page-header {
  margin-bottom: var(--wp--preset--spacing--large);
  padding-bottom: var(--wp--preset--spacing--small);
  border-bottom: var(--wp--custom--border--width--thin, 1px) solid var(--wp--preset--color--divider);
}

.bw-page-header .wp-block-post-title {
  margin: 0;
  font-size: var(--wp--preset--font-size--xxl);
}

.wp-block-post-title a {
  color: var(--wp--preset--color--text-1);
  text-decoration: none;
}

.wp-block-post-title a:hover,
.wp-block-post-title a:focus {
  color: var(--wp--preset--color--link);
  text-decoration: underline;
}

p.has-text-2-color[style*="text-transform:uppercase"] {
  font-family: var(--wp--preset--font-family--mono);
}

.bw-stats .has-xxl-font-size {
  white-space: nowrap;
}

.bw-stats p {
  overflow-wrap: normal;
}

.alignleft {
  float: left;
  margin-inline-end: 1.5em;
  margin-block-end: 1em;
}

.alignright {
  float: right;
  margin-inline-start: 1.5em;
  margin-block-end: 1em;
}

.aligncenter {
  display: block;
  margin-inline: auto;
  margin-block-end: 1em;
}

.is-layout-constrained.alignfull > .alignleft {
  margin-inline-start: max(0px, (100% - var(--wp--style--global--content-size)) / 2);
}

.is-layout-constrained.alignfull > .alignright {
  margin-inline-end: max(0px, (100% - var(--wp--style--global--content-size)) / 2);
}

pre {
  max-width: 100%;
  overflow-x: auto;
}

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

.screen-reader-text:focus {
  clip-path: none;
  height: auto;
  width: auto;
  margin: 0;
  padding: 0.5rem 1rem;
  z-index: 100000;
  background-color: var(--wp--preset--color--surface-1);
  color: var(--wp--preset--color--text-1);
}

.wp-caption {
  max-width: min(100%, var(--wp--style--global--content-size)) !important;
}

.wp-caption img {
  height: auto;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
  padding-inline: var(--wp--preset--spacing--medium);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
  top: var(--wp--preset--spacing--small);
  inset-inline-end: var(--wp--preset--spacing--small);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
  --navigation-layout-align: flex-start;
  --navigation-layout-justification-setting: flex-start;
}

.wp-caption-text,
.wp-element-caption,
figure.wp-block-image figcaption {
  font-size: var(--wp--preset--font-size--s);
  color: var(--wp--preset--color--text-2);
  text-align: center;
  margin-block-start: 0.5em;
}

.gallery {
  display: grid;
  gap: 1rem;
  margin-block: 1.5rem;
  grid-template-columns: repeat(3, 1fr);
}

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

.gallery-columns-4 {
  grid-template-columns: repeat(4, 1fr);
}

.gallery-columns-5 {
  grid-template-columns: repeat(5, 1fr);
}

.gallery-item {
  margin: 0;
}

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

.sticky {
  outline: var(--wp--custom--border--width--thin, 1px) solid var(--wp--preset--color--border-subtle);
  outline-offset: var(--wp--preset--spacing--x-small, 0.5rem);
  border-radius: var(--wp--preset--border-radius--m, 0.25rem);
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
/* Focus/link styles (moved from custom.css) */
/* Navigation — kept in the GLOBAL bundle (nav is on every page, so lazy-loading buys nothing). Consolidated from the former assets/blocks/navigation.css. */
/* blockwright edit v2025-01-09 */
/* Container gap for nav items */
.wp-block-navigation .wp-block-navigation__container {
  gap: var(--wp--preset--spacing--small);
}

.wp-block-navigation .wp-block-navigation-link,
.wp-block-navigation .wp-block-navigation-item__content,
.wp-block-navigation .wp-block-navigation__submenu-icon {
  border-radius: var(--wp--custom--nav--link--radius);
}

.wp-block-navigation .wp-block-navigation__container a:focus-visible,
.wp-block-navigation .wp-block-navigation__container button:focus-visible,
.wp-block-navigation .wp-block-navigation__container .wp-block-navigation-item__content:focus-visible {
  outline: var(--wp--custom--nav--focus-ring--width) solid var(--wp--custom--nav--focus-ring--color);
  outline-offset: var(--wp--preset--spacing--xx-small);
}

.wp-block-navigation .current-menu-item > .wp-block-navigation-link,
.wp-block-navigation .current-menu-item > .wp-block-navigation-item__content,
.wp-block-navigation .current-menu-item > .wp-block-navigation-submenu__toggle,
.wp-block-navigation .current-menu-ancestor > .wp-block-navigation-link,
.wp-block-navigation .current-menu-ancestor > .wp-block-navigation-item__content,
.wp-block-navigation .current-menu-ancestor > .wp-block-navigation-submenu__toggle,
.wp-block-navigation .wp-block-navigation-link[aria-current] {
  background-color: var(--wp--custom--nav--link--current--bg);
  color: var(--wp--custom--nav--link--current--text);
}

.wp-block-navigation .wp-block-navigation__container button:hover,
.wp-block-navigation .wp-block-navigation__container button:focus-visible {
  background-color: var(--wp--custom--nav--link--hover--bg);
  color: var(--wp--custom--nav--link--hover--text);
}

/* Submenu dropdown container - must match core specificity (.has-child) */
.wp-block-navigation .has-child .wp-block-navigation__submenu-container {
  gap: var(--wp--preset--spacing--small);
  background-color: var(--wp--preset--color--surface-2);
  color: var(--wp--preset--color--text-1);
  border: var(--wp--custom--border--width--thin) solid var(--wp--preset--color--border-subtle);
  border-radius: var(--wp--preset--border-radius--m);
  box-shadow: var(--wp--custom--shadow--m);
}

/* Navigation — global (nav is on every page) */
/* src/styles/index.scss — Blockwright */
/* -------------------------------------------------------------------------- */
/* Vendor CSS includes                                                         */
/* -------------------------------------------------------------------------- */
/* Open Props runtime removed: values copied into Blockwright tokens. No runtime import. */
/* -------------------------------------------------------------------------- */
/* Root & base                                                                 */
/* -------------------------------------------------------------------------- */
:root {
  color-scheme: light dark;
}

html {
  /* scrollbar-gutter removed - was causing edge-to-edge layout issues */
}

body {
  margin: 0;
  background: var(--wp--preset--color--surface-1);
  color: var(--wp--preset--color--text-1, canvasText);
  /* Body font-family is owned by WordPress global styles (theme.json +
      style variations). Hardcoding it here would out-specify variations and
      stop them from changing the font — so it is intentionally omitted. */
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: clip; /* avoid subpixel horizontal jiggle */
}

/* Layout tokens derived from WP globals (with safe fallbacks) */
:root {
  --bw-gutter: clamp(
  	var(--wp--custom--layout--gutter-min),
  	3vw,
  	var(--wp--custom--layout--gutter-max)
  );
  --bw-adminbar: 0;
  /* Keep these defined so patterns/blocks using the WP vars remain predictable */
  --wp--style--root--padding-left: var(--bw-gutter);
  --wp--style--root--padding-right: var(--bw-gutter);
  /* Featured image aspect can be adjusted project-wide if desired */
  --bw-fi-aspect: 16 / 9;
}

body.admin-bar {
  --bw-adminbar: var(--wp--custom--layout--adminbar--desktop);
}

@media (max-width: 48.875rem) {
  /* WP admin-bar mobile breakpoint (782px) */
  body.admin-bar {
    --bw-adminbar: var(--wp--custom--layout--adminbar--mobile);
  }
}
/* -------------------------------------------------------------------------- */
/* Page shell                                                                  */
/* -------------------------------------------------------------------------- */
/* IMPORTANT: Core already applies global padding to .wp-site-blocks when
   useRootPaddingAwareAlignments = true. Do NOT add our own side padding here
   or we get double gutters. */
/* (Removed the old padding-inline on .wp-site-blocks) */
/* Sticky footer: push footer to bottom on short pages */
.wp-site-blocks {
  min-height: calc(100svh - var(--bw-adminbar));
  display: flex;
  flex-direction: column;
}

/* Grow main to fill available space */
.wp-site-blocks > main,
.wp-site-blocks > main.wp-block-group {
  flex: 1 1 auto;
}

/* -------------------------------------------------------------------------- */
/* Header / Footer rows = clamp to content width                               */
/* -------------------------------------------------------------------------- */
/* Remove list padding blowout for post templates when global padding is active */
.wp-site-blocks > main.has-global-padding > ul.wp-block-post-template,
.wp-site-blocks > main.has-global-padding > ol.wp-block-post-template {
  list-style: none;
  padding-inline-start: 0;
  margin-left: calc(var(--wp--style--root--padding-left, 0) * -1);
  margin-right: calc(var(--wp--style--root--padding-right, 0) * -1);
}

/* -------------------------------------------------------------------------- */
/* Featured image (FI) polish                                                  */
/* -------------------------------------------------------------------------- */
/* If a FI block renders without an <img> (e.g., no thumbnail), collapse it */
.wp-block-post-featured-image:not(:has(img)) {
  display: none;
}

/* For real thumbnails: keep them tidy and modern by default */
.wp-block-post-featured-image img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: var(--bw-fi-aspect);
  object-fit: cover;
  border-radius: var(--wp--preset--border-radius--m, 0.5rem);
}

/* WordPress button rhythm */
:where(.wp-element-button,
.wp-block-button__link,
.wp-block-search__button,
.wp-block-file__button,
input[type=submit],
input[type=button],
input[type=reset]) {
  --_button-height: var(
  	--wp--custom--button--height,
  	calc(
  		var(--wp--custom--button--py, 0.75rem) * 2 +
  			var(--wp--custom--button--font-size, 1rem)
  	)
  );
  --_button-gap: var(--wp--custom--button--gap, 0.5rem);
  --_button-font-size: var(--wp--custom--button--font-size, 1rem);
  --_button-weight: var(--wp--custom--button--weight, 500);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--_button-gap);
  min-height: var(--_button-height, auto);
  padding-block: var(--wp--custom--button--py);
  padding-inline: var(--wp--custom--button--px);
  border-radius: var(--wp--custom--button--radius, var(--wp--preset--border-radius--m));
  font-size: var(--_button-font-size);
  font-weight: var(--_button-weight);
  line-height: 1.2;
  background: var(--wp--custom--button--default--bg);
  color: var(--wp--custom--button--default--text);
  text-decoration: none;
}

button {
  border: 0;
}/* blockwright edit v2025-10-30-01 */
/* GENERATED: WordPress layout helpers (block-gap rhythm; no preset pinning) */
:root :where(.is-layout-flow) > *{margin-block-start: var(--wp--style--block-gap); margin-block-end: 0;}
:root :where(.is-layout-constrained) > *{margin-block-start: var(--wp--style--block-gap); margin-block-end: 0;}
:root :where(.wp-block-post-template-is-layout-constrained) > *{margin-block-start: var(--wp--style--block-gap); margin-block-end: 0;}
:root :where(.wp-block-columns-is-layout-constrained) > *{margin-block-start: var(--wp--style--block-gap); margin-block-end: 0;}
:root :where(.wp-block-buttons-is-layout-constrained) > *{margin-block-start: var(--wp--style--block-gap); margin-block-end: 0;}
:root :where(.wp-block-column-is-layout-constrained) > *{margin-block-start: var(--wp--style--block-gap); margin-block-end: 0;}
:root :where(.wp-block-navigation-is-layout-constrained) > *{margin-block-start: var(--wp--style--block-gap); margin-block-end: 0;}
/* First/last child trims (unchanged) */
:root :where(.is-layout-flow, .is-layout-constrained) > *:first-child{margin-block-start: 0;}
:root :where(.is-layout-flow, .is-layout-constrained) > *:last-child{margin-block-end: 0;}
