/* kit-utilities:start — generated by scripts/theme-utilities.mjs from standards/snippets/responsive-utilities.css. Edit the template, not this block. */
/* Responsive layout classes. The section converter writes them from production's measured layout at 1440 / 1024 / 768 /
   390 (columns per row, stacking, visibility, alignment), so tablet and mobile are right on the first write. Breakpoints
   are production's: tablet ≤1024, mobile ≤767. Doubled class + html body beats core's layout rules without !important. */

/* visibility: hide-d (≥1025) · hide-t (768–1024) · hide-m (≤767) */
@media (min-width: 1025px) {
	html body .opx-hide-d.opx-hide-d { display: none }
}
@media (min-width: 768px) and (max-width: 1024px) {
	html body .opx-hide-t.opx-hide-t { display: none }
}
@media (max-width: 767px) {
	html body .opx-hide-m.opx-hide-m { display: none }
}

/* tablet (≤1024): grid columns, stacking a row, reversing the stack, alignment, full-width children */
@media (max-width: 1024px) {
	html body .opx-cols-t-1.opx-cols-t-1 { grid-template-columns: minmax(0, 1fr) }
	html body .opx-cols-t-2.opx-cols-t-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) }
	html body .opx-cols-t-3.opx-cols-t-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) }
	html body .opx-cols-t-4.opx-cols-t-4 { grid-template-columns: repeat(4, minmax(0, 1fr)) }
	html body .opx-cols-t-5.opx-cols-t-5 { grid-template-columns: repeat(5, minmax(0, 1fr)) }
	html body .opx-cols-t-6.opx-cols-t-6 { grid-template-columns: repeat(6, minmax(0, 1fr)) }
	html body .opx-stack-t.opx-stack-t { flex-direction: column; flex-wrap: nowrap; align-items: stretch }
	html body .opx-stack-t.opx-stack-t > * { flex-basis: auto; width: 100%; max-width: 100% }
	html body .opx-reverse-t.opx-reverse-t { flex-direction: column-reverse }
	html body .opx-left-t.opx-left-t { text-align: left; justify-content: flex-start }
	html body .opx-center-t.opx-center-t { text-align: center; justify-content: center }
	html body .opx-right-t.opx-right-t { text-align: right; justify-content: flex-end }
	html body .opx-full-t.opx-full-t > * { max-width: none }
}

/* mobile (≤767): the same set */
@media (max-width: 767px) {
	html body .opx-cols-m-1.opx-cols-m-1 { grid-template-columns: minmax(0, 1fr) }
	html body .opx-cols-m-2.opx-cols-m-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) }
	html body .opx-cols-m-3.opx-cols-m-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) }
	html body .opx-cols-m-4.opx-cols-m-4 { grid-template-columns: repeat(4, minmax(0, 1fr)) }
	html body .opx-cols-m-5.opx-cols-m-5 { grid-template-columns: repeat(5, minmax(0, 1fr)) }
	html body .opx-cols-m-6.opx-cols-m-6 { grid-template-columns: repeat(6, minmax(0, 1fr)) }
	html body .opx-stack-m.opx-stack-m { flex-direction: column; flex-wrap: nowrap; align-items: stretch }
	html body .opx-stack-m.opx-stack-m > * { flex-basis: auto; width: 100%; max-width: 100% }
	html body .opx-reverse-m.opx-reverse-m { flex-direction: column-reverse }
	html body .opx-left-m.opx-left-m { text-align: left; justify-content: flex-start }
	html body .opx-center-m.opx-center-m { text-align: center; justify-content: center }
	html body .opx-right-m.opx-right-m { text-align: right; justify-content: flex-end }
	html body .opx-full-m.opx-full-m > * { max-width: none }
}
/* kit-utilities:end */

/* Services sub-pages (parent Our Services 22220): unified space below header. */
body.parent-pageid-22220 main .wp-block-post-content > :first-child {
	padding-top: 5% !important;
	padding-block-start: 5% !important;
}

/* Services sub-page breadcrumbs (2026-10-19): accent "Services" link, no underline. */
html body .wp-block-group.opx-service-hero p.opx-service-hero__breadcrumb.has-ink-color a[href*="/services"],
html body .opx-service-hero__breadcrumb a[href*="/services"],
html body p[class*="is-style-overline-services"] a[href*="/services"],
html body p.is-style-text-16-300-3.has-link-color a[href*="/services"],
html body p.is-style-text-16-300-3 a[href*="/services"] {
	color: var(--wp--preset--color--accent) !important;
	text-decoration: none !important;
	text-decoration-line: none !important;
}

html body .opx-service-hero__breadcrumb a[href*="/services"]:hover,
html body .opx-service-hero__breadcrumb a[href*="/services"]:focus-visible,
html body p[class*="is-style-overline-services"] a[href*="/services"]:hover,
html body p[class*="is-style-overline-services"] a[href*="/services"]:focus-visible,
html body p.is-style-text-16-300-3 a[href*="/services"]:hover,
html body p.is-style-text-16-300-3 a[href*="/services"]:focus-visible {
	text-decoration: none !important;
}

/* Restore browser focus styling instead of the parent theme's blanket 2px outline. */
:where(.wp-site-blocks) :focus {
	outline: revert;
}

/* WordPress silently drops most custom spacingSizes presets from the rendered global stylesheet once
   theme.json grows this large (286 entries, only ~32 render) — restore the ones industry pages use. */
:root {
	--wp--preset--spacing--gap-56px: 56px;
	--wp--preset--spacing--gap-20: 20px;
	--wp--preset--spacing--gap-50px-m20px-2: 50px;
	--wp--preset--spacing--gap-50px-m20px-3: 50px;
	--wp--preset--spacing--gap-50px-m30px-4: 50px;
	--wp--preset--spacing--section-y-0px-m18px-4: 0px;
	--wp--preset--spacing--section-y-2-7pct-m4-5pct-3: 2.7%;
	--wp--preset--spacing--section-y-2-7pct-m4-5pct-4: 2.7%;
	--wp--preset--spacing--section-y-4-5pct-m9pct-8: 4.5%;
	--wp--preset--spacing--section-y-4-5pct-t9pct: 4.5%;
	--wp--preset--spacing--section-y-4-5pct-t9pct-5: 4.5%;
}

/* FAQ / toggle accordions (FAQ pages, service + industry FAQs, home FAQ and "why trust us", sustainability goals):
   16px between the separator under the question and the first line of the answer. The selector is deliberately heavy:
   it has to beat the per-page accordion rules, which set 0-10px (some use an id selector). */
html body #wp--skip-link--target .wp-block-details.wp-block-details.wp-block-details:is(.opx-accordion__item, .opx-sustainability-goals__item, .kit-toggle, .kit-acc) > summary + * {
	margin-top: 0;
	padding-top: 16px;
}

/* A list as the first answer element: its first item must not add its own top margin on top of that gap. */
html body #wp--skip-link--target .wp-block-details.wp-block-details.wp-block-details:is(.opx-accordion__item, .opx-sustainability-goals__item, .kit-toggle, .kit-acc) > summary + :is(ul, ol) > li:first-child {
	margin-top: 0;
}

/* Same space below the last line of an answer as the sustainability FAQ (the reference): 16px, no stray margins. */
html body #wp--skip-link--target .wp-block-details.wp-block-details.wp-block-details:is(.opx-accordion__item, .opx-sustainability-goals__item, .kit-toggle, .kit-acc) > :not(summary):last-child {
	margin-bottom: 0;
	padding-bottom: 16px;
}

html body #wp--skip-link--target .wp-block-details.wp-block-details.wp-block-details:is(.opx-accordion__item, .opx-sustainability-goals__item, .kit-toggle, .kit-acc) > :is(ul, ol):last-child > li:last-child {
	margin-bottom: 0;
	padding-bottom: 0;
}

/* The security-service FAQs add 10px under an open item; the reference (sustainability) has none. */
html body #wp--skip-link--target .wp-block-details.wp-block-details.wp-block-details:is(.opx-accordion__item, .opx-sustainability-goals__item, .kit-toggle, .kit-acc)[open] {
	padding-bottom: 0;
}
