/* Group Tactical Security (GTAC) chrome: what the header, menu panel and footer still need from CSS. Their colours, type, spacing, radius
   and shadows are block attributes and style variations in the parts (tools/build-site.py), so the Site Editor shows
   and edits them. Kept here: the sticky part wrapper, the phone header, the menu link animation, the menu panel rows,
   the header over the hero. Token variables only (raw values: 0, 1px hairlines, media-query breakpoints). */

/* ---------- page frame ---------- */
.wp-site-blocks > * + * { margin-block-start: 0; }

/* ---------- header ---------- */
/* The part wrapper would limit sticky to its own height: let its children sit directly in .wp-site-blocks. */
.wp-block-template-part:has(> .gt-header-wrap) { display: contents; }
.gt-header-wrap { z-index: var(--wp--custom--z--sticky); transition: background-color var(--wp--custom--transition--base), color var(--wp--custom--transition--base), box-shadow var(--wp--custom--transition--base); }
/* the brand group is one link: the title link stretches over the badge */
.gt-brand { position: relative; flex: none; }
.gt-brand .wp-block-site-title { margin: 0; }
.gt-brand .wp-block-site-title a::after { content: ""; position: absolute; inset: 0; }
.gt-header-cta { flex: none; margin: 0; }

/* navigation: inline from 1024px, the menu panel below (core switches at 600px, so move the switch) */
.gt-nav { margin-right: auto; margin-left: var(--wp--preset--spacing--50); }
.gt-nav .wp-block-navigation-item__content { position: relative; padding: var(--wp--preset--spacing--30) 0; }
.gt-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation-item__content::after { content: ""; position: absolute; left: 0; right: 100%; bottom: var(--wp--preset--spacing--20); height: var(--wp--custom--border--strong); border-radius: var(--wp--custom--radius--badge); background: var(--wp--preset--color--signature); transition: right var(--wp--custom--transition--base); }
.gt-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation-item__content:hover::after,
.gt-nav .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content::after { right: 0; }
.gt-nav .wp-block-navigation__responsive-container-open { display: none; width: var(--wp--custom--control--min); height: var(--wp--custom--control--min); align-items: center; justify-content: center; border-radius: var(--wp--custom--radius--icon-button); color: currentColor; background: transparent; border: 0; padding: 0; cursor: pointer; }
.gt-nav .wp-block-navigation__responsive-container-open:hover { background: color-mix(in srgb, var(--wp--preset--color--on-accent) 12%, transparent); }
.gt-nav .wp-block-navigation__responsive-container-open svg { width: var(--wp--custom--icon--md); height: var(--wp--custom--icon--md); }
@media (max-width: 1023px) {
	.gt-nav { order: 3; margin: 0; }
	.gt-header-cta { margin-left: auto; }
	.gt-nav .wp-block-navigation__responsive-container-open { display: flex !important; }
	.gt-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none !important; }
}
@media (min-width: 1024px) {
	.gt-header { min-height: var(--wp--custom--layout--header-height) !important; }
}

/* centered: logo in the middle and the button on the right, the menu on its own row below (from 1024px) */
@media (min-width: 1024px) {
	.gt-header.gt-header--centered { display: grid !important; grid-template-columns: 1fr auto 1fr; grid-template-areas: ". brand cta" "nav nav nav"; align-items: center; row-gap: var(--wp--preset--spacing--20); padding-block: var(--wp--preset--spacing--30); }
	.gt-header--centered .gt-brand { grid-area: brand; }
	.gt-header--centered .gt-header-cta { grid-area: cta; justify-self: end; }
	.gt-header--centered .gt-nav { grid-area: nav; justify-self: center; margin: 0; }
}

/* over the hero (content.json layout.header.over_hero): transparent while the page sits at the top of a hero that runs
   under the header (.gt-hero--under-header), solid once it scrolls (assets/js/header-scroll.js sets body.gt-is-scrolled).
   Only with JavaScript (html.gt-js, printed in the head), so without it the header stays solid. */
:root { --gt-header-h: var(--wp--custom--layout--header-height-mobile); }
@media (min-width: 1024px) {
	:root { --gt-header-h: var(--wp--custom--layout--header-height); }
}
/* every page opens like the home page: a dark first section (page intro, article intro) runs under the header too.
   inc/sections.php prints html.gt-js only when the page starts with one. Below the header it keeps as much space
   above its content as below it. */
html.gt-js :is(main > .is-style-section-deep:first-child, main > .entry-content:first-child > .is-style-section-deep:first-child):not(.gt-hero) {
	margin-top: calc(-1 * var(--gt-header-h)) !important;
	padding-top: calc(var(--gt-header-h) + var(--wp--preset--spacing--70)) !important; /* = the intro's bottom padding: balanced */
}
html.gt-js body:not(.gt-is-scrolled):has(:is(main > .is-style-section-deep:first-child, main > .entry-content:first-child > .is-style-section-deep:first-child):not(.gt-hero)) .gt-header-wrap--over-hero { background-color: transparent !important; color: var(--wp--preset--color--on-accent); }
html.gt-js body:not(.gt-is-scrolled):has(:is(main > .is-style-section-deep:first-child, main > .entry-content:first-child > .is-style-section-deep:first-child):not(.gt-hero)) .gt-header-wrap--over-hero::before { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
html.gt-js body:not(.gt-is-scrolled):has(.gt-hero--under-header) .gt-header-wrap--over-hero { background-color: transparent !important; }
html.gt-js body:not(.gt-is-scrolled):has(.gt-hero--under-header.gt-hero--tone-dark) .gt-header-wrap--over-hero { color: var(--wp--preset--color--on-accent); }
/* the Glass header paints its frosted ground on ::before (styles/group-glass.json): clear it too while over the hero */
html.gt-js body:not(.gt-is-scrolled):has(.gt-hero--under-header) .gt-header-wrap--over-hero::before { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
/* the open menu panel must not inherit the transparent header's colours */
.gt-header-wrap:has(.wp-block-navigation__responsive-container.is-menu-open) { background: var(--wp--preset--color--accent-3) !important; color: var(--wp--preset--color--on-accent); }

/* ---------- menu panel (navigation overlay; the panel's look is in the part) ---------- */
.wp-block-navigation__responsive-container.is-menu-open { background: var(--wp--preset--color--overlay); padding: calc(var(--wp-admin--admin-bar--height, 0px) + var(--wp--preset--spacing--40)) var(--wp--preset--spacing--40) var(--wp--preset--spacing--40); }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content > * { display: block; height: auto; }
.gt-drawer { width: 100%; max-width: var(--wp--custom--layout--drawer); margin-left: auto; box-sizing: border-box; }
/* core's overlay rule sets display:block on the panel's children: keep the head a row */
.gt-drawer__head { display: flex !important; }
.gt-drawer .wp-block-navigation-overlay-close { display: inline-grid; place-items: center; width: var(--wp--custom--control--min); height: var(--wp--custom--control--min); border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--border-strong); border-radius: var(--wp--custom--radius--icon-button); background: var(--wp--preset--color--surface); color: var(--wp--preset--color--contrast); cursor: pointer; padding: 0; position: static; }
.gt-drawer .wp-block-navigation-overlay-close:hover { background: var(--wp--preset--color--accent-5); }
.gt-drawer .wp-block-navigation-overlay-close svg { width: var(--wp--custom--icon--md); height: var(--wp--custom--icon--md); fill: currentColor; }
.gt-drawer__nav .wp-block-navigation__container { display: grid; width: 100%; gap: 0; }
.gt-drawer__nav .wp-block-navigation-item { display: block; border-bottom: var(--wp--custom--border--hairline) solid var(--wp--preset--color--accent-6); }
.gt-drawer__nav .wp-block-navigation-item:last-child { border-bottom: 0; }
.gt-drawer__nav .wp-block-navigation-item__content { display: flex; align-items: center; justify-content: space-between; min-height: var(--wp--custom--control--min); padding: var(--wp--preset--spacing--20) 0; }
.gt-drawer__nav .wp-block-navigation-item__content::after { content: ""; width: var(--wp--custom--icon--sm); height: var(--wp--custom--icon--sm); flex: none; background: var(--wp--preset--color--accent-4); -webkit-mask: url(../icons/wp/caret-right.svg) center / contain no-repeat; mask: url(../icons/wp/caret-right.svg) center / contain no-repeat; transition: transform var(--wp--custom--transition--fast); }
.gt-drawer__nav .wp-block-navigation-item__content:hover::after { transform: translateX(3px); background: var(--wp--preset--color--contrast); }
.gt-drawer__contact a { display: inline-flex; align-items: center; min-height: var(--wp--custom--control--min); }

/* ---------- footer (colours, spacing and type are in the part) ---------- */
.gt-footer a { text-decoration: none; }
.gt-footer a:hover { text-decoration: underline; }
.gt-footer .wp-block-column { min-width: 0; }
.gt-footer .wp-block-navigation-item__content { display: inline-flex; align-items: center; min-height: var(--wp--custom--control--min); }
.gt-footer__bottom > * { margin: 0; }
.gt-footer__bottom .wp-block-navigation-item__content:hover { color: var(--wp--preset--color--on-accent); }
/* social logos stay core brand marks: 44px round targets that invert on hover */
.gt-footer .wp-block-social-links { gap: var(--wp--preset--spacing--20); }
.gt-footer .wp-block-social-links .wp-social-link { background: transparent !important; color: var(--wp--preset--color--on-accent) !important; border-radius: var(--wp--custom--radius--icon-button); }
.gt-footer .wp-block-social-links .wp-social-link a { display: grid; place-items: center; width: var(--wp--custom--control--min); height: var(--wp--custom--control--min); padding: 0; color: inherit; }
.gt-footer .wp-block-social-links .wp-social-link a:hover,
.gt-footer .wp-block-social-links .wp-social-link a:focus-visible { background: var(--wp--preset--color--on-accent); color: var(--wp--preset--color--accent-3) !important; text-decoration: none; border-radius: var(--wp--custom--radius--icon-button); }
.gt-footer .wp-block-social-links .wp-social-link a:hover svg,
.gt-footer .wp-block-social-links .wp-social-link a:focus-visible svg { fill: var(--wp--preset--color--accent-3); }
.gt-footer .wp-block-social-links svg { width: var(--wp--custom--icon--md); height: var(--wp--custom--icon--md); }

/* ---------- logo (content.json site.logo_icon): the Icon block draws the logo; the site title stays for screen readers
   and becomes the link over the whole logo ---------- */
.gt-brand--logo { align-items: center; }
.gt-brand--logo .gt-brand__title { position: absolute; inset: 0; margin: 0; }
.gt-brand--logo .gt-brand__title a { display: block; width: 100%; height: 100%; overflow: hidden; color: transparent; white-space: nowrap; text-indent: 100%; }
.gt-brand--logo .wp-block-site-title a::after { content: none; }

/* ---------- phone call bar (footer part; hidden on tablet and desktop by blockVisibility) ---------- */
/* two equal halves that may shrink (a longer label, such as BM, wraps instead of pushing the bar off screen); no arrow here */
.gt-callbar > * { min-width: 0; }
.gt-callbar .wp-block-button, .gt-callbar .wp-block-button__link { width: 100%; min-width: 0; }
.gt-callbar .wp-block-button__link { padding-inline: var(--wp--preset--spacing--20); line-height: var(--wp--custom--line-height--snug); text-align: center; overflow-wrap: anywhere; }
.gt-callbar .wp-block-button__link::after { content: none; }
@media (max-width: 781px) {
	.gt-callbar { position: fixed; inset: auto 0 0 0; z-index: var(--wp--custom--z--sticky); margin: 0 !important; box-shadow: var(--wp--preset--shadow--lg); }
	body:has(.gt-callbar) { padding-bottom: calc(var(--wp--custom--control--button-height) + 2 * var(--wp--preset--spacing--20)); }
}

/* ---------- Glass header (styles/group-glass.json holds the colours; WordPress flattens nested @supports/@media in a
   variation's css, so the frosted layer lives here): 78% navy with a blur on ::before, solid navy without blur
   support or with reduced transparency ---------- */
.is-style-glass::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: var(--wp--preset--color--accent-3); transition: background var(--wp--custom--transition--base); }
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	.is-style-glass::before { background: var(--wp--preset--color--glass); -webkit-backdrop-filter: var(--wp--custom--glass--blur); backdrop-filter: var(--wp--custom--glass--blur); }
}
@media (prefers-reduced-transparency: reduce) {
	.is-style-glass::before { background: var(--wp--preset--color--accent-3); -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* ---------- language switcher ([gt_lang_switch], inc/lang.php): a small pill beside the header button ---------- */
.gt-header .wp-block-shortcode, .gt-header > p:has(.gt-lang) { margin: 0; flex: none; }
.gt-lang { display: inline-grid; place-items: center; min-width: var(--wp--custom--control--min); min-height: var(--wp--custom--control--min); padding: 0 var(--wp--preset--spacing--30); border: var(--wp--custom--border--hairline) solid color-mix(in srgb, currentColor 40%, transparent); border-radius: var(--wp--custom--radius--button); color: inherit; font-size: var(--wp--preset--font-size--small); font-weight: var(--wp--custom--font-weight--semibold); text-decoration: none; transition: background var(--wp--custom--transition--base); }
.gt-lang:hover { background: color-mix(in srgb, currentColor 12%, transparent); }
@media (max-width: 1023px) { .gt-header .gt-lang { order: 2; } }

/* ---------- footer groups (core/details: Industries, Company): a column label on wider screens, a tap-to-open row
   on phones (assets/js/footer.js folds them there) ---------- */
.gt-footer__group > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--wp--preset--spacing--20); min-height: var(--wp--custom--control--min); color: var(--wp--preset--color--on-dark-muted); font-size: var(--wp--preset--font-size--small); font-weight: var(--wp--custom--font-weight--semibold); letter-spacing: var(--wp--custom--letter-spacing--eyebrow); text-transform: uppercase; list-style: none; cursor: pointer; }
.gt-footer__group > summary::-webkit-details-marker { display: none; }
.gt-footer__group > summary::after { content: ""; flex: none; width: var(--wp--custom--icon--sm); height: var(--wp--custom--icon--sm); background: currentColor; -webkit-mask: url(../icons/wp/caret-down.svg) center / contain no-repeat; mask: url(../icons/wp/caret-down.svg) center / contain no-repeat; transition: rotate var(--wp--custom--transition--base); }
.gt-footer__group[open] > summary::after { rotate: 180deg; }
@media (min-width: 782px) {
	.gt-footer__group > summary { min-height: 0; margin-bottom: var(--wp--preset--spacing--30); pointer-events: none; cursor: default; }
	.gt-footer__group > summary::after { content: none; }
}
@media (max-width: 781px) {
	.gt-footer__group { border-bottom: var(--wp--custom--border--hairline) solid color-mix(in srgb, var(--wp--preset--color--on-accent) 16%, transparent); }
	.gt-footer__group[open] { padding-bottom: var(--wp--preset--spacing--30); }
	.gt-footer__cols { row-gap: 0 !important; }
	.gt-footer__cols > .wp-block-column:first-child { margin-bottom: var(--wp--preset--spacing--50); }
	.gt-footer__cols > .wp-block-column:last-child { margin-top: var(--wp--preset--spacing--50); }
}
/* credentials: small badges that open their certificates (assets/js/cert-lightbox.js) */
.gt-footer__creds > p { margin: 0; }
.gt-footer__creds a { padding-inline: var(--wp--preset--spacing--30); border: var(--wp--custom--border--hairline) solid color-mix(in srgb, var(--wp--preset--color--on-accent) 28%, transparent); border-radius: var(--wp--custom--radius--badge); }
.gt-footer__creds a:hover { background: color-mix(in srgb, var(--wp--preset--color--on-accent) 10%, transparent); text-decoration: none; }
.gt-footer__bottom .wp-block-shortcode, .gt-footer__bottom p:has(.gt-lang) { margin: 0; }
.gt-footer__top a { display: inline-flex; align-items: center; min-height: var(--wp--custom--control--min); }
/* tablets and small laptops: the four footer columns as two rows of two (four would squeeze the lists) */
@media (min-width: 782px) and (max-width: 1099px) {
	.gt-footer__cols { flex-wrap: wrap !important; row-gap: var(--wp--preset--spacing--50); }
	.gt-footer__cols > .wp-block-column { flex: 1 1 calc(50% - var(--wp--preset--spacing--60)) !important; }
}

/* ---------- analytics consent banner (inc/consent.php, assets/js/consent.js): bottom right, above the phone call bar ---------- */
.gt-consent { position: fixed; right: var(--wp--preset--spacing--30); bottom: var(--wp--preset--spacing--30); z-index: calc(var(--wp--custom--z--sticky) + 1); box-sizing: border-box; width: min(var(--wp--custom--layout--drawer), calc(100vw - 2 * var(--wp--preset--spacing--30))); display: grid; gap: var(--wp--preset--spacing--30); padding: var(--wp--preset--spacing--40); border-radius: var(--wp--custom--radius--card); background: var(--wp--preset--color--accent-3); color: var(--wp--preset--color--on-accent); box-shadow: var(--wp--preset--shadow--lg); font-size: var(--wp--preset--font-size--small); line-height: var(--wp--custom--line-height--snug); }
.gt-consent[hidden] { display: none; }
.gt-consent__text { margin-block: 0; }
.gt-consent a { color: inherit; text-decoration: underline; text-underline-offset: 0.2em; }
.gt-consent__actions { display: flex; flex-wrap: wrap; gap: var(--wp--preset--spacing--20); }
.gt-consent__actions .wp-element-button { min-height: var(--wp--custom--control--min); }
.gt-consent .gt-consent__decline { background: transparent; color: var(--wp--preset--color--on-accent); box-shadow: inset 0 0 0 1px currentColor; }
@media (max-width: 781px) {
	.gt-consent { right: var(--wp--preset--spacing--20); bottom: var(--wp--preset--spacing--20); width: calc(100vw - 2 * var(--wp--preset--spacing--20)); }
	body:has(.gt-callbar) .gt-consent { bottom: calc(var(--wp--custom--control--button-height) + 3 * var(--wp--preset--spacing--20)); }
}
