/* ==========================================================================
   Global AI Index — components
   Every component here is a variant family, not a one-off section.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Header
   -------------------------------------------------------------------------- */

.gai-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: var(--wp--preset--color--paper);
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.gai-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	min-height: var(--gai-header-h);
	max-width: 1240px;
	margin-inline: auto;
	padding-inline: var(--gai-gutter);
}

.gai-brand {
	display: inline-flex;
	align-items: baseline;
	text-decoration: none;
	color: var(--wp--preset--color--ink);
}
/* Trademark mark in running prose. The serif's TM glyph sets at full size and
   reads as two capitals mid-sentence, so it is scaled and raised here too. */
.gai-tm {
	font-size: 0.62em;
	vertical-align: super;
	line-height: 0;
	letter-spacing: 0;
}

/* Trademark mark: superscript, one step down in weight and colour, so it
   registers as a legal notation rather than as part of the wordmark. */
.gai-brand__tm {
	font-size: 0.5em;
	font-weight: 500;
	line-height: 1;
	letter-spacing: 0;
	vertical-align: super;
	margin-left: 2px;
	color: var(--wp--preset--color--ink-3);
}
.gai-footer .gai-brand__tm { color: var(--wp--preset--color--ink-inv-2); }
.gai-brand__name {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 19px;
	font-weight: 600;
	letter-spacing: -0.012em;
	line-height: 1;
}
.gai-brand:hover { text-decoration: none; }
.gai-brand:hover .gai-brand__name { color: var(--wp--preset--color--accent); }

/* --------------------------------------------------------------------------
   2. Desktop navigation — flyout, keyboard operable
   -------------------------------------------------------------------------- */

.gai-nav { display: none; }

@media (min-width: 1024px) {
	.gai-nav { display: block; }
	.gai-nav__list {
		display: flex;
		align-items: center;
		gap: 4px;
		list-style: none;
		margin: 0;
		padding: 0;
	}
	.gai-nav__item { position: relative; }

	.gai-nav__link,
	.gai-nav__toggle {
		display: inline-flex;
		align-items: center;
		gap: 6px;
		padding: 10px 14px;
		font-family: var(--wp--preset--font-family--sans);
		font-size: 15px;
		font-weight: 500;
		line-height: 1.2;
		color: var(--wp--preset--color--ink);
		background: none;
		border: 0;
		border-radius: 2px;
		text-decoration: none;
		cursor: pointer;
		transition: color var(--gai-fast) var(--gai-ease);
	}
	.gai-nav__link:hover,
	.gai-nav__toggle:hover,
	.gai-nav__item.is-open > .gai-nav__toggle { color: var(--wp--preset--color--accent); text-decoration: none; }

	.gai-nav__link[aria-current="page"] { color: var(--wp--preset--color--accent); }

	.gai-nav__caret {
		width: 7px; height: 7px;
		border-right: 1px solid currentColor;
		border-bottom: 1px solid currentColor;
		transform: translateY(-2px) rotate(45deg);
		transition: transform var(--gai-fast) var(--gai-ease);
	}
	.gai-nav__item.is-open .gai-nav__caret { transform: translateY(1px) rotate(-135deg); }

	.gai-nav__panel {
		position: absolute;
		top: calc(100% + 12px);
		left: 0;
		min-width: 272px;
		padding: 8px;
		background: var(--wp--preset--color--surface);
		border: 1px solid var(--wp--preset--color--rule);
		border-radius: 2px;
		list-style: none;
		margin: 0;
		display: none;
	}
	.gai-nav__item.is-open .gai-nav__panel { display: block; }

	.gai-nav__panel a {
		display: block;
		padding: 11px 14px;
		font-family: var(--wp--preset--font-family--sans);
		font-size: 15px;
		font-weight: 400;
		color: var(--wp--preset--color--ink);
		text-decoration: none;
		border-radius: 2px;
		transition: background var(--gai-fast) var(--gai-ease), color var(--gai-fast) var(--gai-ease);
	}
	.gai-nav__panel a:hover {
		background: var(--wp--preset--color--accent-weak);
		color: var(--wp--preset--color--accent-hover);
		text-decoration: none;
	}
}

/* --------------------------------------------------------------------------
   3. Mobile drawer — separate markup tree, accordion disclosure
   -------------------------------------------------------------------------- */

.gai-burger {
	display: inline-flex;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 44px; height: 44px;
	margin-right: -10px;
	padding: 0 10px;
	background: none;
	border: 0;
	cursor: pointer;
}
.gai-burger span {
	display: block;
	height: 1px;
	background: var(--wp--preset--color--ink);
	transition: transform var(--gai-base) var(--gai-ease), opacity var(--gai-fast) var(--gai-ease);
}
@media (min-width: 1024px) { .gai-burger { display: none; } }

.gai-drawer {
	position: fixed;
	inset: var(--gai-header-h) 0 0 0;
	z-index: 99;
	background: var(--wp--preset--color--paper);
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 8px var(--gai-gutter) 56px;
	visibility: hidden;
	opacity: 0;
	transition: opacity var(--gai-base) var(--gai-ease), visibility var(--gai-base);
}
.gai-drawer.is-open { visibility: visible; opacity: 1; }
body.gai-drawer-open { overflow: hidden; }

.gai-drawer__list { list-style: none; margin: 0; padding: 0; }
.gai-drawer__item { border-bottom: 1px solid var(--wp--preset--color--rule); }

.gai-drawer__link,
.gai-drawer__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 18px 0;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 19px;
	font-weight: 500;
	color: var(--wp--preset--color--ink);
	background: none;
	border: 0;
	text-align: left;
	text-decoration: none;
	cursor: pointer;
}
.gai-drawer__toggle .gai-nav__caret {
	width: 8px; height: 8px;
	border-right: 1px solid currentColor;
	border-bottom: 1px solid currentColor;
	transform: rotate(45deg);
	transition: transform var(--gai-base) var(--gai-ease);
}
.gai-drawer__item.is-open .gai-nav__caret { transform: translateY(3px) rotate(-135deg); }

.gai-drawer__panel { display: none; list-style: none; margin: 0; padding: 0 0 16px; }
.gai-drawer__item.is-open .gai-drawer__panel { display: block; }
.gai-drawer__panel a {
	display: block;
	padding: 12px 0 12px 16px;
	border-left: 1px solid var(--wp--preset--color--rule);
	font-family: var(--wp--preset--font-family--sans);
	font-size: 16px;
	color: var(--wp--preset--color--ink-2);
	text-decoration: none;
}
.gai-drawer__panel a:hover { color: var(--wp--preset--color--accent); }

/* --------------------------------------------------------------------------
   4. Anchor bar — sticky in-page nav with scroll-spy
   -------------------------------------------------------------------------- */

.gai-anchorbar {
	position: sticky;
	top: var(--gai-header-h);
	z-index: 90;
	background: var(--wp--preset--color--paper);
	border-bottom: 1px solid var(--wp--preset--color--rule);
}
.gai-anchorbar__inner {
	display: flex;
	align-items: center;
	gap: 4px;
	max-width: 1240px;
	margin-inline: auto;
	padding-inline: var(--gai-gutter);
	min-height: var(--gai-anchor-h);
	overflow-x: auto;
	scrollbar-width: none;
}
.gai-anchorbar__inner::-webkit-scrollbar { display: none; }

.gai-anchorbar a {
	flex: 0 0 auto;
	padding: 8px 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--wp--preset--color--ink-3);
	text-decoration: none;
	border-radius: 2px;
	transition: color var(--gai-fast) var(--gai-ease), background var(--gai-fast) var(--gai-ease);
}
.gai-anchorbar a:hover { color: var(--wp--preset--color--ink); text-decoration: none; }
.gai-anchorbar a.is-active {
	color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent-weak);
}

/* --------------------------------------------------------------------------
   5. Hero — ledger variant (signature) and editorial variant
   -------------------------------------------------------------------------- */

.gai-hero {
	background: var(--wp--preset--color--ink-surface);
	color: var(--wp--preset--color--ink-inv);
	padding-block: clamp(56px, 8vw, 112px);
}
.gai-hero__inner {
	display: grid;
	gap: clamp(40px, 5vw, 72px);
	max-width: 1240px;
	margin-inline: auto;
	padding-inline: var(--gai-gutter);
}
@media (min-width: 1024px) {
	.gai-hero__inner { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: end; }
}

.gai-hero h1 {
	font-size: var(--wp--preset--font-size--display);
	font-weight: 500;
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--ink-inv);
	margin: 0;
	max-width: 14ch;
}
.gai-hero h1 strong { font-weight: 700; }

.gai-hero__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-top: 40px;
}

/* Buttons — three variants, one size. */
.gai-btn {
	display: inline-flex;
	align-items: baseline;
	gap: 8px;
	padding: 14px 22px;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 15px;
	font-weight: 500;
	line-height: 1.2;
	border: 1px solid transparent;
	border-radius: 2px;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--gai-fast) var(--gai-ease), color var(--gai-fast) var(--gai-ease), border-color var(--gai-fast) var(--gai-ease);
}
.gai-btn--primary { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--ink-inv); }
.gai-btn--primary:hover { background: var(--wp--preset--color--accent-hover); color: var(--wp--preset--color--ink-inv); text-decoration: none; }

.gai-btn--ghost { background: transparent; color: var(--wp--preset--color--ink-inv); border-color: var(--wp--preset--color--rule-inv); }
.gai-btn--ghost:hover { background: rgba(255, 255, 255, 0.06); border-color: var(--wp--preset--color--ink-inv-2); color: var(--wp--preset--color--ink-inv); text-decoration: none; }

.gai-btn--outline { background: transparent; color: var(--wp--preset--color--ink); border-color: var(--wp--preset--color--rule-strong); }
.gai-cta .gai-btn { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--ink-inv); border-color: transparent; }
.gai-cta .gai-btn:hover { background: var(--wp--preset--color--accent-hover); color: var(--wp--preset--color--ink-inv); }
.gai-btn--outline:hover { border-color: var(--wp--preset--color--ink); color: var(--wp--preset--color--ink); text-decoration: none; }

/* Format + size metadata inside a button — a document-repository trust signal. */
.gai-btn__meta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.04em;
	opacity: 0.7;
}

/* --- The ledger ----------------------------------------------------------- */

.gai-ledger {
	border-top: 1px solid var(--wp--preset--color--rule-inv);
}
.gai-ledger__head {
	display: grid;
	grid-template-columns: 44px 1fr 68px 58px;
	gap: 12px;
	padding: 12px 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-inv-2);
	border-bottom: 1px solid var(--wp--preset--color--rule-inv);
}
.gai-ledger__row {
	display: grid;
	grid-template-columns: 44px 1fr 68px 58px;
	gap: 12px;
	align-items: baseline;
	padding: 14px 0;
	border-bottom: 1px solid var(--wp--preset--color--rule-inv);
	color: var(--wp--preset--color--ink-inv);
	text-decoration: none;
	transition: background var(--gai-fast) var(--gai-ease);
}
a.gai-ledger__row:hover { background: rgba(255, 255, 255, 0.04); text-decoration: none; }

.gai-ledger__rank {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 15px;
	font-weight: 400;
	color: var(--wp--preset--color--ink-inv-2);
}
.gai-ledger__entity {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 16px;
	font-weight: 500;
	letter-spacing: -0.005em;
}
.gai-ledger__score,
.gai-ledger__delta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 15px;
	text-align: right;
}
.gai-ledger__delta--rise { color: var(--wp--preset--color--rise-inv); }
.gai-ledger__delta--fall { color: var(--wp--preset--color--fall-inv); }
.gai-ledger__delta--flat { color: var(--wp--preset--color--ink-inv-2); }

.gai-ledger__foot {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	padding-top: 14px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--ink-inv-2);
}
.gai-ledger__foot a { color: var(--wp--preset--color--ink-inv); }

/* Light hero — institutional positioning on paper, so the navy index
   explorer below it becomes the page's visual center of gravity. */
.gai-hero--light {
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
	border-bottom: 1px solid var(--wp--preset--color--rule);
}
.gai-hero--light h1 { color: var(--wp--preset--color--ink); }
.gai-hero--light .gai-eyebrow { color: var(--wp--preset--color--ink-3); }
.gai-hero--light .gai-deck { color: var(--wp--preset--color--ink-2); }
.gai-hero--light .gai-ledger { border-top-color: var(--wp--preset--color--rule-strong); }
.gai-hero--light .gai-ledger__head,
.gai-hero--light .gai-ledger__row { border-bottom-color: var(--wp--preset--color--rule); }
.gai-hero--light .gai-ledger__head { color: var(--wp--preset--color--ink-3); }
.gai-hero--light .gai-ledger__row { color: var(--wp--preset--color--ink); }
.gai-hero--light a.gai-ledger__row:hover { background: var(--wp--preset--color--surface-alt); }
.gai-hero--light .gai-ledger__rank { color: var(--wp--preset--color--ink-3); }
.gai-hero--light .gai-ledger__delta--rise { color: var(--wp--preset--color--rise); }
.gai-hero--light .gai-ledger__delta--fall { color: var(--wp--preset--color--fall); }
.gai-hero--light .gai-ledger__delta--flat { color: var(--wp--preset--color--ink-3); }
.gai-hero--light .gai-ledger__foot { color: var(--wp--preset--color--ink-3); border-top: 0; }
.gai-hero--light .gai-ledger__foot a { color: var(--wp--preset--color--accent); }
.gai-hero--light .gai-btn--ghost {
	color: var(--wp--preset--color--ink);
	border-color: var(--wp--preset--color--rule-strong);
}
.gai-hero--light .gai-btn--ghost:hover {
	background: transparent;
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--ink);
}

/* Editorial hero — used on articles, about, utility pages. */
.gai-hero--editorial {
	background: var(--wp--preset--color--paper);
	color: var(--wp--preset--color--ink);
	border-bottom: 1px solid var(--wp--preset--color--rule);
	padding-block: clamp(48px, 6vw, 88px);
}
.gai-hero--editorial .gai-hero__inner { grid-template-columns: 1fr; max-width: 1240px; }
.gai-hero--editorial h1 {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--h1);
	max-width: 20ch;
}

/* --------------------------------------------------------------------------
   6. Sections & section headers
   -------------------------------------------------------------------------- */

.gai-section { padding-block: clamp(64px, 10vw, 128px); }
.gai-section--dense { padding-block: clamp(56px, 8vw, 96px); }
.gai-section--alt { background: var(--wp--preset--color--surface-alt); }
.gai-section--ink { background: var(--wp--preset--color--ink-surface); color: var(--wp--preset--color--ink-inv); }
.gai-section--ink h2, .gai-section--ink h3 { color: var(--wp--preset--color--ink-inv); }

.gai-container { max-width: 1240px; margin-inline: auto; padding-inline: var(--gai-gutter); }
.gai-container--wide { max-width: 1440px; }
.gai-container--editorial { max-width: var(--gai-editorial); }
.gai-container--narrow { max-width: var(--gai-narrow); }

.gai-sectionhead { max-width: 1240px; margin-inline: auto; }
.gai-sectionhead h2 { margin: 0; max-width: 18ch; }
.gai-sectionhead--split {
	display: grid;
	gap: 24px;
	align-items: end;
	grid-template-columns: 1fr;
}
@media (min-width: 900px) {
	.gai-sectionhead--split { grid-template-columns: minmax(0, 1fr) auto; }
	.gai-sectionhead--split .gai-deck { margin-top: 0; }
}
.gai-sectionhead + * { margin-top: clamp(40px, 5vw, 72px); }

/* Inline "more" link with a rule above it. */
.gai-morelink {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 15px;
	font-weight: 500;
	color: var(--wp--preset--color--accent);
	text-decoration: none;
	white-space: nowrap;
}
.gai-morelink:hover { text-decoration: underline; }

/* --------------------------------------------------------------------------
   7. Editorial block — with optional score gutter (signature)
   -------------------------------------------------------------------------- */

.gai-editorial { display: grid; gap: clamp(32px, 4vw, 64px); }
@media (min-width: 1024px) {
	.gai-editorial--gutter { grid-template-columns: 200px minmax(0, var(--gai-editorial)); }
}

.gai-gutter { position: sticky; top: calc(var(--gai-header-h) + var(--gai-anchor-h) + 32px); align-self: start; }
.gai-gutter__item + .gai-gutter__item { margin-top: 24px; padding-top: 24px; border-top: 1px solid var(--wp--preset--color--rule); }
.gai-gutter__label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-3);
	margin: 0 0 6px;
}
.gai-gutter__value {
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--rank);
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--ink);
}

/* Findings: numbered essay blocks. Numbering is used only because the findings
   are published in a fixed, citable order. */
.gai-finding { padding-block: clamp(40px, 5vw, 56px); border-top: 1px solid var(--wp--preset--color--rule); }
.gai-finding:first-child { border-top: 0; padding-top: 0; }
.gai-finding__index {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	letter-spacing: 0.09em;
	color: var(--wp--preset--color--ink-3);
	margin: 0 0 12px;
}
.gai-finding h3 { margin: 0 0 24px; max-width: 24ch; }
.gai-finding p { max-width: 68ch; }
.gai-finding p + p { margin-top: 24px; }

/* --------------------------------------------------------------------------
   8. Cards — under-filled by policy. Two facts, not six.
   -------------------------------------------------------------------------- */

.gai-grid { display: grid; gap: 32px; }
.gai-grid--2 { grid-template-columns: 1fr; }
.gai-grid--3 { grid-template-columns: 1fr; }
.gai-grid--4 { grid-template-columns: 1fr; }

@media (min-width: 640px) {
	.gai-grid--2, .gai-grid--3, .gai-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.gai-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.gai-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 639px) { .gai-grid { gap: 20px; } }

.gai-card {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding-top: 20px;
	border-top: 1px solid var(--wp--preset--color--rule);
	text-decoration: none;
	transition: border-color var(--gai-fast) var(--gai-ease);
}
.gai-card:hover { border-top-color: var(--wp--preset--color--ink); text-decoration: none; }

.gai-card__meta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--ink-3);
}
.gai-card__title {
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--h4);
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: -0.005em;
	color: var(--wp--preset--color--ink);
	margin: 0;
	transition: color var(--gai-fast) var(--gai-ease);
}
.gai-card:hover .gai-card__title { color: var(--wp--preset--color--accent); }

/* Capability variant carries one sentence; insight and research variants do not. */
.gai-card--capability { padding: 32px; border: 1px solid var(--wp--preset--color--rule); border-radius: 0; background: var(--wp--preset--color--surface); }
.gai-card--capability:hover { border-color: var(--wp--preset--color--rule-strong); }
.gai-card--capability .gai-card__body {
	font-family: var(--wp--preset--font-family--serif);
	font-size: 16px;
	line-height: 1.6;
	color: var(--wp--preset--color--ink-2);
	margin: 0;
}
@media (max-width: 639px) { .gai-card--capability { padding: 24px; } }

/* Featured research — one item, image and copy. */
.gai-featured { display: grid; gap: clamp(32px, 4vw, 64px); align-items: center; }
@media (min-width: 900px) {
	.gai-featured { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); }
	.gai-featured--reverse .gai-featured__media { order: 2; }
}
.gai-featured__media { margin: 0; }
.gai-featured__media img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 0;
}
.gai-featured h3 { margin: 16px 0 0; max-width: 22ch; }

/* --------------------------------------------------------------------------
   9. Data modules — rankings table, tabs, stat band
   -------------------------------------------------------------------------- */

.gai-tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.gai-table {
	width: 100%;
	border-collapse: collapse;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 15px;
	min-width: 640px;
}
.gai-table caption {
	caption-side: top;
	text-align: left;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--ink-3);
	padding-bottom: 16px;
}
.gai-table th,
.gai-table td {
	padding: 14px 16px;
	text-align: left;
	border-bottom: 1px solid var(--wp--preset--color--rule);
	vertical-align: baseline;
}
.gai-table thead th {
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-3);
	border-bottom: 1px solid var(--wp--preset--color--rule-strong);
	white-space: nowrap;
}
.gai-table tbody tr:nth-child(even) { background: var(--wp--preset--color--surface); }
.gai-table td.is-numeric,
.gai-table th.is-numeric { text-align: right; }
.gai-table .gai-entity {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 16px;
	font-weight: 500;
}
.gai-table .gai-delta--rise { color: var(--wp--preset--color--rise); }
.gai-table .gai-delta--fall { color: var(--wp--preset--color--fall); }
.gai-table .gai-delta--flat { color: var(--wp--preset--color--flat); }

.gai-table__sort {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: none;
	border: 0;
	padding: 0;
	font: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
	color: inherit;
	cursor: pointer;
}
.gai-table__sort:hover { color: var(--wp--preset--color--ink); }
.gai-table__sort::after { content: "↕"; opacity: 0.5; }
th[aria-sort="ascending"] .gai-table__sort::after { content: "↑"; opacity: 1; }
th[aria-sort="descending"] .gai-table__sort::after { content: "↓"; opacity: 1; }
th[aria-sort] .gai-table__sort { color: var(--wp--preset--color--accent); }

/* Tabs — regional analysis */
.gai-tabs__list {
	display: flex;
	gap: 4px;
	overflow-x: auto;
	border-bottom: 1px solid var(--wp--preset--color--rule);
	scrollbar-width: none;
}
.gai-tabs__list::-webkit-scrollbar { display: none; }
.gai-tabs__tab {
	flex: 0 0 auto;
	padding: 14px 16px;
	background: none;
	border: 0;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 15px;
	font-weight: 500;
	color: var(--wp--preset--color--ink-3);
	white-space: nowrap;
	cursor: pointer;
	transition: color var(--gai-fast) var(--gai-ease), border-color var(--gai-fast) var(--gai-ease);
}
.gai-tabs__tab:hover { color: var(--wp--preset--color--ink); }
.gai-tabs__tab[aria-selected="true"] { color: var(--wp--preset--color--accent); border-bottom-color: var(--wp--preset--color--accent); }
.gai-tabs__panel { padding-top: 40px; }
.gai-tabs__panel[hidden] { display: none; }

/* Stat band — figures, never counters. */
.gai-stats { display: grid; gap: 1px; background: var(--wp--preset--color--rule-inv); border-block: 1px solid var(--wp--preset--color--rule-inv); }
@media (min-width: 640px) { .gai-stats { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .gai-stats--4 { grid-template-columns: repeat(4, 1fr); } .gai-stats--3 { grid-template-columns: repeat(3, 1fr); } }
.gai-stat { background: var(--wp--preset--color--ink-surface); padding: 32px 24px; }
.gai-stat__figure {
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(32px, 4vw, 44px);
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--ink-inv);
	margin: 0 0 12px;
}
.gai-stat__label {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 15px;
	line-height: 1.45;
	color: var(--wp--preset--color--ink-inv-2);
	margin: 0;
	max-width: 24ch;
}

/* --------------------------------------------------------------------------
   10. Quote — no ornament
   -------------------------------------------------------------------------- */

.gai-quote { border: 0; margin: 0; padding-left: 24px; border-left: 1px solid var(--wp--preset--color--rule-strong); max-width: 46ch; }
.gai-quote p {
	font-family: var(--wp--preset--font-family--serif);
	font-size: var(--wp--preset--font-size--deck);
	line-height: 1.45;
	margin: 0;
}
.gai-quote figcaption,
.gai-quote cite {
	display: block;
	margin-top: 24px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-style: normal;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--ink-3);
}

/* --------------------------------------------------------------------------
   11. Download list
   -------------------------------------------------------------------------- */

.gai-downloads { border-top: 1px solid var(--wp--preset--color--rule); }
.gai-download {
	display: grid;
	gap: 8px 24px;
	grid-template-columns: 1fr;
	align-items: baseline;
	padding: 24px 0;
	border-bottom: 1px solid var(--wp--preset--color--rule);
}
@media (min-width: 768px) {
	.gai-download { grid-template-columns: 72px minmax(0, 1fr) auto auto; }
}
.gai-download__year { font-family: var(--wp--preset--font-family--mono); font-size: 15px; color: var(--wp--preset--color--ink-3); }
.gai-download__title { font-family: var(--wp--preset--font-family--sans); font-size: var(--wp--preset--font-size--h4); font-weight: 600; margin: 0; }
.gai-download__meta { font-family: var(--wp--preset--font-family--mono); font-size: 12px; letter-spacing: 0.04em; color: var(--wp--preset--color--ink-3); }
.gai-download__action { font-family: var(--wp--preset--font-family--sans); font-size: 15px; font-weight: 500; color: var(--wp--preset--color--accent); text-decoration: none; }
.gai-download__action:hover { text-decoration: underline; }

/* --------------------------------------------------------------------------
   12. Forms
   -------------------------------------------------------------------------- */

.gai-form { display: grid; gap: 24px; }
@media (min-width: 768px) { .gai-form--2col { grid-template-columns: repeat(2, minmax(0, 1fr)); } .gai-field--full { grid-column: 1 / -1; } }

.gai-field { display: flex; flex-direction: column; gap: 8px; }
.gai-field label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-2);
}
.gai-field .req { color: var(--wp--preset--color--fall); }
.gai-field input,
.gai-field select,
.gai-field textarea {
	width: 100%;
	padding: 13px 14px;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 16px;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--surface);
	border: 1px solid var(--wp--preset--color--rule-strong);
	border-radius: 2px;
	transition: border-color var(--gai-fast) var(--gai-ease);
}
.gai-field input:focus,
.gai-field select:focus,
.gai-field textarea:focus { border-color: var(--wp--preset--color--accent); }
.gai-field textarea { resize: vertical; min-height: 140px; line-height: 1.55; }
.gai-split__aside dd a { color: var(--wp--preset--color--accent); text-decoration: none; }
.gai-split__aside dd a:hover { text-decoration: underline; }
.gai-field__hint { font-family: var(--wp--preset--font-family--mono); font-size: 12px; color: var(--wp--preset--color--ink-3); }

.gai-consent { display: flex; gap: 12px; align-items: flex-start; }
.gai-consent input { width: 18px; height: 18px; margin-top: 3px; flex: 0 0 auto; }
.gai-consent label { font-family: var(--wp--preset--font-family--serif); font-size: 16px; text-transform: none; letter-spacing: 0; line-height: 1.5; color: var(--wp--preset--color--ink-2); }

/* --------------------------------------------------------------------------
   13. CTA band
   -------------------------------------------------------------------------- */

.gai-cta {
	background: var(--wp--preset--color--surface-alt);
	color: var(--wp--preset--color--ink);
	border-top: 1px solid var(--wp--preset--color--rule);
	padding-block: clamp(64px, 8vw, 112px);
}
.gai-cta__inner { display: grid; gap: 32px; align-items: end; max-width: 1240px; margin-inline: auto; padding-inline: var(--gai-gutter); }
@media (min-width: 900px) { .gai-cta__inner { grid-template-columns: minmax(0, 1fr) auto; } }
.gai-cta h2 { color: var(--wp--preset--color--ink); font-size: var(--wp--preset--font-size--h1); line-height: 1.08; letter-spacing: -0.018em; margin: 0; max-width: 16ch; }

/* --------------------------------------------------------------------------
   14. Article
   -------------------------------------------------------------------------- */

.gai-article__head { border-bottom: 1px solid var(--wp--preset--color--rule); padding-block: clamp(40px, 5vw, 72px); }
.gai-article__meta { display: flex; flex-wrap: wrap; gap: 20px; font-family: var(--wp--preset--font-family--mono); font-size: 12px; letter-spacing: 0.04em; color: var(--wp--preset--color--ink-3); }
.gai-article__body { padding-block: clamp(48px, 6vw, 80px); }
.gai-article__body > * { max-width: var(--gai-editorial); margin-inline: auto; }
.gai-article__body > .alignwide { max-width: 1024px; }
.gai-article__body > .alignfull { max-width: none; }
.gai-article__body h2 { margin-top: 72px; margin-bottom: 24px; }
.gai-article__body h3 { margin-top: 56px; margin-bottom: 16px; }
.gai-article__body figure { margin-block: 48px; }
.gai-article__body figure img { width: 100%; height: auto; border-radius: 0; }

/* --------------------------------------------------------------------------
   15. Footer
   -------------------------------------------------------------------------- */

.gai-footer { background: var(--wp--preset--color--ink-surface); color: var(--wp--preset--color--ink-inv-2); padding-block: clamp(56px, 7vw, 96px) 40px; }
.gai-footer__inner { max-width: 1240px; margin-inline: auto; padding-inline: var(--gai-gutter); }
.gai-footer__top { display: grid; gap: 48px; }
@media (min-width: 900px) { .gai-footer__top { grid-template-columns: minmax(0, 2fr) 1fr 1fr minmax(0, 1.4fr); } }

.gai-footer h2, .gai-footer p, .gai-footer address { margin: 0; }
.gai-footer__brand .gai-brand__name { color: var(--wp--preset--color--ink-inv); }
.gai-footer__position { font-family: var(--wp--preset--font-family--serif); font-size: 16px; line-height: 1.6; color: var(--wp--preset--color--ink-inv-2); margin-top: 16px; max-width: 30ch; }

.gai-footer__heading {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-inv-2);
	margin: 0 0 20px;
}
.gai-footer ul { list-style: none; margin: 0; padding: 0; }
.gai-footer li + li { margin-top: 12px; }
.gai-footer a { font-family: var(--wp--preset--font-family--sans); font-size: 15px; color: var(--wp--preset--color--ink-inv); text-decoration: none; }
.gai-footer a:hover { color: var(--wp--preset--color--ink-inv); text-decoration: underline; }
.gai-footer address { font-family: var(--wp--preset--font-family--mono); font-size: 13px; font-style: normal; line-height: 1.7; color: var(--wp--preset--color--ink-inv-2); }

.gai-footer__disclaimer {
	margin-top: clamp(48px, 6vw, 72px);
	padding-top: 24px;
	border-top: 1px solid var(--wp--preset--color--rule-inv);
}
.gai-footer__disclaimer p {
	max-width: 88ch;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 12px;
	line-height: 1.65;
	color: var(--wp--preset--color--ink-inv-2);
	margin: 0;
}

.gai-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 16px 32px;
	margin-top: 24px;
	padding-top: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--ink-inv-2);
}
.gai-footer__legal { display: flex; flex-wrap: wrap; gap: 20px; }
.gai-footer__legal a { font-family: var(--wp--preset--font-family--mono); font-size: 12px; }

/* --------------------------------------------------------------------------
   16. Core block integration
   Specificity is bumped one class above theme.json element styles so a card
   title stays a card title wherever core decides to render it.
   -------------------------------------------------------------------------- */

.gai-card .gai-card__title,
.gai-card h2.gai-card__title,
.gai-card h3.gai-card__title {
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--h4);
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: -0.005em;
	margin: 0;
}
.gai-card .gai-card__title a {
	color: inherit;
	text-decoration: none;
}
.gai-card:hover .gai-card__title a { color: var(--wp--preset--color--accent); }

.gai-card .gai-card__meta,
.gai-card time {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--ink-3);
}

/* Query loop lists carry the grid; strip the list chrome. */
.wp-block-post-template.gai-grid {
	list-style: none;
	margin: 0;
	padding: 0;
}
.wp-block-post-template.gai-grid > li { margin: 0; }

/* Post title inside the editorial hero is an H1 and already sized there. */
.gai-hero--editorial .wp-block-post-title { margin: 0; }

/* Excerpt used as a deck. */
.gai-article__head .gai-deck,
.gai-article__head .wp-block-post-excerpt__excerpt {
	font-family: var(--wp--preset--font-family--serif);
	font-size: var(--wp--preset--font-size--deck);
	line-height: 1.45;
	color: var(--wp--preset--color--ink-2);
	max-width: 34em;
}
.gai-article__head .wp-block-post-excerpt { margin: 24px 0 32px; }

.gai-article__head .gai-eyebrow a,
.gai-eyebrow a { color: inherit; text-decoration: none; }
.gai-eyebrow a:hover { color: var(--wp--preset--color--accent); }

.gai-article__meta > * { margin: 0; }

.gai-article__body { padding-inline: var(--gai-gutter); }
.gai-article__body .wp-block-post-featured-image img { border-radius: 0; width: 100%; height: auto; }

/* Pagination */
.gai-pagination {
	margin-top: clamp(48px, 6vw, 72px);
	padding-top: 24px;
	border-top: 1px solid var(--wp--preset--color--rule);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
}
.gai-pagination a { color: var(--wp--preset--color--ink); text-decoration: none; }
.gai-pagination a:hover { color: var(--wp--preset--color--accent); text-decoration: underline; }
.gai-pagination .page-numbers.current { color: var(--wp--preset--color--accent); }

/* Block style variations registered in functions.php */
.wp-block-group.is-style-gai-alt { background: var(--wp--preset--color--surface-alt); }
.wp-block-group.is-style-gai-ink { background: var(--wp--preset--color--ink-surface); color: var(--wp--preset--color--ink-inv); }
.wp-block-separator.is-style-gai-hairline {
	border: 0;
	border-top: 1px solid var(--wp--preset--color--rule);
	opacity: 1;
	max-width: none;
}
.wp-block-image.is-style-gai-square-edge img { border-radius: 0; }
.wp-block-quote.is-style-gai-quote {
	border-left: 1px solid var(--wp--preset--color--rule-strong);
	padding-left: 24px;
	max-width: 46ch;
}
.wp-block-quote.is-style-gai-quote cite {
	display: block;
	margin-top: 24px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-style: normal;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--ink-3);
}

/* Editor parity: the canvas should not fight the front end. */
.editor-styles-wrapper .gai-section { padding-block: clamp(48px, 8vw, 96px); }

/* --------------------------------------------------------------------------
   17. World map — globe and flat projection
   Ink surface. The only saturated colour is the score ramp, and the ramp is
   a single-hue ladder so it reads as a scale rather than as a category set.
   -------------------------------------------------------------------------- */

.gai-map {
	--band-1: #16304E;
	--band-2: #234C77;
	--band-3: #35709F;
	--band-4: #6C9AC4;
	--band-5: #AEC8E2;
	--band-none: #17293F;
	position: relative;
}

.gai-map__layout { display: grid; gap: clamp(32px, 4vw, 56px); align-items: start; }
@media (min-width: 1024px) {
	.gai-map__layout { grid-template-columns: minmax(0, 1fr) 340px; }
}

.gai-map__stage { position: relative; }

.gai-globe__svg {
	display: block;
	width: 100%;
	height: auto;
	max-width: 640px;
	margin-inline: auto;
	touch-action: none;
	cursor: grab;
}
.gai-map.is-dragging .gai-globe__svg { cursor: grabbing; }
.gai-map[data-mode="flat"] .gai-globe__svg { cursor: default; max-width: 100%; }
.gai-map[data-mode="flat"] .gai-map__legend { justify-content: flex-start; }

.gai-globe__sphere { fill: #0F2039; stroke: var(--wp--preset--color--rule-inv); stroke-width: 1; }
.gai-globe__graticule { fill: none; stroke: var(--wp--preset--color--rule-inv); stroke-width: 1; }

.gai-globe__country {
	fill: var(--band-none);
	stroke: var(--wp--preset--color--ink-surface);
	stroke-width: 0.5;
	transition: fill var(--gai-fast) var(--gai-ease), opacity var(--gai-fast) var(--gai-ease);
}
.gai-globe__country[data-band="1"] { fill: var(--band-1); }
.gai-globe__country[data-band="2"] { fill: var(--band-2); }
.gai-globe__country[data-band="3"] { fill: var(--band-3); }
.gai-globe__country[data-band="4"] { fill: var(--band-4); }
.gai-globe__country[data-band="5"] { fill: var(--band-5); }
.gai-globe__country:hover { fill: var(--wp--preset--color--ink-inv); }
.gai-globe__country.is-selected { fill: var(--wp--preset--color--ink-inv); stroke: var(--wp--preset--color--ink-inv); stroke-width: 1; }
.gai-globe__country.is-dimmed { opacity: 0.22; }

/* --- controls ------------------------------------------------------------ */

.gai-map__controls {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 24px;
	margin-bottom: 32px;
	padding-bottom: 20px;
	border-bottom: 1px solid var(--wp--preset--color--rule-inv);
}

.gai-map__modes { display: inline-flex; gap: 2px; }
.gai-map__mode {
	padding: 8px 14px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-inv-2);
	background: transparent;
	border: 1px solid var(--wp--preset--color--rule-inv);
	border-radius: 2px;
	cursor: pointer;
	transition: color var(--gai-fast) var(--gai-ease), border-color var(--gai-fast) var(--gai-ease);
}
.gai-map__mode:hover { color: var(--wp--preset--color--ink-inv); }
.gai-map__mode[aria-pressed="true"] {
	color: var(--wp--preset--color--ink-inv);
	border-color: var(--wp--preset--color--ink-inv-2);
	background: rgba(255, 255, 255, 0.06);
}

.gai-map__select {
	min-width: 260px;
	padding: 10px 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--ink-inv);
	background: var(--wp--preset--color--ink-surface-2);
	border: 1px solid var(--wp--preset--color--rule-inv);
	border-radius: 2px;
}
.gai-map__select:focus { border-color: var(--wp--preset--color--ink-inv-2); }

.gai-map__regions { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 28px; }
.gai-map__region {
	padding: 7px 12px;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 13px;
	color: var(--wp--preset--color--ink-inv-2);
	background: transparent;
	border: 1px solid transparent;
	border-radius: 2px;
	cursor: pointer;
	transition: color var(--gai-fast) var(--gai-ease), background var(--gai-fast) var(--gai-ease);
}
.gai-map__region:hover { color: var(--wp--preset--color--ink-inv); }
.gai-map__region[aria-pressed="true"] {
	color: var(--wp--preset--color--ink-inv);
	background: rgba(255, 255, 255, 0.08);
}

/* --- legend -------------------------------------------------------------- */

.gai-map__legend { display: flex; align-items: center; gap: 12px; margin-top: 24px; }
.gai-map__ramp { display: flex; }
.gai-map__ramp span { width: 34px; height: 8px; }
.gai-map__legend-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-inv-2);
}

/* --- detail panel -------------------------------------------------------- */

.gai-map__panel {
	padding: 26px 28px;
	background: var(--wp--preset--color--ink-surface-2);
	border: 1px solid var(--wp--preset--color--rule-inv);
	border-radius: 2px;
}
.gai-globe__name {
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--h3);
	font-weight: 600;
	line-height: 1.2;
	color: var(--wp--preset--color--ink-inv);
	margin: 0 0 24px;
}
.gai-globe__headline {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	padding-block: 20px;
	border-block: 1px solid var(--wp--preset--color--rule-inv);
}
.gai-globe__label {
	display: block;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-inv-2);
	margin-bottom: 8px;
}
.gai-globe__figure {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 26px;
	font-weight: 300;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--ink-inv);
	font-variant-numeric: tabular-nums;
}
.gai-globe__figure--rise { color: var(--wp--preset--color--rise-inv); }
.gai-globe__figure--fall { color: var(--wp--preset--color--fall-inv); }

.gai-globe__pillars { margin-top: 24px; }
.gai-globe__pillar {
	display: grid;
	grid-template-columns: 96px 1fr 42px;
	align-items: center;
	gap: 12px;
	padding: 9px 0;
}
.gai-globe__pillar-name {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 13px;
	color: var(--wp--preset--color--ink-inv-2);
}
.gai-globe__bar { display: block; height: 3px; background: var(--wp--preset--color--rule-inv); }
.gai-globe__bar > span { display: block; height: 3px; background: var(--band-4); }
.gai-globe__pillar-score {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	text-align: right;
	color: var(--wp--preset--color--ink-inv);
	font-variant-numeric: tabular-nums;
}
.gai-globe__note {
	margin-top: 20px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	line-height: 1.5;
	color: var(--wp--preset--color--ink-inv-2);
}
.gai-globe__more { margin-top: 20px; }
.gai-globe__more a {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 14px;
	color: var(--wp--preset--color--ink-inv);
	text-decoration: none;
}
.gai-globe__more a:hover { text-decoration: underline; }

/* --- tooltip ------------------------------------------------------------- */

.gai-map__tooltip[hidden] { display: none; }

.gai-map__tooltip {
	position: absolute;
	z-index: 5;
	transform: translate(12px, -50%);
	display: flex;
	align-items: baseline;
	gap: 10px;
	padding: 7px 11px;
	background: var(--wp--preset--color--ink-inv);
	color: var(--wp--preset--color--ink);
	border-radius: 2px;
	pointer-events: none;
	white-space: nowrap;
}
.gai-globe__tip-rank,
.gai-globe__tip-score {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-variant-numeric: tabular-nums;
	color: var(--wp--preset--color--ink-2);
}
.gai-globe__tip-name { font-family: var(--wp--preset--font-family--sans); font-size: 14px; font-weight: 500; }

/* --- states -------------------------------------------------------------- */

.gai-map__fallback {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--ink-inv-2);
}
.gai-map:not(.is-ready) .gai-map__stage { min-height: 320px; }
.gai-map__error[hidden] { display: none; }
.gai-map__error {
	padding: 24px;
	border: 1px solid var(--wp--preset--color--rule-inv);
	border-radius: 2px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	line-height: 1.6;
	color: var(--wp--preset--color--ink-inv-2);
}
.gai-map.is-unavailable .gai-map__stage,
.gai-map.is-unavailable .gai-map__panel,
.gai-map.is-unavailable .gai-map__regions,
.gai-map.is-unavailable .gai-map__controls { display: none; }

@media (max-width: 1023px) {
	.gai-map__panel { min-height: 0; }
	.gai-map__select { min-width: 0; width: 100%; }
	.gai-map__controls { gap: 12px; }
}
@media (max-width: 639px) {
	.gai-globe__headline { grid-template-columns: repeat(3, 1fr); gap: 8px; }
	.gai-globe__figure { font-size: 22px; }
	.gai-map__tooltip { display: none; }
}

/* --------------------------------------------------------------------------
   18. Index explorer — map, ranked table and selector as one instrument
   -------------------------------------------------------------------------- */

.gai-explorer-section { padding-block: clamp(64px, 9vw, 120px); }

.gai-explorer__intro {
	display: grid;
	gap: 24px;
	align-items: end;
	margin-bottom: clamp(32px, 4vw, 48px);
}
@media (min-width: 1024px) {
	.gai-explorer__intro { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 56px; }
	.gai-explorer__intro .gai-deck { margin-top: 0; }
}
.gai-explorer__intro h2 { color: var(--wp--preset--color--ink-inv); max-width: 16ch; }

.gai-explorer__grid { display: grid; gap: clamp(32px, 3vw, 48px); align-items: start; }
@media (min-width: 1100px) {
	.gai-explorer__grid { grid-template-columns: minmax(0, 7fr) minmax(360px, 5fr); }
}

.gai-explorer__side { display: flex; flex-direction: column; gap: 20px; }

.gai-explorer__table {
	max-height: 356px;
	overflow-y: auto;
	overscroll-behavior: contain;
	border: 1px solid var(--wp--preset--color--rule-inv);
	border-radius: 2px;
	scrollbar-width: thin;
}
.gai-explorer__table::-webkit-scrollbar { width: 8px; }
.gai-explorer__table::-webkit-scrollbar-thumb { background: var(--wp--preset--color--rule-inv); }

.gai-table--compact { min-width: 0; width: 100%; }
.gai-table--compact caption { padding: 0; }
.gai-table--compact thead th {
	position: sticky;
	top: 0;
	z-index: 1;
	padding: 12px 14px;
	background: var(--wp--preset--color--ink-surface-2);
	color: var(--wp--preset--color--ink-inv-2);
	border-bottom: 1px solid var(--wp--preset--color--rule-inv);
}
.gai-table--compact tbody tr { cursor: pointer; }
.gai-table--compact tbody tr:nth-child(even) { background: transparent; }
.gai-table--compact td,
.gai-table--compact th[scope="row"] {
	padding: 11px 14px;
	border-bottom: 1px solid var(--wp--preset--color--rule-inv);
	color: var(--wp--preset--color--ink-inv);
}
.gai-table--compact .gai-ledger__rank { color: var(--wp--preset--color--ink-inv-2); }
.gai-table--compact .gai-entity { font-weight: 500; }
.gai-table--compact .gai-delta--rise { color: var(--wp--preset--color--rise-inv); }
.gai-table--compact .gai-delta--fall { color: var(--wp--preset--color--fall-inv); }
.gai-table--compact .gai-delta--flat { color: var(--wp--preset--color--ink-inv-2); }

.gai-table--compact tbody tr.is-hover { background: rgba(255, 255, 255, 0.06); }
.gai-table--compact tbody tr.is-selected {
	background: var(--wp--preset--color--ink-inv);
}
.gai-table--compact tbody tr.is-selected td,
.gai-table--compact tbody tr.is-selected th { color: var(--wp--preset--color--ink); }
.gai-table--compact tbody tr.is-selected .gai-ledger__rank { color: var(--wp--preset--color--ink-2); }
.gai-table--compact tbody tr:focus-visible { outline: 2px solid var(--wp--preset--color--ink-inv); outline-offset: -2px; }

.gai-globe__country.is-hover { fill: var(--wp--preset--color--ink-inv); }

.gai-explorer__loading,
.gai-explorer__more {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--ink-inv-2);
}
.gai-explorer__loading { padding: 20px 14px; }
.gai-explorer__more a { color: var(--wp--preset--color--ink-inv); text-decoration: none; }
.gai-explorer__more a:hover { text-decoration: underline; }

.gai-explorer__footnote a {
	color: var(--wp--preset--color--ink-inv);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.gai-explorer__footnote a:hover { color: var(--wp--preset--color--ink-inv); text-decoration-thickness: 2px; }

.gai-explorer__footnote {
	margin-top: 32px;
	padding-top: 20px;
	border-top: 1px solid var(--wp--preset--color--rule-inv);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	line-height: 1.6;
	color: var(--wp--preset--color--ink-inv-2);
}

@media (max-width: 1099px) {
	.gai-explorer__table { max-height: 319px; }
}

/* --------------------------------------------------------------------------
   19. Research presentation — report covers and typed research items
   -------------------------------------------------------------------------- */

.gai-research { display: grid; gap: clamp(40px, 5vw, 72px); align-items: start; }
@media (min-width: 1024px) {
	.gai-research { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
}

.gai-report { display: grid; gap: clamp(24px, 3vw, 40px); }
@media (min-width: 640px) {
	.gai-report { grid-template-columns: minmax(0, 230px) minmax(0, 1fr); align-items: start; }
}
.gai-report__cover { margin: 0; }
.gai-report__cover img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border: 1px solid var(--wp--preset--color--rule);
	transition: transform var(--gai-base) var(--gai-ease);
}
.gai-report a:hover .gai-report__cover img { transform: scale(1.015); }

.gai-type {
	display: inline-block;
	padding: 4px 9px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent);
	border: 1px solid var(--wp--preset--color--accent-weak);
	background: var(--wp--preset--color--accent-weak);
	border-radius: 2px;
}
.gai-type--index { color: var(--wp--preset--color--ink); background: transparent; border-color: var(--wp--preset--color--rule-strong); }
.gai-type--method { color: var(--wp--preset--color--ink-2); background: transparent; border-color: var(--wp--preset--color--rule); }

.gai-report__title {
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--h3);
	font-weight: 600;
	line-height: 1.22;
	letter-spacing: -0.012em;
	margin: 16px 0 0;
	max-width: 22ch;
}
.gai-report__abstract {
	font-family: var(--wp--preset--font-family--serif);
	font-size: 17px;
	line-height: 1.6;
	color: var(--wp--preset--color--ink-2);
	margin: 16px 0 0;
	max-width: 46ch;
}
.gai-report__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 18px;
	margin-top: 20px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-3);
}
.gai-report__actions { margin-top: 28px; }

/* Secondary research list — typed rows, not another card grid. */
.gai-reslist { border-top: 1px solid var(--wp--preset--color--rule); }
.gai-reslist__item {
	display: block;
	padding: 22px 0;
	border-bottom: 1px solid var(--wp--preset--color--rule);
	text-decoration: none;
}
.gai-reslist__item:hover { text-decoration: none; }
.gai-reslist__head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.gai-reslist__date {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--ink-3);
}
.gai-reslist__title {
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--h4);
	font-weight: 600;
	line-height: 1.32;
	color: var(--wp--preset--color--ink);
	margin: 0;
	transition: color var(--gai-fast) var(--gai-ease);
}
.gai-reslist__item:hover .gai-reslist__title { color: var(--wp--preset--color--accent); }

/* --------------------------------------------------------------------------
   20. Editorial split — 2/3 + 1/3 with a sticky aside
   -------------------------------------------------------------------------- */

.gai-split { display: grid; gap: clamp(32px, 4vw, 64px); align-items: start; }
@media (min-width: 1024px) {
	.gai-split { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
	.gai-split__aside { position: sticky; top: calc(var(--gai-header-h) + 40px); }
}
.gai-split__aside {
	padding-top: 20px;
	border-top: 1px solid var(--wp--preset--color--rule-strong);
}
.gai-split__aside dt {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-3);
	margin-top: 24px;
}
.gai-split__aside dd {
	margin: 6px 0 0;
	font-family: var(--wp--preset--font-family--serif);
	font-size: 16px;
	line-height: 1.55;
	color: var(--wp--preset--color--ink-2);
}

/* Numbered editorial list — replaces a four-card pillar grid. */
.gai-pillars { border-top: 1px solid var(--wp--preset--color--rule); }
.gai-pillar {
	display: grid;
	gap: 8px 32px;
	padding: 28px 0;
	border-bottom: 1px solid var(--wp--preset--color--rule);
}
@media (min-width: 768px) {
	.gai-pillar { grid-template-columns: 56px minmax(0, 260px) minmax(0, 1fr); align-items: baseline; }
}
.gai-pillar__num {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--ink-3);
	font-variant-numeric: tabular-nums;
}
.gai-pillar__name {
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--h4);
	font-weight: 600;
	letter-spacing: -0.005em;
	margin: 0;
}
.gai-pillar__body {
	font-family: var(--wp--preset--font-family--serif);
	font-size: 17px;
	line-height: 1.6;
	color: var(--wp--preset--color--ink-2);
	margin: 0;
	max-width: 56ch;
}
