/* Orvoro Base: structural CSS only. Colours/type come from theme.json tokens. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
img, svg, video { max-width: 100%; height: auto; }
body { overflow-x: clip; }
:focus-visible { outline: 3px solid var(--wp--preset--color--accent); outline-offset: 2px; }
a { text-underline-offset: 0.18em; }
.wp-element-button, .wp-block-button__link { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }

/* Header */
.orvoro-header { gap: var(--wp--preset--spacing--40); }
.orvoro-header .wp-block-site-title a { text-decoration: none; color: var(--wp--preset--color--ink); }
.orvoro-header .wp-block-navigation a { min-height: 44px; display: inline-flex; align-items: center; text-decoration: none; }
/* Submenu chevrons are real buttons: give them a 44px target (core draws them ~8px). */
.wp-block-navigation .wp-block-navigation-submenu__toggle { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
/* Desktop header: the chevron button keeps the 44x44 target. The hit area is widened with side
   margins pulled in so the chevron still sits beside its label (it is centred in the 44px). */
@media (min-width: 761px) { .orvoro-header .wp-block-navigation__container .wp-block-navigation-submenu__toggle { min-width: 44px; margin-inline: -12px -8px; } }
.wp-block-navigation__responsive-container-open,
.wp-block-navigation__responsive-container-close { min-width: 44px; min-height: 44px; align-items: center; justify-content: center; }
.orvoro-utility p { margin: 0; }
.orvoro-header .wp-block-site-title a { display: inline-flex; align-items: center; min-height: 44px; }
@media (max-width: 760px) { .wp-block-group.orvoro-utility { display: none; } }

/* Align core's 600px nav breakpoint with the theme's 760px phone breakpoint */
@media (min-width: 601px) and (max-width: 760px) {
	.orvoro-header .wp-block-navigation__responsive-container-open { display: flex; }
	.orvoro-header .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none; }
}

/* Footer */
.orvoro-footer a { display: inline-flex; align-items: center; min-height: 44px; }
.orvoro-footer .wp-block-navigation a { min-height: 44px; }
.orvoro-footer p { margin-block: 0; }

/* Mobile action bar: phones only */
.wp-block-group.orvoro-mobile-bar { display: none; }
@media (max-width: 760px) {
	body { padding-bottom: var(--wp--custom--bar-height, 64px); }
	.orvoro-mobile-bar a:focus-visible { outline: 3px solid var(--wp--preset--color--on-primary); outline-offset: -6px; }
	.wp-block-group.orvoro-mobile-bar {
		display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
		height: var(--wp--custom--bar-height, 64px); gap: 0; margin: 0; padding: 0;
		background: var(--wp--preset--color--primary); color: var(--wp--preset--color--on-primary);
		box-shadow: 0 -2px 12px rgb(0 0 0 / 0.15);
		padding-bottom: env(safe-area-inset-bottom, 0);
	}
	.orvoro-mobile-bar > p { flex: 1 1 0; margin: 0; display: flex; }
	.orvoro-mobile-bar a {
		flex: 1; display: flex; align-items: center; justify-content: center; min-height: 44px;
		color: var(--wp--preset--color--on-primary); font-weight: 600; text-decoration: none;
	}
	.orvoro-mobile-bar > p + p { border-left: 1px solid rgb(255 255 255 / 0.3); }
}
@media (max-width: 1100px) { .orvoro-utility { font-size: var(--wp--preset--font-size--xs); } }

/* Patterns */
.orvoro-card { border-radius: var(--wp--custom--radius--lg); }
.orvoro-ph img { display: block; width: 100%; height: auto; border-radius: var(--wp--custom--radius--lg); }
.orvoro-faq details { border-bottom: 1px solid var(--wp--preset--color--surface); }
.orvoro-faq summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; font-weight: 600; }
.orvoro-faq summary { list-style: none; gap: 1rem; }
.orvoro-faq summary::-webkit-details-marker { display: none; }
.orvoro-faq summary::after { content: "+"; margin-inline-start: auto; font-size: 1.4em; line-height: 1; color: var(--wp--preset--color--primary); }
.orvoro-faq details[open] > summary::after { content: "\2212"; }
.orvoro-breadcrumb ol { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; margin: 0; padding: 0; }
.orvoro-breadcrumb li + li::before { content: "/"; content: "/" / ""; margin-right: 0.5rem; color: var(--wp--preset--color--muted); }
/* Breadcrumb as core blocks: nav group + core/list (ol). Separators are silent CSS ("/" / ""). */
.orvoro-breadcrumb ol { align-items: center; gap: 0 0.5rem; }
.orvoro-breadcrumb li { margin: 0; color: var(--wp--preset--color--muted); }
.orvoro-breadcrumb a { display: inline-flex; align-items: center; min-height: 44px; }
.orvoro-faq .wp-block-details { border-bottom: 1px solid var(--wp--preset--color--surface); }
.orvoro-faq .wp-block-details > * + * { margin-block-start: 0; padding-block-end: var(--wp--preset--spacing--30); }

@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; }
}

/* Demo notice link (every demo footer links to orvoro.com): inherit the notice colour so contrast follows each footer. */
.orvoro-demo-notice a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
