/*
Theme Name: Geek Guru — Evidence First
Theme URI: https://geekguru.tech/
Author: Geek Guru
Author URI: https://geekguru.tech/
Description: Thème blocs mission-first pour une expertise Azure et IA fondée sur la preuve.
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 7.4
Version: 1.2.5
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: geek-guru-evidence-first
Tags: block-patterns, full-site-editing, wide-blocks, portfolio
*/

:root {
	--gg-ink: #101820;
	--gg-ink-soft: #2d3742;
	--gg-paper: #f5f2ea;
	--gg-paper-raised: #fffdf8;
	--gg-line: #c9c5ba;
	--gg-line-strong: #8b8b84;
	--gg-accent: #2354d7;
	--gg-accent-dark: #173aa0;
	--gg-signal: #f4b41a;
	--gg-success: #126346;
	--gg-warning: #8d5100;
	--gg-danger: #a12b2b;
	--gg-inverse-bg: #101820;
	--gg-inverse-text: #fffdf8;
	--gg-inverse-muted: #c9d0d7;
	--gg-radius: 0.25rem;
	--gg-gutter: clamp(1.1rem, 3vw, 2rem);
	--gg-section: clamp(3.25rem, 5vw, 5rem);
	--gg-shadow-focus: 0 0 0 3px #f5f2ea, 0 0 0 6px #2354d7;
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
}

body {
	background: var(--gg-paper);
	color: var(--gg-ink);
	font-family: "Inter", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	font-size: clamp(0.98rem, 0.96rem + 0.1vw, 1.04rem);
	line-height: 1.6;
	margin: 0;
	text-rendering: optimizeLegibility;
}

body::before {
	background-image:
		linear-gradient(to right, rgba(16, 24, 32, 0.035) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(16, 24, 32, 0.035) 1px, transparent 1px);
	background-size: 4rem 4rem;
	content: "";
	inset: 0;
	mask-image: linear-gradient(to bottom, #000 0, transparent 38rem);
	pointer-events: none;
	position: fixed;
	z-index: -1;
}

::selection {
	background: var(--gg-signal);
	color: var(--gg-ink);
}

a {
	color: var(--gg-accent-dark);
	text-decoration-thickness: 0.08em;
	text-underline-offset: 0.18em;
}

a:hover {
	color: var(--gg-accent);
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
	border-radius: 0.125rem;
	box-shadow: var(--gg-shadow-focus);
	outline: 2px solid transparent;
}

img {
	height: auto;
	max-width: 100%;
}

h1,
h2,
h3,
h4 {
	color: inherit;
	font-weight: 650;
	letter-spacing: -0.035em;
	line-height: 1.08;
	text-wrap: balance;
}

h1 {
	font-size: clamp(2.5rem, 5vw, 4.6rem);
	margin: 0;
}

h2 {
	font-size: clamp(1.85rem, 3.2vw, 3rem);
	margin: 0;
}

h3 {
	font-size: clamp(1.2rem, 1.6vw, 1.55rem);
}

p {
	text-wrap: pretty;
}

code,
kbd,
pre,
.gg-kicker,
.gg-index,
.gg-status,
.gg-meta,
.gg-metric strong,
.gg-proof-label {
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

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

.screen-reader-text:focus {
	background: var(--gg-paper-raised);
	clip: auto !important;
	clip-path: none;
	color: var(--gg-ink);
	display: block;
	font-size: 1rem;
	height: auto;
	left: 1rem;
	padding: 0.8rem 1rem;
	top: 1rem;
	width: auto;
	z-index: 100000;
}

.gg-shell {
	margin-inline: auto;
	max-width: 90rem;
	padding-inline: var(--gg-gutter);
	width: 100%;
}

.gg-reading {
	margin-inline: auto;
	max-width: 46rem;
	padding-inline: var(--gg-gutter);
}

.gg-section {
	padding-block: var(--gg-section);
}

.gg-section--tight {
	padding-block: clamp(2rem, 3.5vw, 3.25rem);
}

.gg-section--ruled {
	border-top: 1px solid var(--gg-line);
}

.gg-section--inverse {
	background: var(--gg-inverse-bg);
	color: var(--gg-inverse-text);
}

.gg-section--inverse a {
	color: var(--gg-inverse-text);
}

.gg-section--inverse p,
.gg-section--inverse .gg-muted {
	color: var(--gg-inverse-muted);
}

.gg-kicker {
	color: var(--gg-accent-dark);
	display: block;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	margin-bottom: 0.85rem;
	text-transform: uppercase;
}

.gg-section--inverse .gg-kicker {
	color: #9eb9ff;
}

.gg-lead {
	color: var(--gg-ink-soft);
	font-size: clamp(1.08rem, 1rem + 0.4vw, 1.32rem);
	line-height: 1.55;
	max-width: 48rem;
}

.gg-muted {
	color: var(--gg-ink-soft);
}

.gg-header {
	background: color-mix(in srgb, var(--gg-paper) 92%, transparent);
	border-bottom: 1px solid var(--gg-line);
	position: sticky;
	top: 0;
	z-index: 50;
}

.admin-bar .gg-header {
	top: 32px;
}

.gg-header__inner {
	align-items: center;
	display: flex;
	gap: 1.5rem;
	justify-content: space-between;
	height: 4rem;
	max-height: 4rem;
	min-height: 4rem;
}

.gg-brand {
	align-items: center;
	color: var(--gg-ink);
	display: inline-flex;
	font-size: 0.95rem;
	font-weight: 750;
	gap: 0.75rem;
	letter-spacing: -0.02em;
	text-decoration: none;
}

.gg-brand::before {
	background: center / contain no-repeat url("assets/brand/geek-guru-portail.svg");
	content: "";
	flex: 0 0 auto;
	height: 1.65rem;
	width: 1.65rem;
}

.gg-header .wp-block-site-logo {
	flex: 0 0 auto;
	line-height: 0;
}

.gg-header .wp-block-site-logo img {
	height: 2.15rem;
	max-width: none;
	object-fit: contain;
	object-position: left center;
	width: auto !important;
}

.gg-header .wp-block-navigation {
	font-size: 0.9rem;
	font-weight: 650;
}

.gg-header .wp-block-navigation a {
	color: var(--gg-ink);
	text-decoration: none;
}

.gg-header .wp-block-navigation a:hover {
	text-decoration: underline;
	text-decoration-thickness: 0.1em;
	text-underline-offset: 0.35em;
}

.gg-header .gg-nav-cta a {
	background: var(--gg-ink);
	border: 1px solid var(--gg-ink);
	color: var(--gg-paper-raised);
	min-height: 2.75rem;
	padding: 0.45rem 0.85rem;
}

.gg-header .gg-nav-cta a:hover {
	background: var(--gg-accent);
	border-color: var(--gg-accent);
	color: #fff;
	text-decoration: none;
}

.gg-header .gg-nav-cta a:focus-visible {
	outline-color: var(--gg-accent);
	outline-offset: 0.2rem;
}

.gg-header .gg-nav-cta a:empty::before,
.gg-header .gg-nav-cta .wp-block-navigation-item__label:empty::before {
	content: "Échanger";
	font-size: 0.9rem;
}

.wp-block-button__link,
.gg-button {
	align-items: center;
	background: var(--gg-accent);
	border: 2px solid var(--gg-accent);
	border-radius: var(--gg-radius);
	color: #fff !important;
	display: inline-flex;
	font-size: 0.92rem;
	font-weight: 750;
	gap: 0.55rem;
	justify-content: center;
	letter-spacing: -0.01em;
	min-height: 3.15rem;
	padding: 0.72rem 1.15rem;
	text-decoration: none;
	transition: background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.wp-block-button__link:hover,
.gg-button:hover {
	background: var(--gg-accent-dark);
	border-color: var(--gg-accent-dark);
	color: #fff;
	transform: translateY(-1px);
}

.is-style-outline .wp-block-button__link,
.gg-button--outline {
	background: transparent;
	border-color: var(--gg-ink);
	color: var(--gg-ink) !important;
}

.is-style-outline .wp-block-button__link:hover,
.gg-button--outline:hover {
	background: var(--gg-ink);
	color: var(--gg-paper) !important;
}

.gg-section--inverse .is-style-outline .wp-block-button__link {
	border-color: var(--gg-inverse-text);
	color: var(--gg-inverse-text) !important;
}

.gg-section--inverse .is-style-outline .wp-block-button__link:hover {
	background: var(--gg-inverse-text);
	color: var(--gg-inverse-bg) !important;
}

.gg-hero {
	border-bottom: 1px solid var(--gg-line);
	overflow: hidden;
	padding-block: clamp(3.25rem, 5vw, 5.5rem) clamp(3rem, 5vw, 4.5rem);
	position: relative;
}

.gg-hero::after {
	border: 1px solid var(--gg-line);
	content: "";
	height: clamp(10rem, 18vw, 16rem);
	opacity: 0.72;
	position: absolute;
	right: max(-4rem, calc((100vw - 90rem) / 2 - 4rem));
	top: clamp(3rem, 6vw, 5rem);
	transform: rotate(45deg);
	width: clamp(10rem, 18vw, 16rem);
	z-index: -1;
}

.gg-hero__grid {
	align-items: start;
	display: grid;
	gap: clamp(3rem, 5vw, 5rem);
	grid-template-columns: minmax(0, 1.15fr) minmax(24rem, 0.85fr);
}

.gg-hero h1 {
	font-size: clamp(3.15rem, 5.2vw, 5.75rem);
}

.gg-hero h1 em {
	color: var(--gg-accent);
	font-style: normal;
}

.gg-hero__copy {
	max-width: 70rem;
}

.gg-hero__copy .gg-lead {
	margin-bottom: 1.75rem;
	margin-top: 1.5rem;
}

.gg-brief {
	background: var(--gg-paper-raised);
	border: 1px solid var(--gg-line-strong);
	margin-top: 2.75rem;
	padding: 0;
	position: relative;
	z-index: 1;
}

.gg-brief__head {
	align-items: center;
	border-bottom: 1px solid var(--gg-line);
	display: flex;
	justify-content: space-between;
	padding: 0.85rem 1rem;
}

.gg-brief__head strong {
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gg-status {
	align-items: center;
	color: var(--gg-success);
	display: inline-flex;
	font-size: 0.72rem;
	font-weight: 750;
	gap: 0.4rem;
	text-transform: uppercase;
}

.gg-status::before {
	background: currentColor;
	border-radius: 50%;
	content: "";
	height: 0.55rem;
	width: 0.55rem;
}

.gg-brief dl {
	margin: 0;
}

.gg-brief dl div {
	display: grid;
	gap: 1rem;
	grid-template-columns: 7.5rem 1fr;
	padding: 0.85rem 1rem;
}

.gg-brief dl div + div {
	border-top: 1px solid var(--gg-line);
}

.gg-brief dt {
	color: var(--gg-ink-soft);
	font-size: 0.78rem;
}

.gg-brief dd {
	font-size: 0.9rem;
	font-weight: 650;
	margin: 0;
}

.gg-actions {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 0.8rem;
}

.gg-metrics {
	border-bottom: 1px solid var(--gg-line);
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.gg-metric {
	padding: clamp(1.2rem, 3vw, 2rem) var(--gg-gutter);
}

.gg-metric + .gg-metric {
	border-left: 1px solid var(--gg-line);
}

.gg-metric strong {
	display: block;
	font-size: clamp(1.45rem, 3vw, 2.25rem);
	line-height: 1;
}

.gg-metric span {
	color: var(--gg-ink-soft);
	display: block;
	font-size: 0.78rem;
	margin-top: 0.65rem;
}

.gg-section-head {
	display: grid;
	gap: 2rem;
	grid-template-columns: minmax(0, 1.15fr) minmax(16rem, 0.55fr);
	margin-bottom: clamp(1.75rem, 4vw, 3rem);
}

.gg-section-head > :last-child {
	align-self: end;
}

.gg-grid-3 {
	display: grid;
	gap: 1px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gg-card {
	background: var(--gg-paper-raised);
	border: 1px solid var(--gg-line);
	margin: -1px 0 0 -1px;
	min-height: 15rem;
	padding: clamp(1.25rem, 2.5vw, 2rem);
	position: relative;
}

.gg-card .gg-index {
	color: var(--gg-accent-dark);
	display: block;
	font-size: 0.75rem;
	font-weight: 700;
	margin-bottom: clamp(1.75rem, 4vw, 3rem);
}

.gg-card h3 {
	margin-bottom: 1rem;
}

.gg-card p {
	color: var(--gg-ink-soft);
	font-size: 0.95rem;
	margin-bottom: 0;
}

.gg-proof {
	display: grid;
	gap: clamp(2rem, 5vw, 5rem);
	grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
}

.gg-proof__narrative {
	align-self: center;
}

.gg-proof__narrative blockquote {
	border-left: 0;
	font-size: clamp(1.4rem, 2.5vw, 2.1rem);
	font-weight: 600;
	line-height: 1.35;
	margin: 2rem 0;
	padding: 0;
}

.gg-proof__narrative cite {
	color: var(--gg-inverse-muted);
	display: block;
	font-size: 0.78rem;
	font-style: normal;
}

.gg-proof-panel {
	background: #18232e;
	border: 1px solid #46515d;
	color: var(--gg-inverse-text);
}

.gg-proof-panel .gg-status {
	color: #8fe0bd;
}

.gg-proof-panel__head {
	align-items: center;
	border-bottom: 1px solid #46515d;
	display: flex;
	justify-content: space-between;
	padding: 1rem 1.2rem;
}

.gg-proof-label {
	color: #9eb9ff;
	font-size: 0.72rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gg-proof-panel__body {
	padding: clamp(1.4rem, 4vw, 2.6rem);
}

.gg-proof-numbers {
	display: grid;
	gap: 1px;
	grid-template-columns: repeat(3, 1fr);
	margin-bottom: 2.25rem;
}

.gg-proof-numbers div {
	background: #101820;
	padding: 1.1rem;
}

.gg-proof-numbers strong {
	display: block;
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: clamp(1.6rem, 3vw, 2.5rem);
	line-height: 1;
}

.gg-proof-numbers span {
	color: var(--gg-inverse-muted);
	display: block;
	font-size: 0.72rem;
	margin-top: 0.5rem;
}

.gg-findings {
	list-style: none;
	margin: 0;
	padding: 0;
}

.gg-findings li {
	align-items: center;
	border-top: 1px solid #46515d;
	display: grid;
	font-size: 0.85rem;
	gap: 1rem;
	grid-template-columns: 5rem 1fr auto;
	padding-block: 0.9rem;
}

.gg-findings code {
	color: #9eb9ff;
}

.gg-severity {
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.67rem;
	font-weight: 750;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

.gg-severity--critical {
	color: #ff9b91;
}

.gg-severity--high {
	color: #ffd17a;
}

.gg-disclosure {
	border-top: 1px solid #46515d;
	color: var(--gg-inverse-muted);
	font-size: 0.72rem;
	margin-top: 2rem;
	padding-top: 1rem;
}

.gg-method {
	counter-reset: method;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.gg-method li {
	border-left: 1px solid var(--gg-line);
	counter-increment: method;
	min-height: 17rem;
	padding: clamp(1.4rem, 3vw, 2.5rem);
}

.gg-method li:last-child {
	border-right: 1px solid var(--gg-line);
}

.gg-method li::before {
	color: var(--gg-accent-dark);
	content: "0" counter(method);
	display: block;
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.78rem;
	font-weight: 750;
	margin-bottom: clamp(2.5rem, 5vw, 5rem);
}

.gg-method h3 {
	font-size: clamp(1.4rem, 2.4vw, 2rem);
	margin-bottom: 1rem;
}

.gg-method p {
	color: var(--gg-ink-soft);
	font-size: 0.92rem;
}

.gg-sectors {
	border-bottom: 1px solid var(--gg-line);
	border-top: 1px solid var(--gg-line);
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
}

.gg-sector {
	min-height: 8rem;
	padding: 1.5rem;
}

.gg-sector + .gg-sector {
	border-left: 1px solid var(--gg-line);
}

.gg-sector strong {
	display: block;
	font-size: 0.94rem;
}

.gg-sector span {
	color: var(--gg-ink-soft);
	display: block;
	font-size: 0.74rem;
	margin-top: 0.55rem;
}

.gg-offers {
	display: grid;
	gap: clamp(1.25rem, 3vw, 2rem);
	grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
}

.gg-offer {
	border: 1px solid var(--gg-line-strong);
	display: flex;
	flex-direction: column;
	min-height: 23rem;
	padding: clamp(1.4rem, 3vw, 2.25rem);
}

.gg-offer--primary {
	background: var(--gg-ink);
	color: var(--gg-paper-raised);
}

.gg-offer--primary p {
	color: var(--gg-inverse-muted);
}

.gg-offer__top {
	align-items: center;
	display: flex;
	justify-content: space-between;
}

.gg-offer__tag {
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.72rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gg-offer__body {
	margin-block: auto;
	padding-block: 2rem;
}

.gg-offer h3 {
	font-size: clamp(1.75rem, 3vw, 2.6rem);
	margin: 0 0 1.25rem;
}

.gg-offer ul {
	font-size: 0.9rem;
	margin: 1.5rem 0 0;
	padding-left: 1.2rem;
}

.gg-offer li + li {
	margin-top: 0.5rem;
}

.gg-offer--primary .gg-button--outline {
	border-color: var(--gg-inverse-text);
	color: var(--gg-inverse-text) !important;
}

.gg-offer--primary .gg-button--outline:hover {
	background: var(--gg-inverse-text);
	color: var(--gg-inverse-bg) !important;
}

.gg-query .wp-block-post-template {
	display: grid;
	gap: 1px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.gg-query .wp-block-post {
	background: var(--gg-paper-raised);
	border: 1px solid var(--gg-line);
	margin: -1px 0 0 -1px;
	padding: clamp(1.4rem, 3vw, 2.25rem);
}

.gg-query .wp-block-post-title {
	font-size: clamp(1.35rem, 2.2vw, 1.85rem);
	margin: 1rem 0;
}

.gg-query .wp-block-post-title a {
	color: var(--gg-ink);
	text-decoration: none;
}

.gg-query .wp-block-post-title a:hover {
	color: var(--gg-accent);
	text-decoration: underline;
}

.gg-query .wp-block-post-excerpt {
	color: var(--gg-ink-soft);
	font-size: 0.9rem;
}

.gg-query .wp-block-post-date,
.gg-query .wp-block-post-terms {
	color: var(--gg-ink-soft);
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.7rem;
	text-transform: uppercase;
}

.gg-cta {
	display: grid;
	gap: clamp(2rem, 5vw, 5rem);
	grid-template-columns: minmax(0, 1.3fr) minmax(15rem, 0.4fr);
}

.gg-cta__action {
	align-self: end;
}

.gg-footer {
	background: #0b1117;
	border-top: 1px solid #46515d;
	color: var(--gg-inverse-text);
	padding-block: clamp(2rem, 4vw, 3rem) 1.25rem;
}

.gg-footer .gg-kicker {
	color: #9eb9ff;
}

.gg-footer a {
	color: var(--gg-inverse-text);
}

.gg-footer__grid {
	display: grid;
	gap: clamp(1.5rem, 3vw, 2.5rem);
	grid-template-columns: 1.4fr 0.6fr 0.6fr;
}

.gg-footer h2 {
	font-size: clamp(1.65rem, 2.7vw, 2.5rem);
	max-width: 14ch;
}

.gg-footer h3 {
	color: #9eb9ff;
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.72rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gg-footer ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.gg-footer li + li {
	margin-top: 0.55rem;
}

.gg-footer__bottom {
	border-top: 1px solid #46515d;
	color: var(--gg-inverse-muted);
	display: flex;
	font-size: 0.72rem;
	justify-content: space-between;
	margin-top: clamp(2rem, 4vw, 3.5rem);
	padding-top: 1.25rem;
}

.gg-page-hero {
	border-bottom: 1px solid var(--gg-line);
	padding-block: clamp(2rem, 4vw, 3.75rem);
}

.gg-page-hero .wp-block-post-title {
	font-size: clamp(2.5rem, 5vw, 4.4rem);
	margin: 0;
	max-width: 14ch;
}

.gg-content {
	padding-block: var(--gg-section);
}

.gg-content > * {
	margin-left: auto;
	margin-right: auto;
	max-width: 46rem;
}

.gg-content > .alignwide {
	max-width: 76rem;
}

.gg-content > .alignfull {
	max-width: none;
}

.gg-content blockquote {
	border-left: 0.3rem solid var(--gg-accent);
	font-size: 1.2rem;
	margin-block: 2.5rem;
	padding-left: 1.5rem;
}

.gg-content pre {
	background: var(--gg-ink);
	color: var(--gg-paper-raised);
	overflow-x: auto;
	padding: 1.25rem;
}

.gg-content table {
	border-collapse: collapse;
	display: block;
	overflow-x: auto;
	width: 100%;
}

.gg-content th,
.gg-content td {
	border: 1px solid var(--gg-line);
	padding: 0.75rem;
	text-align: left;
}

.gg-post-meta {
	color: var(--gg-ink-soft);
	display: flex;
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.72rem;
	gap: 1rem;
	margin-top: 1.5rem;
	text-transform: uppercase;
}

.gg-pagination {
	border-top: 1px solid var(--gg-line);
	margin-top: 4rem;
	padding-top: 2rem;
}

.gg-notice {
	background: #fff7db;
	border: 1px solid #9d7615;
	color: #4b3809;
	padding: 1rem 1.15rem;
}

/* Frontière de preuve — section 7 de l'ossature editoriale (GUIDE-EDITORIAL.md).
   Composant dédié, distinct de .gg-notice : une frontière de preuve n'est pas un
   avertissement mais une déclaration de portée. Sobre, sans code couleur, avec
   un libellé monospace conforme au §9.4 (mono réservé aux artefacts et labels). */
.gg-evidence-boundary {
	background: var(--gg-paper-raised);
	border: 1px solid var(--gg-line-strong);
	border-left: 3px solid var(--gg-ink);
	color: var(--gg-ink-soft);
	margin-block: 2.25rem;
	padding: 1.15rem 1.3rem;
}

.gg-evidence-boundary__label {
	color: var(--gg-ink);
	display: block;
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
	font-size: 0.72rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	margin-bottom: 0.45rem;
	text-transform: uppercase;
}

.gg-evidence-boundary p:last-child {
	margin-bottom: 0;
}

/* ── Gabarit d'analyse ───────────────────────────────────────────────────────
   Les blocs ci-dessous complètent .gg-brief et .gg-evidence-boundary pour
   former le gabarit unique des analyses (patterns/post-analysis-skeleton.php).
   L'auteur remplit des emplacements au lieu d'inventer une structure : c'est
   ce qui rend la série maintenable à volume croissant.

   Ordre imposé : en bref → sept sections d'argument → auto-vérification →
   portée entreprise → frontière de preuve → étape suivante. La frontière
   ferme l'argument ; l'étape suivante est une affordance de navigation et
   se place donc après elle, jamais avant.                                   */

/* Encadré « En bref » : quatre lignes fixes en tête d'analyse. Réutilise le
   composant .gg-brief, avec l'espacement du flux d'article. */
.gg-content .gg-brief {
	margin-block: 0 2.75rem;
}

/* Auto-vérification : les contrôles que le lecteur peut rejouer lui-même.
   On donne la procédure, pas la conclusion — c'est la contrepartie honnête
   de l'offre et le principal levier de qualification. */
.gg-selfcheck {
	background: var(--gg-paper-raised);
	border: 1px solid var(--gg-line-strong);
	border-left: 3px solid var(--gg-accent);
	margin-block: 2.25rem;
	padding: 1.15rem 1.3rem;
}

.gg-selfcheck__label {
	color: var(--gg-accent-dark);
	display: block;
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
	font-size: 0.72rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	margin-bottom: 0.7rem;
	text-transform: uppercase;
}

.gg-selfcheck ol,
.gg-selfcheck ul {
	margin-bottom: 0;
	padding-left: 1.35rem;
}

.gg-selfcheck li {
	margin-bottom: 0.55rem;
}

.gg-selfcheck li:last-child,
.gg-selfcheck > p:last-child {
	margin-bottom: 0;
}

/* Étape suivante : un seul appel principal, une alternative de lecture. Pas de
   formulaire, pas de promesse — une destination et ce qu'on y trouve. */
.gg-next {
	border-top: 2px solid var(--gg-ink);
	margin-top: 3rem;
	padding-top: 1.4rem;
}

.gg-next__label {
	color: var(--gg-ink-soft);
	display: block;
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
	font-size: 0.72rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	margin-bottom: 0.6rem;
	text-transform: uppercase;
}

.gg-next p {
	margin-bottom: 1.25rem;
}

.gg-next .gg-actions {
	margin-bottom: 0;
}

/* Filet de sécurité : un identifiant de ressource ou une commande citée en
   incise ne doit jamais forcer le défilement horizontal de la page. Les blocs
   <pre> gardent leur propre défilement (voir .gg-content pre) et sont donc
   volontairement exclus. */
.gg-content :not(pre) > code {
	overflow-wrap: anywhere;
}

.gg-article-intro {
	color: var(--gg-ink);
	font-size: clamp(1.25rem, 1.05rem + 0.8vw, 1.65rem);
	font-weight: 600;
	line-height: 1.5;
}

.gg-resource-grid {
	background: var(--gg-line);
	border: 1px solid var(--gg-line);
	display: grid;
	gap: 1px;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-block: clamp(2rem, 5vw, 4rem);
}

.gg-resource-card {
	background: var(--gg-paper-raised);
	display: flex;
	flex-direction: column;
	min-height: 18rem;
	padding: clamp(1.4rem, 3vw, 2.25rem);
}

.gg-resource-card__meta {
	color: var(--gg-accent-dark);
	display: flex;
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.7rem;
	font-weight: 750;
	justify-content: space-between;
	letter-spacing: 0.07em;
	text-transform: uppercase;
}

.gg-resource-card h3 {
	font-size: clamp(1.45rem, 2.4vw, 2rem);
	margin-block: auto 1.25rem;
	padding-top: 2rem;
}

.gg-resource-card p {
	color: var(--gg-ink-soft);
	font-size: 0.93rem;
}

.gg-resource-card p:last-child {
	margin-top: 1.5rem;
}

.gg-resource-card a {
	font-weight: 750;
}

.gg-resource-principle {
	border-top: 1px solid #46515d;
	min-height: 15rem;
	padding: clamp(1.5rem, 4vw, 2.5rem);
}

.gg-resource-principle:last-child {
	border-bottom: 1px solid #46515d;
}

.gg-resource-principle h3 {
	color: var(--gg-inverse-text);
}

/* Échelle compacte 1.2.2
   Les héros de pages éditoriales restent expressifs, mais ne doivent plus
   repousser le contenu utile sous la ligne de flottaison. Le héros d'accueil
   conserve volontairement son échelle propre via .gg-hero h1. */
body:not(.home).page-template-page-templates .wp-block-post-content,
body:not(.home)[class*="page-template-page-templates-"] .wp-block-post-content {
	margin-inline: 0 !important;
	max-width: none !important;
	padding: 0;
	width: 100%;
}

body:not(.home).page-template-page-templates .gg-page-hero,
body:not(.home)[class*="page-template-page-templates-"] .gg-page-hero {
	padding-block: clamp(1.5rem, 3vw, 2.75rem);
}

body:not(.home).page-template-page-templates .gg-page-hero .wp-block-post-title,
body:not(.home)[class*="page-template-page-templates-"] .gg-page-hero .wp-block-post-title {
	font-size: clamp(2.25rem, 4vw, 3.75rem);
	max-width: none;
}

.gg-header--compact .gg-header__inner {
	gap: clamp(0.8rem, 2vw, 1.5rem);
}

.gg-header--compact .gg-brand {
	white-space: nowrap;
}

.gg-header--compact .wp-block-navigation {
	column-gap: clamp(0.8rem, 2vw, 1.35rem);
}

.gg-footer--compact {
	padding-block: clamp(1.75rem, 3vw, 2.5rem) 1.1rem;
}

.gg-footer-compact__main {
	align-items: center;
	display: grid;
	gap: clamp(1.5rem, 4vw, 4rem);
	grid-template-columns: minmax(17rem, 1fr) minmax(24rem, auto);
}

.gg-footer-compact__identity .gg-kicker {
	margin-top: 0;
	margin-bottom: 0.45rem;
}

.gg-footer-compact__statement {
	color: var(--gg-inverse-text);
	font-size: clamp(1.2rem, 1.6vw, 1.55rem);
	font-weight: 650;
	letter-spacing: -0.025em;
	line-height: 1.25;
	margin: 0;
	max-width: 38ch;
}

.gg-footer-compact__links {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 0.55rem clamp(1rem, 2vw, 1.5rem);
	justify-content: flex-end;
	list-style: none;
	margin: 0;
	padding: 0;
}

.gg-footer--compact .gg-footer-compact__links li {
	margin: 0;
}

.gg-footer-compact__links a {
	font-size: 0.82rem;
	font-weight: 650;
	white-space: nowrap;
}

.gg-footer--compact .gg-footer__bottom {
	margin-top: clamp(1.25rem, 2vw, 1.75rem);
	padding-top: 0.9rem;
}

.gg-footer--compact .gg-footer__bottom p {
	margin: 0;
}

.gg-missions-section,
.gg-contact-section {
	overflow: clip;
}

.gg-missions.alignwide,
.gg-contact.alignwide {
	margin-inline: auto;
	max-width: 82rem !important;
	width: 100%;
}

.gg-missions__head {
	align-items: end;
	display: grid;
	gap: clamp(1.5rem, 4vw, 4rem);
	grid-template-columns: minmax(0, 1.15fr) minmax(18rem, 0.65fr);
	margin-bottom: clamp(2rem, 4vw, 3.25rem);
}

.gg-missions__heading h2 {
	font-size: clamp(2.25rem, 4vw, 3.9rem);
	max-width: 17ch;
}

.gg-missions__head .gg-lead {
	font-size: clamp(1rem, 1.2vw, 1.16rem);
	margin: 0;
	max-width: 33rem;
}

.gg-missions__offers {
	display: grid;
	gap: clamp(1rem, 2vw, 1.5rem);
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.gg-missions__offer {
	border: 1px solid var(--gg-line-strong);
	display: flex;
	flex-direction: column;
	min-width: 0;
	padding: clamp(1.35rem, 2.5vw, 2.1rem);
}

.gg-missions__offer--primary {
	background: var(--gg-ink);
	color: var(--gg-inverse-text);
}

.gg-missions__offer--primary p {
	color: var(--gg-inverse-muted);
}

.gg-missions__offer-top {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	font-size: 0.78rem;
	gap: 0.4rem 1rem;
	justify-content: space-between;
}

.gg-missions__offer-tag {
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.7rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gg-missions__offer-body {
	flex: 1;
	padding-block: clamp(1.5rem, 3vw, 2.5rem);
}

.gg-missions__offer h3 {
	font-size: clamp(1.75rem, 2.7vw, 2.65rem);
	margin: 0 0 0.9rem;
	max-width: 18ch;
}

.gg-missions__offer p,
.gg-missions__offer li {
	font-size: 0.9rem;
}

.gg-missions__offer ul {
	margin: 1.1rem 0 0;
	padding-left: 1.15rem;
}

.gg-missions__offer li + li {
	margin-top: 0.35rem;
}

.gg-missions__offer--primary .gg-button--outline {
	border-color: var(--gg-inverse-text);
	color: var(--gg-inverse-text) !important;
}

.gg-missions__offer--primary .gg-button--outline:hover {
	background: var(--gg-inverse-text);
	color: var(--gg-inverse-bg) !important;
}

.gg-missions__fit-heading {
	font-size: clamp(2rem, 3.6vw, 3.35rem);
	margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
	max-width: 24ch;
}

.gg-missions__fit {
	background: var(--gg-line);
	border: 1px solid var(--gg-line);
	display: grid;
	gap: 1px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gg-missions__fit-item {
	background: var(--gg-paper-raised);
	min-width: 0;
	padding: clamp(1.25rem, 2.5vw, 2rem);
}

.gg-missions__fit-item .gg-index {
	color: var(--gg-accent-dark);
	font-size: 0.72rem;
	font-weight: 700;
	margin: 0 0 clamp(1.5rem, 3vw, 2.25rem);
}

.gg-missions__fit-item h3 {
	margin: 0 0 0.75rem;
}

.gg-missions__fit-item p {
	color: var(--gg-ink-soft);
	font-size: 0.9rem;
	margin-bottom: 0;
}

.gg-missions__cta {
	align-items: end;
	display: grid;
	gap: clamp(1.5rem, 4vw, 4rem);
	grid-template-columns: minmax(0, 1fr) auto;
}

.gg-missions__cta h2 {
	font-size: clamp(2rem, 3.5vw, 3.4rem);
	max-width: 23ch;
}

.gg-missions__cta .gg-lead {
	margin-bottom: 0;
}

.gg-contact {
	align-items: start;
	display: grid;
	gap: clamp(1.5rem, 4vw, 4rem);
	grid-template-columns: minmax(0, 1.1fr) minmax(20rem, 0.75fr);
}

.gg-contact__intro {
	min-width: 0;
}

.gg-contact__intro h2 {
	font-size: clamp(2.25rem, 4vw, 3.75rem);
	max-width: 17ch;
}

.gg-contact__intro .gg-lead {
	margin-bottom: 1.25rem;
	max-width: 39rem;
}

.gg-contact__checklist {
	margin: 1rem 0 0;
	max-width: 35rem;
	padding-left: 1.25rem;
}

.gg-contact__checklist li + li {
	margin-top: 0.3rem;
}

.gg-contact__panel {
	background: var(--gg-paper-raised);
	border: 1px solid var(--gg-line-strong);
	min-width: 0;
	padding: clamp(1.4rem, 3vw, 2.25rem);
}

.gg-contact__panel-label {
	color: var(--gg-accent-dark);
	font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
	font-size: 0.72rem;
	font-weight: 750;
	letter-spacing: 0.08em;
	margin: 0 0 clamp(1.5rem, 3vw, 2.25rem);
	text-transform: uppercase;
}

.gg-contact__panel h3 {
	font-size: clamp(1.45rem, 2vw, 1.85rem);
	margin: 0 0 0.8rem;
}

.gg-contact__panel > p:not(.gg-contact__panel-label):not(.gg-contact__notice) {
	color: var(--gg-ink-soft);
	font-size: 0.94rem;
}

.gg-contact__panel .wp-block-buttons {
	margin-block: 1.25rem;
}

.gg-contact__notice {
	background: #fff7db;
	border: 1px solid #9d7615;
	color: #4b3809;
	font-size: 0.85rem;
	margin: 1.25rem 0 0;
	padding: 0.9rem 1rem;
}

@media (max-width: 960px) {
	.gg-header .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: none !important;
	}

	.gg-header .wp-block-navigation__responsive-container-open {
		display: flex;
	}

	.gg-hero__grid,
	.gg-section-head,
	.gg-proof,
	.gg-offers,
	.gg-cta,
	.gg-missions__head,
	.gg-missions__cta,
	.gg-contact {
		grid-template-columns: 1fr;
	}

	.gg-hero::after {
		display: none;
	}

	.gg-missions__offers {
		grid-template-columns: 1fr;
	}

	.gg-missions__head .gg-lead,
	.gg-contact__intro .gg-lead {
		max-width: 46rem;
	}

	.gg-contact__panel {
		max-width: 38rem;
	}

	.gg-footer-compact__main {
		align-items: start;
		grid-template-columns: 1fr;
	}

	.gg-footer-compact__links {
		justify-content: flex-start;
	}

	.gg-brief {
		align-self: center;
		margin-top: 0;
		max-width: 38rem;
		width: 100%;
	}

	.gg-resource-grid {
		grid-template-columns: 1fr;
	}

	.gg-grid-3,
	.gg-method,
	.gg-query .wp-block-post-template {
		grid-template-columns: 1fr;
	}

	.gg-method li {
		border-left: 1px solid var(--gg-line);
		border-top: 1px solid var(--gg-line);
		min-height: auto;
	}

	.gg-method li:last-child {
		border-bottom: 1px solid var(--gg-line);
	}

	.gg-method li::before {
		margin-bottom: 3rem;
	}

	.gg-sectors {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gg-sector {
		border-bottom: 1px solid var(--gg-line);
	}

	.gg-sector:nth-child(odd) {
		border-left: 0;
	}

	.gg-footer__grid {
		grid-template-columns: 1fr 1fr;
	}

	.gg-footer__grid > :first-child {
		grid-column: 1 / -1;
	}
}

@media (max-width: 782px) {
	.admin-bar .gg-header {
		top: 46px;
	}
}

@media (max-width: 680px) {
	:root {
		--gg-section: 3rem;
	}

	body::before {
		background-size: 2rem 2rem;
	}

	h1 {
		font-size: clamp(2.5rem, 12vw, 3.15rem);
	}

	.gg-hero {
		padding-block: 3.25rem 2.75rem;
	}

	.gg-hero h1 {
		font-size: clamp(2.6rem, 11vw, 3.2rem);
	}

	.gg-section {
		padding-block: 2.75rem;
	}

	.gg-section--tight {
		padding-block: 1.9rem;
	}

	.gg-card,
	.gg-offer {
		min-height: auto;
	}

	.gg-card .gg-index,
	.gg-method li::before {
		margin-bottom: 2rem;
	}

	.gg-sector {
		min-height: auto;
		padding: 1.2rem;
	}

	.gg-resource-card {
		min-height: auto;
		padding: 1.5rem;
	}

	.gg-header__inner {
		height: 3.75rem;
		max-height: 3.75rem;
		min-height: 3.75rem;
	}

	.gg-header .wp-block-site-logo img {
		height: 1.9rem;
	}

	.gg-header .wp-block-navigation__responsive-container-open {
		display: flex;
	}

	.gg-metrics {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gg-metric:nth-child(3) {
		border-left: 0;
		border-top: 1px solid var(--gg-line);
	}

	.gg-metric:nth-child(4) {
		border-top: 1px solid var(--gg-line);
	}

	.gg-proof-numbers {
		grid-template-columns: 1fr;
	}

	.gg-findings li {
		align-items: start;
		grid-template-columns: 4.5rem 1fr;
	}

	.gg-findings .gg-severity {
		grid-column: 2;
	}

	.gg-sectors {
		grid-template-columns: 1fr;
	}

	.gg-sector + .gg-sector {
		border-left: 0;
	}

	.gg-footer__grid {
		grid-template-columns: 1fr;
	}

	.gg-footer__grid > :first-child {
		grid-column: auto;
	}

	.gg-footer__bottom {
		flex-direction: column;
		gap: 0.5rem;
	}

	.gg-footer-compact__links {
		align-items: flex-start;
		gap: 0.35rem 1rem;
	}

	.gg-footer--compact .gg-footer__bottom {
		gap: 0.25rem;
	}

	.gg-missions.alignwide,
	.gg-contact.alignwide {
		max-width: 100% !important;
	}

	.gg-missions__heading h2,
	.gg-contact__intro h2 {
		font-size: clamp(2rem, 10vw, 2.75rem);
	}

	.gg-missions__offer,
	.gg-missions__fit-item,
	.gg-contact__panel {
		padding: 1.25rem;
	}

	.gg-missions__fit {
		grid-template-columns: 1fr;
	}

	.gg-missions__offer-top {
		align-items: flex-start;
		flex-direction: column;
	}

	.gg-contact__panel {
		max-width: none;
	}

	.gg-actions,
	.wp-block-buttons {
		align-items: stretch;
		flex-direction: column;
	}

	.wp-block-button,
	.wp-block-button__link,
	.gg-button {
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
	}
}

@media print {
	.gg-header,
	.gg-footer,
	.wp-block-buttons {
		display: none !important;
	}

	body {
		background: #fff;
		color: #000;
	}

	body::before {
		display: none;
	}

	a {
		color: #000;
	}
}
