/* Utilities and reduced-motion guard. */
.hm-visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
}
.hm-center { text-align: center; }
.hm-nowrap { white-space: nowrap; }
.hm-price-fallback { font-weight: 700; }
.hm-main { min-height: 50vh; }

/* Block-theme spacing reset: our sections manage their own rhythm. */
.hm-main > .wp-block-post-content > *, .hm-page > * { margin-block-start: 0; margin-block-end: 0; }
.hm-main > .wp-block-post-content { margin: 0; }
.wp-site-blocks > * { margin-block-start: 0; }
.wp-site-blocks { padding: 0; }

/* Index / single */
.hm-post-list { max-width: calc(var(--hm-text) + 2 * var(--hm-gutter)); margin: 0 auto; padding: var(--hm-section) var(--hm-gutter); }
.hm-post-list .wp-block-post { padding: 1.25rem 0; border-bottom: 2px dashed var(--hm-dot); }
.hm-post-list .wp-block-post-title { font-size: var(--hm-fs-h3); }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}

@media print {
	.hm-dock, .hm-header-part, .hm-menu { display: none !important; }
	body { padding: 0; background: none; }
}

/* Re-apply section rhythm after the reset above (higher specificity on purpose). */
.hm-page > .hm-cta { margin-block-start: var(--hm-section); }
.hm-page > .hm-cta:first-child { margin-block-start: 0; }

/* Focus ring last in the cascade, doubled pseudo for (0,2,0) specificity, so component
   box-shadows (button back-plates, cards) cannot strip the yellow halo. See base.css. */
:focus-visible:focus-visible {
	outline: 3px solid var(--hm-ink);
	outline-offset: 2px;
	box-shadow: 0 0 0 8px var(--hm-yellow);
}
