/*
 * SOGLIA Core blocks (front end and editor).
 *
 * Colours and fonts come from the theme presets; every value has a fallback so
 * the blocks also look right under another theme. Rules are scoped to
 * .sg-block so they keep winning over generic content styles (lists, images,
 * tables, form fields) when a block sits inside post content.
 */

.sg-block {
	--sg-navy: var(--wp--preset--color--navy, #242d4b);
	--sg-navy-700: var(--wp--preset--color--navy-700, #313c63);
	--sg-navy-900: var(--wp--preset--color--navy-900, #1b2239);
	--sg-navy-950: var(--wp--preset--color--navy-950, #121829);
	--sg-navy-50: var(--wp--preset--color--navy-50, #eef0f6);
	--sg-gold: var(--wp--preset--color--gold, #c5a576);
	--sg-gold-600: var(--wp--preset--color--gold-600, #b08e5c);
	--sg-gold-soft: var(--wp--preset--color--gold-soft, #e5d7bd);
	--sg-gold-ink: var(--wp--preset--color--gold-ink, #8a6c3e);
	--sg-ink: var(--wp--preset--color--ink, #2c2d2f);
	--sg-text: var(--wp--preset--color--text, #4a4f55);
	--sg-muted: var(--wp--preset--color--muted, #6b7177);
	--sg-surface: var(--wp--preset--color--surface, #f3f5f9);
	--sg-paper: var(--wp--preset--color--paper, #f9fafb);
	--sg-line: var(--wp--preset--color--line, #e4e6ec);
	--sg-white: var(--wp--preset--color--white, #ffffff);
	--sg-font-head: var(--wp--preset--font-family--heading, "Rajdhani", system-ui, sans-serif);
	--sg-font-serif: var(--wp--preset--font-family--serif, "Cambo", Georgia, serif);
	--sg-font-body: var(--wp--preset--font-family--body, "Roboto", system-ui, -apple-system, "Segoe UI", sans-serif);
	--sg-radius: 14px;
	--sg-shadow: 0 1px 2px rgba(18, 24, 41, 0.04), 0 10px 28px -10px rgba(18, 24, 41, 0.16);
	--sg-shadow-lg: 0 2px 4px rgba(18, 24, 41, 0.04), 0 24px 48px -16px rgba(18, 24, 41, 0.28);

	box-sizing: border-box;
	max-width: 100%;
	color: var(--sg-text);
	font-family: var(--sg-font-body);
	line-height: 1.6;
}

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

.sg-block [hidden] {
	display: none !important;
}

.sg-block img {
	display: block;
	max-width: 100%;
}

.sg-block :focus-visible {
	outline: 2px solid var(--sg-navy);
	outline-offset: 3px;
	border-radius: 4px;
}

.sg-block .sg-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.sg-block .sg-icon {
	width: 1.1em;
	height: 1.1em;
	flex: none;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.7;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* Honorific (M∴W∴G∴M∴ and the like) set small before a name. */
.sg-block .sg-hon {
	margin-right: 4px;
	color: var(--sg-muted);
	font: 600 0.62em/1 var(--sg-font-head);
	letter-spacing: 0.16em;
	vertical-align: 0.18em;
}

/* Badge shown when a record has no image. */
.sg-block .sg-initials {
	display: grid;
	place-items: center;
	background: var(--sg-navy-50);
	color: var(--sg-navy);
	font: 700 1.1rem/1 var(--sg-font-head);
	letter-spacing: 0.06em;
}

.sg-block .sg-group-label {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: clamp(40px, 5vw, 56px) 0 20px;
	color: var(--sg-muted);
	font: 600 0.82rem/1 var(--sg-font-head);
	letter-spacing: 0.22em;
	text-transform: uppercase;
}

.sg-block .sg-group-label::after {
	content: "";
	flex: 1;
	height: 1px;
	background: var(--sg-line);
}

.sg-block .sg-group-label--flush {
	margin-top: 0;
}

.sg-block .sg-role {
	display: block;
	color: var(--sg-gold-ink);
	font: 600 0.76rem/1.35 var(--sg-font-head);
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

.sg-block .sg-ctry {
	display: block;
	margin-top: 2px;
	color: var(--sg-muted);
	font-size: 0.86rem;
}

/* ---------- Stats ---------- */

.sg-block.sg-stats {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	margin: 0;
	border-top: 1px solid var(--sg-stats-line);
}

.sg-block.sg-stats--dark {
	--sg-stats-num: #fff;
	--sg-stats-label: rgba(255, 255, 255, 0.7);
	--sg-stats-line: rgba(255, 255, 255, 0.14);
}

.sg-block.sg-stats--light {
	--sg-stats-num: var(--sg-navy);
	--sg-stats-label: var(--sg-muted);
	--sg-stats-line: var(--sg-line);
}

.sg-block.sg-stats--dark :focus-visible {
	outline-color: #fff;
}

.sg-block .sg-stat {
	display: flex;
	flex-direction: column-reverse;
	gap: 6px;
	margin: 0;
	padding: 30px 28px 34px;
	border-left: 1px solid var(--sg-stats-line);
}

.sg-block .sg-stat:first-child {
	padding-left: 0;
	border-left: 0;
}

.sg-block .sg-stat__value {
	margin: 0;
	color: var(--sg-stats-num);
	font: 700 clamp(2.2rem, 4vw, 3.1rem)/1 var(--sg-font-head);
	letter-spacing: 0.01em;
}

.sg-block .sg-stat__label {
	margin: 0;
	color: var(--sg-stats-label);
	font: 600 0.76rem/1.3 var(--sg-font-head);
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

/* ---------- Grand Lodge directory ---------- */

.sg-block .sg-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-bottom: 22px;
}

.sg-block .sg-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.sg-block .sg-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 9px 16px;
	border: 1px solid var(--sg-line);
	border-radius: 999px;
	background: var(--sg-white);
	color: var(--sg-text);
	font: 600 0.84rem/1 var(--sg-font-head);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color 0.2s, color 0.2s, border-color 0.2s;
}

.sg-block .sg-chip:hover,
.sg-block .sg-chip[aria-pressed="true"]:hover {
	border-color: var(--sg-navy);
	background: var(--sg-navy);
	color: var(--sg-white);
}

.sg-block .sg-chip[aria-pressed="true"] {
	border-color: var(--sg-gold);
	background: var(--sg-gold);
	color: var(--sg-navy);
}

.sg-block .sg-chip__n {
	font-weight: 700;
	opacity: 0.65;
}

.sg-block .sg-search {
	position: relative;
	display: block;
	flex: 0 1 300px;
	margin: 0 0 0 auto;
	padding: 0;
	font: inherit;
	letter-spacing: normal;
	text-transform: none;
}

.sg-block .sg-search .sg-icon {
	position: absolute;
	top: 50%;
	left: 14px;
	color: var(--sg-muted);
	transform: translateY(-50%);
	pointer-events: none;
}

.sg-block .sg-search input.sg-search__input {
	width: 100%;
	margin: 0;
	padding: 11px 16px 11px 40px;
	border: 1px solid var(--sg-line);
	border-radius: 999px;
	background: var(--sg-white);
	box-shadow: none;
	color: var(--sg-ink);
	font: 400 0.95rem/1.4 var(--sg-font-body);
}

.sg-block .sg-search input.sg-search__input:focus {
	border-color: var(--sg-navy);
	outline: none;
	background: var(--sg-white);
	box-shadow: 0 0 0 3px var(--sg-gold-soft);
}

.sg-block .sg-count {
	margin: 0 0 18px;
	color: var(--sg-muted);
	font-size: 0.88rem;
}

.sg-block .sg-lodge-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(310px, 100%), 1fr));
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.sg-block .sg-lodge {
	display: flex;
	align-items: center;
	gap: 16px;
	min-width: 0;
	margin: 0;
	padding: 16px 18px;
	border: 1px solid var(--sg-line);
	border-radius: 12px;
	background: var(--sg-white);
	transition: box-shadow 0.2s, transform 0.2s;
}

.sg-block .sg-lodge:hover {
	box-shadow: var(--sg-shadow);
	transform: translateY(-2px);
}

.sg-block .sg-lodge__img {
	width: 58px;
	height: 58px;
	flex: none;
	padding: 4px;
	border: 1px solid var(--sg-line);
	border-radius: 50%;
	background: var(--sg-white);
	object-fit: contain;
}

.sg-block .sg-lodge__body {
	min-width: 0;
}

.sg-block .sg-lodge__country {
	display: block;
	color: var(--sg-gold-ink);
	font: 600 0.74rem/1.2 var(--sg-font-head);
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.sg-block .sg-lodge__name {
	display: block;
	margin-top: 4px;
	color: var(--sg-ink);
	font-size: 0.95rem;
	font-weight: 500;
	line-height: 1.38;
	overflow-wrap: anywhere;
}

.sg-block .sg-empty {
	margin: 0;
	padding: 40px;
	border: 1px dashed var(--sg-line);
	border-radius: 12px;
	color: var(--sg-muted);
	text-align: center;
}

/* ---------- Annex A notice ---------- */

.sg-block .sg-notice {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 6px 20px;
	margin-top: 44px;
	padding: 26px 30px;
	border: 1px solid var(--sg-line);
	border-left: 4px solid var(--sg-gold);
	border-radius: 12px;
	background: var(--sg-white);
}

.sg-block.sg-annex > .sg-notice {
	margin-top: 0;
}

.sg-block .sg-notice[id] {
	scroll-margin-top: var(--sg-sticky-top, 96px);
}

.sg-block .sg-notice > .sg-icon {
	grid-row: span 3;
	width: 28px;
	height: 28px;
	color: var(--sg-gold-600);
	stroke-width: 1.5;
}

.sg-block .sg-notice__title {
	margin: 0;
	color: var(--sg-navy);
	font: 600 1.25rem/1.2 var(--sg-font-head);
	letter-spacing: 0.04em;
}

.sg-block .sg-notice__text {
	margin: 4px 0 0;
	font-size: 0.95rem;
}

.sg-block .sg-notice__details summary {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 14px;
	color: var(--sg-navy);
	font: 600 0.82rem/1 var(--sg-font-head);
	letter-spacing: 0.16em;
	text-transform: uppercase;
	list-style: none;
	cursor: pointer;
}

.sg-block .sg-notice__details summary::-webkit-details-marker {
	display: none;
}

.sg-block .sg-notice__details summary:hover {
	color: var(--sg-navy-700);
}

.sg-block .sg-notice__details summary .sg-icon {
	width: 14px;
	height: 14px;
	transition: transform 0.2s;
}

.sg-block .sg-notice__details[open] summary .sg-icon {
	transform: rotate(180deg);
}

.sg-block .sg-annex-table-wrap {
	margin-top: 18px;
	overflow-x: auto;
}

.sg-block .sg-annex-table {
	width: 100%;
	margin: 0;
	border-collapse: collapse;
	font-size: 0.88rem;
}

.sg-block .sg-annex-table thead th {
	padding: 8px 10px;
	border-bottom: 1px solid var(--sg-line);
	color: var(--sg-muted);
	font: 600 0.72rem/1 var(--sg-font-head);
	letter-spacing: 0.16em;
	text-align: left;
	text-transform: uppercase;
}

.sg-block .sg-annex-table td,
.sg-block .sg-annex-table tbody th {
	padding: 9px 10px;
	border-bottom: 1px solid var(--sg-line);
	vertical-align: top;
	text-align: left;
}

.sg-block .sg-annex-table tbody th {
	color: var(--sg-ink);
	font: 500 0.88rem/1.5 var(--sg-font-body);
	letter-spacing: normal;
	text-transform: none;
}

.sg-block .sg-annex-table td.sg-annex-table__n {
	width: 36px;
	color: var(--sg-muted);
}

.sg-block .sg-annex-table__place {
	display: none;
}

.sg-block .sg-pill {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 999px;
	font: 600 0.72rem/1.5 var(--sg-font-head);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	white-space: nowrap;
}

.sg-block .sg-pill--nonexistent {
	background: #fbeaea;
	color: #9b2c2c;
}

.sg-block .sg-pill--withdrawn {
	background: var(--sg-surface);
	color: var(--sg-text);
}

.sg-block .sg-pill--unknown {
	background: #fdf3e1;
	color: #8a5a12;
}

/* ---------- Presidents ---------- */

.sg-block.sg-presidents {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	gap: clamp(32px, 5vw, 64px);
	align-items: start;
}

.sg-block.sg-presidents--single {
	grid-template-columns: minmax(0, 520px);
	justify-content: center;
}

.sg-block .sg-featured {
	position: sticky;
	top: var(--sg-sticky-top, 96px);
	padding: clamp(28px, 4vw, 44px);
	border: 1px solid var(--sg-line);
	border-radius: var(--sg-radius);
	background: var(--sg-paper);
	text-align: center;
}

.sg-block .sg-badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 6px 14px;
	border-radius: 999px;
	background: var(--sg-navy-50);
	color: var(--sg-navy);
	font: 700 0.74rem/1 var(--sg-font-head);
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

.sg-block .sg-badge::before {
	content: "";
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--sg-gold);
	box-shadow: 0 0 0 3px rgba(197, 165, 118, 0.3);
}

.sg-block .sg-portrait-lg {
	width: 210px;
	height: 210px;
	margin: 26px auto 22px;
	padding: 6px;
	border: 2px solid var(--sg-gold);
	border-radius: 50%;
	background: var(--sg-white);
	object-fit: cover;
	object-position: top;
}

.sg-block .sg-portrait-lg.sg-initials {
	font-size: 3rem;
}

.sg-block .sg-honor {
	display: block;
	margin-bottom: 6px;
	color: var(--sg-muted);
	font: 600 0.78rem/1 var(--sg-font-head);
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

.sg-block .sg-featured__name {
	margin: 0;
	color: var(--sg-navy);
	font: 400 clamp(1.7rem, 2.6vw, 2.1rem)/1.2 var(--sg-font-serif);
}

.sg-block .sg-term {
	display: block;
	margin-top: 10px;
	color: var(--sg-gold-ink);
	font: 600 1rem/1 var(--sg-font-head);
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.sg-block .sg-featured__text {
	max-width: 40ch;
	margin: 18px auto 0;
	font-size: 0.95rem;
}

/* "current" mode: the sitting President alone, as a compact horizontal card. */
.sg-block.sg-presidents--current {
	display: block;
}

.sg-block .sg-featured--compact {
	position: static;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 0 clamp(24px, 4vw, 40px);
	align-items: center;
	max-width: 760px;
	margin-inline: auto;
	padding: clamp(24px, 3vw, 36px);
	text-align: left;
}

.sg-block .sg-featured--compact .sg-portrait-lg {
	width: 150px;
	height: 150px;
	margin: 0;
}

.sg-block .sg-featured--compact .sg-portrait-lg.sg-initials {
	font-size: 2.4rem;
}

.sg-block .sg-featured--compact .sg-badge {
	margin-bottom: 14px;
}

.sg-block .sg-featured--compact .sg-featured__text {
	max-width: none;
	margin: 14px 0 0;
}

.sg-block .sg-lineage {
	position: relative;
	margin: 0;
	padding: 0;
	list-style: none;
}

.sg-block .sg-lineage::before {
	content: "";
	position: absolute;
	top: 20px;
	bottom: 20px;
	left: 31px;
	width: 1px;
	background: linear-gradient(var(--sg-gold-soft), var(--sg-line));
}

.sg-block .sg-lineage__item {
	position: relative;
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr) auto;
	gap: 18px;
	align-items: center;
	margin: 0;
	padding: 14px 0;
}

.sg-block .sg-lineage__img {
	width: 64px;
	height: 64px;
	border: 3px solid var(--sg-white);
	border-radius: 50%;
	background: var(--sg-surface);
	box-shadow: 0 0 0 1px var(--sg-line);
	object-fit: cover;
	object-position: top;
}

.sg-block .sg-lineage__name {
	margin: 0;
	color: var(--sg-navy);
	font: 400 1.22rem/1.25 var(--sg-font-serif);
}

.sg-block .sg-yrs {
	color: var(--sg-navy);
	font: 600 0.95rem/1 var(--sg-font-head);
	letter-spacing: 0.08em;
	text-align: right;
	white-space: nowrap;
}

.sg-block .sg-yrs small {
	display: block;
	margin-top: 6px;
	color: var(--sg-gold-ink);
	font-size: 0.68rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

/* ---------- Board ---------- */

.sg-block .sg-exec {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
	max-width: 820px;
	margin-inline: auto;
}

/* Pyramid: the President alone on the first row, the other officers in pairs beneath (an odd last one centred). */
.sg-block .sg-exec > .sg-person:is(:first-child, :last-child:nth-child(even)) {
	grid-column: 1 / -1;
	justify-self: center;
	width: calc(50% - 10px);
}

.sg-block .sg-person {
	padding: 34px 24px 30px;
	border: 1px solid var(--sg-line);
	border-radius: var(--sg-radius);
	background: var(--sg-white);
	text-align: center;
	transition: box-shadow 0.25s, transform 0.25s;
}

.sg-block .sg-person:hover {
	box-shadow: var(--sg-shadow-lg);
	transform: translateY(-3px);
}

.sg-block .sg-person__img {
	width: 124px;
	height: 124px;
	margin: 0 auto 20px;
	border-radius: 50%;
	background: var(--sg-surface);
	object-fit: cover;
	object-position: top;
}

.sg-block .sg-person__name {
	margin: 10px 0 0;
	color: var(--sg-navy);
	font: 400 1.45rem/1.25 var(--sg-font-serif);
}

.sg-block .sg-person .sg-ctry {
	margin-top: 6px;
	font-size: 0.9rem;
}

.sg-block .sg-regional {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.sg-block .sg-vp {
	display: flex;
	align-items: center;
	gap: 18px;
	min-width: 0;
	margin: 0;
	padding: 20px 22px;
	border: 1px solid var(--sg-line);
	border-radius: 12px;
	background: var(--sg-white);
}

.sg-block .sg-vp__img {
	position: relative;
	width: 84px;
	height: 84px;
	flex: none;
	border-radius: 50%;
	background: var(--sg-surface);
	object-fit: cover;
	object-position: top;
	transition: transform 0.3s, box-shadow 0.3s;
}

/* Hovering a portrait enlarges it over the card. */
.sg-block .sg-vp__img:not(.sg-vacant-img):hover {
	z-index: 2;
	box-shadow: var(--sg-shadow-lg);
	transform: scale(1.8);
}

.sg-block .sg-vp__body {
	min-width: 0;
}

.sg-block .sg-vp .sg-role {
	font-size: 0.74rem;
}

.sg-block .sg-vp__name {
	margin: 5px 0 0;
	color: var(--sg-navy);
	font: 400 1.24rem/1.25 var(--sg-font-serif);
}

.sg-block .sg-vp .sg-ctry {
	font-size: 0.88rem;
}

/* ---------- General Assemblies ---------- */

.sg-block.sg-asm-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.sg-block .sg-asm-item {
	margin: 0;
}

.sg-block .sg-asm {
	position: relative;
	display: block;
	height: 100%;
	padding: 22px 24px 24px;
	border: 1px solid var(--sg-line);
	border-radius: 12px;
	background: var(--sg-white);
	color: inherit;
	text-decoration: none;
	transition: box-shadow 0.2s, transform 0.2s, border-color 0.2s;
}

.sg-block a.sg-asm:hover {
	border-color: var(--sg-gold-soft);
	box-shadow: var(--sg-shadow);
	color: inherit;
	transform: translateY(-2px);
}

.sg-block .sg-asm.is-online {
	border-style: dashed;
	background: transparent;
}

.sg-block .sg-asm__year {
	display: block;
	color: var(--sg-navy);
	font: 700 2.4rem/1 var(--sg-font-head);
	letter-spacing: 0.02em;
}

.sg-block .sg-asm.is-online .sg-asm__year {
	color: var(--sg-muted);
}

.sg-block .sg-asm__city {
	display: block;
	margin-top: 12px;
	color: var(--sg-ink);
	font: 400 1.22rem/1.25 var(--sg-font-serif);
	overflow-wrap: anywhere;
}

.sg-block .sg-asm__country {
	display: block;
	margin-top: 4px;
	color: var(--sg-muted);
	font: 600 0.74rem/1.2 var(--sg-font-head);
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.sg-block .sg-tag {
	position: absolute;
	top: 18px;
	right: 18px;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--sg-navy-50);
	color: var(--sg-navy);
	font: 700 0.66rem/1.3 var(--sg-font-head);
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.sg-block .sg-tag--gold {
	background: var(--sg-gold);
}

/* ---------- Grand Lodges overview ---------- */

.sg-block.sg-summary {
	display: grid;
	gap: clamp(28px, 4vw, 44px);
}

.sg-block .sg-region-grid {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.sg-block .sg-region-item {
	margin: 0;
}

.sg-block .sg-region {
	display: block;
	height: 100%;
	padding: 22px 24px 24px;
	border: 1px solid var(--sg-line);
	border-radius: 12px;
	background: var(--sg-white);
	color: inherit;
	text-decoration: none;
	transition: box-shadow 0.2s, transform 0.2s, border-color 0.2s;
}

.sg-block a.sg-region:hover {
	border-color: var(--sg-gold-soft);
	box-shadow: var(--sg-shadow);
	color: inherit;
	transform: translateY(-2px);
}

.sg-block .sg-region__count {
	display: block;
	color: var(--sg-navy);
	font: 700 2.4rem/1 var(--sg-font-head);
	letter-spacing: 0.02em;
}

.sg-block .sg-region__name {
	display: block;
	margin-top: 12px;
	color: var(--sg-ink);
	font: 400 1.22rem/1.25 var(--sg-font-serif);
	overflow-wrap: anywhere;
}

.sg-block .sg-region__label {
	display: block;
	margin-top: 4px;
	color: var(--sg-muted);
	font: 600 0.74rem/1.2 var(--sg-font-head);
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

/* One row of ten, up to 56px each. The tracks shrink together, so the row never wraps or clips. */
.sg-block .sg-emblems {
	display: grid;
	grid-template-columns: repeat(10, minmax(0, 56px));
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.sg-block .sg-emblem {
	margin: 0;
}

.sg-block .sg-emblem__img {
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	padding: 4px;
	border: 1px solid var(--sg-line);
	border-radius: 50%;
	background: var(--sg-white);
	object-fit: contain;
}

/* ---------- Responsive ---------- */

@media (max-width: 1120px) {
	.sg-block.sg-asm-grid,
	.sg-block .sg-region-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 900px) {
	.sg-block.sg-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.sg-block .sg-stat:nth-child(3) {
		padding-left: 0;
		border-left: 0;
	}

	.sg-block .sg-stat:nth-child(n + 3) {
		border-top: 1px solid var(--sg-stats-line);
	}

	.sg-block.sg-presidents {
		grid-template-columns: minmax(0, 1fr);
	}

	.sg-block.sg-presidents--single {
		grid-template-columns: minmax(0, 520px);
	}

	.sg-block .sg-featured {
		position: static;
	}

	.sg-block.sg-asm-grid,
	.sg-block .sg-region-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	/* Five tiles in two columns: the last one spans both instead of sitting alone. */
	.sg-block .sg-region-item:last-child:nth-child(odd) {
		grid-column: 1 / -1;
	}
}

@media (max-width: 600px) {
	.sg-block .sg-stat {
		padding: 22px 16px 24px;
	}

	.sg-block .sg-stat:nth-child(odd) {
		padding-left: 0;
	}

	.sg-block .sg-search {
		flex-basis: 100%;
		margin-left: 0;
	}

	.sg-block .sg-lodge-grid,
	.sg-block .sg-regional,
	.sg-block .sg-exec {
		grid-template-columns: minmax(0, 1fr);
	}

	.sg-block .sg-exec > .sg-person:is(:first-child, :last-child:nth-child(even)) {
		width: auto;
		justify-self: stretch;
	}

	.sg-block .sg-featured--compact {
		grid-template-columns: minmax(0, 1fr);
		text-align: center;
	}

	.sg-block .sg-featured--compact .sg-portrait-lg {
		margin: 0 auto 20px;
	}

	.sg-block .sg-notice {
		grid-template-columns: minmax(0, 1fr);
		padding: 22px;
	}

	.sg-block .sg-notice > .sg-icon {
		grid-row: auto;
	}

	/* Annex A: each entry becomes a small stacked block (number, name and place, status). */
	.sg-block .sg-annex-table {
		position: relative;
	}

	.sg-block .sg-annex-table,
	.sg-block .sg-annex-table tbody {
		display: block;
	}

	.sg-block .sg-annex-table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
	}

	.sg-block .sg-annex-table tbody tr {
		display: grid;
		grid-template-columns: 2.25rem minmax(0, 1fr);
		gap: 6px 10px;
		padding: 12px 0;
		border-bottom: 1px solid var(--sg-line);
	}

	.sg-block .sg-annex-table tbody td,
	.sg-block .sg-annex-table tbody th {
		display: block;
		padding: 0;
		border: 0;
	}

	.sg-block .sg-annex-table td.sg-annex-table__n {
		grid-row: 1 / span 2;
		width: auto;
	}

	.sg-block .sg-annex-table tbody th.sg-annex-table__name {
		grid-column: 2;
	}

	.sg-block .sg-annex-table td.sg-annex-table__status {
		grid-column: 2;
		justify-self: start;
	}

	.sg-block .sg-annex-table td.sg-annex-table__loc {
		display: none;
	}

	.sg-block .sg-annex-table__place {
		display: block;
		margin-top: 2px;
		color: var(--sg-muted);
		font-weight: 400;
	}

	/* Honorifics sit above the names so the names get the full width. */
	.sg-block .sg-person__name .sg-hon,
	.sg-block .sg-vp__name .sg-hon {
		display: block;
		margin: 0 0 3px;
	}

	/* Overview tiles become compact rows: count, region, chevron. */
	.sg-block .sg-region-grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 8px;
	}

	.sg-block .sg-region {
		position: relative;
		display: grid;
		grid-template-columns: 2.6rem minmax(0, 1fr) auto;
		align-items: center;
		column-gap: 12px;
		min-height: 52px;
		padding: 10px 16px;
	}

	.sg-block .sg-region__count {
		font-size: 1.6rem;
	}

	.sg-block .sg-region__name {
		margin: 0;
		font-size: 1.12rem;
	}

	/* Kept for screen readers; the row reads "6 Africa Grand Lodges". */
	.sg-block .sg-region__label {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		white-space: nowrap;
	}

	.sg-block .sg-region::after {
		content: "";
		width: 8px;
		height: 8px;
		margin-right: 4px;
		border-top: 2px solid var(--sg-muted);
		border-right: 2px solid var(--sg-muted);
		transform: rotate(45deg);
	}

	/* Emblems: five per row, two even rows. */
	.sg-block .sg-emblems {
		grid-template-columns: repeat(5, minmax(0, 1fr));
		gap: 10px;
	}

	.sg-block .sg-emblem {
		width: 100%;
		max-width: 72px;
		justify-self: center;
	}

	.sg-block .sg-lineage__item {
		grid-template-columns: 56px minmax(0, 1fr);
		gap: 4px 14px;
	}

	.sg-block .sg-lineage__img {
		width: 56px;
		height: 56px;
	}

	.sg-block .sg-lineage::before {
		left: 27px;
	}

	.sg-block .sg-yrs {
		grid-column: 2;
		text-align: left;
		white-space: normal;
	}
}

@media (max-width: 480px) {
	.sg-block.sg-asm-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	/* One assembly per row: year, place, and the tag on the right. */
	.sg-block .sg-asm {
		display: grid;
		grid-template-columns: 4.4rem minmax(0, 1fr) auto;
		grid-template-areas:
			"year city tag"
			"year country tag";
		align-items: center;
		column-gap: 14px;
		height: auto;
		padding: 14px 16px;
	}

	.sg-block .sg-asm__year {
		grid-area: year;
		font-size: 1.9rem;
	}

	.sg-block .sg-asm__city {
		grid-area: city;
		align-self: end;
		margin: 0;
		font-size: 1.1rem;
	}

	.sg-block .sg-asm__country {
		grid-area: country;
		align-self: start;
		margin: 2px 0 0;
	}

	.sg-block .sg-tag {
		position: static;
		grid-area: tag;
		justify-self: end;
	}
}

@media (prefers-reduced-motion: reduce) {
	.sg-block *,
	.sg-block *::before,
	.sg-block *::after {
		transition: none !important;
		animation: none !important;
	}

	.sg-block .sg-lodge:hover,
	.sg-block .sg-person:hover,
	.sg-block a.sg-asm:hover,
	.sg-block a.sg-region:hover {
		transform: none;
	}
}

/* Vacant board seat */
.sg-block .sg-vacant {
	font-style: italic;
	color: var(--wp--preset--color--muted, #6b7177);
}

.sg-block .sg-vacant-img {
	border: 1px dashed var(--wp--preset--color--line, #e4e6ec);
	background: var(--wp--preset--color--surface, #f3f5f9) !important;
}

/* Honorific in the line of succession sits on its own small line */
.sg-block .sg-lineage__name .sg-hon {
	display: block;
	margin-bottom: 2px;
}

/* ===== General Assembly page: soglia/assembly-meta, soglia/assembly-gallery, soglia/assembly-nav ===== */

/* Place and dates under the title. */
.sg-block.sg-asm-meta {
	max-width: 62ch;
	margin: 18px auto 0;
	color: var(--sg-muted);
	font-size: 1.08rem;
	text-align: center;
}

.sg-block .sg-asm-meta__sep {
	margin-inline: 0.2em;
	color: var(--sg-gold-600);
}

/*
 * Photos. Core's gallery styles lay the grid out: the tile widths are worked out from
 * --wp--style--unstable-gallery-gap, so the flex gap must use the same value or the
 * last tile of a row wraps. This also makes the tiles even.
 */
.sg-block.sg-asm-gallery {
	--wp--style--gallery-gap-default: clamp(8px, 1.5vw, 16px);

	margin-top: clamp(36px, 5vw, 64px);
}

.sg-block.sg-asm-gallery .wp-block-gallery {
	margin: 0;
}

.sg-block.sg-asm-gallery .wp-block-gallery.has-nested-images {
	gap: var(--wp--style--unstable-gallery-gap, 16px);
}

.sg-block.sg-asm-gallery .wp-block-gallery.has-nested-images figure.wp-block-image {
	flex-grow: 0;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	border-radius: 10px;
	background: var(--sg-surface);
}

.sg-block.sg-asm-gallery .wp-block-gallery.has-nested-images figure.wp-block-image > a {
	overflow: hidden;
	cursor: zoom-in;
}

.sg-block.sg-asm-gallery .wp-block-gallery.has-nested-images figure.wp-block-image img {
	transition: transform 0.4s;
}

.sg-block.sg-asm-gallery .wp-block-gallery.has-nested-images figure.wp-block-image a:hover img {
	transform: scale(1.04);
}

/* Older and newer assembly, with the way back to the list. */
.sg-block.sg-asm-nav {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	grid-template-areas: "older all newer";
	align-items: center;
	gap: 12px 20px;
	margin-top: clamp(40px, 6vw, 72px);
	padding-top: 28px;
	border-top: 1px solid var(--sg-line);
}

.sg-block .sg-asm-nav__link {
	display: block;
	min-width: 0;
	padding: 14px 18px;
	border: 1px solid var(--sg-line);
	border-radius: 12px;
	background: var(--sg-white);
	color: inherit;
	text-decoration: none;
	transition: box-shadow 0.2s, transform 0.2s, border-color 0.2s;
}

.sg-block a.sg-asm-nav__link:hover {
	border-color: var(--sg-gold-soft);
	box-shadow: var(--sg-shadow);
	color: inherit;
	transform: translateY(-2px);
}

.sg-block .sg-asm-nav__link--older {
	grid-area: older;
	justify-self: start;
	text-align: left;
}

.sg-block .sg-asm-nav__link--newer {
	grid-area: newer;
	justify-self: end;
	text-align: right;
}

.sg-block .sg-asm-nav__dir {
	display: block;
	color: var(--sg-gold-ink);
	font: 600 0.72rem/1.2 var(--sg-font-head);
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

.sg-block .sg-asm-nav__title {
	display: block;
	margin-top: 6px;
	color: var(--sg-navy);
	font: 400 1.1rem/1.25 var(--sg-font-serif);
	overflow-wrap: anywhere;
}

.sg-block .sg-asm-nav__all {
	grid-area: all;
	padding: 10px 4px;
	color: var(--sg-navy);
	font: 600 0.82rem/1 var(--sg-font-head);
	letter-spacing: 0.16em;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
}

.sg-block .sg-asm-nav__all:hover {
	color: var(--sg-gold-ink);
	text-decoration: underline;
}

@media (max-width: 600px) {
	.sg-block.sg-asm-nav {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		grid-template-areas:
			"older newer"
			"all all";
		gap: 10px;
	}

	.sg-block .sg-asm-nav__link {
		padding: 12px 14px;
	}

	.sg-block .sg-asm-nav__link--older,
	.sg-block .sg-asm-nav__link--newer {
		justify-self: stretch;
	}

	.sg-block .sg-asm-nav__title {
		font-size: 1rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.sg-block a.sg-asm-nav__link:hover,
	.sg-block.sg-asm-gallery .wp-block-gallery.has-nested-images figure.wp-block-image a:hover img {
		transform: none;
	}
}

/* ===== end of General Assembly page ===== */
