/**
 * AP Family Trees - Public Stylesheet
 */

/* ── Chart wrapper ─────────────────────────────────────────────────────────── */

/*
 * Break out of the theme content container to use full viewport width.
 * box-sizing: border-box ensures padding (applied via inline style from
 * chart settings) does not add to the 100vw width and cause overflow.
 * Padding defaults are applied as inline style on the wrapper element;
 * only box-sizing lives here as a structural rule.
 */
.apft-chart-wrapper {
	width: 100vw;
	position: relative;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
	box-sizing: border-box;
	background: #f8f8f8;
}

/* ── Chart viewport (the visible scrollable window) ────────────────────────── */

.apft-chart-viewport {
	position: relative;
	border-top: 1px solid #ddd;
	border-bottom: 1px solid #ddd;
	width: 100%;
	/* Responsive height: fills the viewport minus typical page header/footer space */
	height: clamp( 480px, calc( 100vh - 180px ), 100vh );
	overflow: hidden;
	cursor: grab;
	box-sizing: border-box;
}

.apft-chart-viewport:active {
	cursor: grabbing;
}

/* ── Draggable inner element (panzoom target) ──────────────────────────────── */

.apft-chart-drag {
	text-align: center;
	display: inline-block;
	position: absolute;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	-webkit-transform: translateX(-50%);
	-moz-transform: translateX(-50%);
}

.apft-chart-drag:focus {
	outline: 0;
}

/* ── Pan hint ───────────────────────────────────────────────────────────────── */

.apft-chart-wrapper::after {
	content: attr(data-hint);
	position: absolute;
	bottom: 8px;
	right: 12px;
	font-size: 11px;
	color: #888;
	pointer-events: none;
}

/* ── Tree container ─────────────────────────────────────────────────────────── */

#tree-container {
	border: 0;
	display: inline-block;
	text-align: left;
}

#hoverimage {
	position: absolute;
	border: 1px solid gray;
	background-color: #efefef;
	z-index: 100;
}

#focusperson {
	height: 2em;
	padding: 0;
	width: 40%;
}

#toolbar-container {
	position: relative;
	z-index: 500;
}

.dynamicDiv {
	border: solid 1px #c0c0c0;
	background-color: #e1e1e1;
	font-size: 8px;
	font-family: verdana;
	color: #000;
	padding: 0;
}

/* ── SVG overrides - defeat theme CSS resets ─────────────────────────────── */

.apft-chart-wrapper svg {
	max-width: none !important;
	max-height: none !important;
	display: block !important;
}

/* Some themes hide or strip colour from SVG text globally.
   These rules restore correct rendering inside chart wrappers. */
.apft-chart-wrapper text,
.apft-chart-wrapper tspan {
	display: inline !important;
	visibility: visible !important;
	opacity: 1 !important;
}

/* ─────────────────────────────────────────────────────────────────────────────
   Tree styles - type 11 (Descendant)
───────────────────────────────────────────────────────────────────────────── */

/* ─────────────────────────────────────────────────────────────────────────────
   Descendant tree (chart-type-11) - show-spouse mode
   Structure: li > .apft-couple(.person + .person) + ul.childs > li
───────────────────────────────────────────────────────────────────────────── */

/* Each node li: inline-block so siblings flow side-by-side in their parent ul */
.tree-default > .tree-descendant.show-spouse li {
	display: inline-block;
	vertical-align: top;
	text-align: center;
	position: relative;
	padding-top: 20px;
}

/* Root li: no space above, no connectors (nothing to connect to) */
.tree-default > .tree-descendant.show-spouse .apft-root > li {
	padding-top: 0;
}
.tree-default > .tree-descendant.show-spouse .apft-root > li::before,
.tree-default > .tree-descendant.show-spouse .apft-root > li::after {
	display: none;
}

/* Couple: husband + wife side by side, centred */
.tree-default > .tree-descendant.show-spouse .apft-couple {
	display: inline-flex;
	flex-direction: row;
	align-items: stretch;
	justify-content: center;
	position: relative;
}

/* Double marriage line between husband and wife */
.tree-default > .tree-descendant.show-spouse .apft-couple .person + .person {
	position: relative;
}
.tree-default > .tree-descendant.show-spouse .apft-couple .person + .person::before {
	content: "";
	position: absolute;
	top: 24px;
	left: -10px;
	width: 10px;
	border-top: 1px solid;
	height: 5px;
	border-bottom: 1px solid;
	z-index: 1;
}

/* Vertical drop from centre of couple to children bar */
.tree-default > .tree-descendant.show-spouse .apft-couple.haschill::after {
	content: "";
	position: absolute;
	bottom: -20px;
	left: 50%;
	height: 20px;
	border-left: 1px solid;
}

/* Person box (shared across both modes) */
.tree-default > .tree-descendant .person > div > div {
	border: 1px solid;
	background: #e3e5e7;
	display: inline-flex;
	margin: 0 auto;
	position: relative;
}

/* Children list: centred flex row */
.tree-default > .tree-descendant.show-spouse .childs {
	display: flex;
	flex-direction: row;
	align-items: flex-start;
	justify-content: center;
	list-style: none;
	margin-top: 20px;
	padding: 0;
	position: relative;
}

/* Horizontal bar: spans left-to-right across sibling children, trimmed at edges */
.tree-default > .tree-descendant.show-spouse .childs > li::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	border-top: 1px solid;
}
.tree-default > .tree-descendant.show-spouse .childs > li:first-child:not(:only-child)::before {
	left: 50%;
}
.tree-default > .tree-descendant.show-spouse .childs > li:last-child:not(:only-child)::before {
	right: 50%;
}
/* Single child: no horizontal bar, just the vertical from parent */
.tree-default > .tree-descendant.show-spouse .childs > li:only-child::before {
	border: none;
}

/* Vertical drop from bar down to each child's couple */
.tree-default > .tree-descendant.show-spouse .childs > li::after {
	content: "";
	position: absolute;
	top: 0;
	left: 50%;
	height: 20px;
	border-left: 1px solid;
}
/* Only-child: vertical drop but no bar - the parent couple::after provides the top half */
.tree-default > .tree-descendant.show-spouse .childs > li:only-child::after {
	content: "";
	position: absolute;
	top: 0;
	left: 50%;
	height: 20px;
	border-left: 1px solid;
}


/* ─────────────────────────────────────────────────────────────────────────────
   Tree styles - type 12 (Pedigree/Ancestor)
───────────────────────────────────────────────────────────────────────────── */

.tree-default > .tree-pedigree .childs:after {
	content: "";
	position: absolute;
	height: 10px;
	border-left: 1px solid;
	left: 50%;
	right: 50%;
	top: 0;
}

.tree-default > .tree-pedigree .childs > li {
	display: block;
	position: relative;
	text-align: center;
	padding-top: 10px;
}

.tree-default > .tree-pedigree .childs > li:before {
	content: "";
	left: 0;
	right: 0;
	display: block;
	border-top: 1px solid;
	height: 10px;
	margin-top: 10px;
	position: absolute;
	top: 0;
}

.tree-default > .tree-pedigree .childs > li:last-child:not(:only-child):before {
	left: 0;
	right: 50%;
	border-right: 1px solid;
}

.tree-default > .tree-pedigree .childs > li:first-child:before {
	left: 50%;
	right: 0;
	border-left: 1px solid;
}

.tree-default > .tree-pedigree .childs > li:only-child:before {
	left: 50%;
	right: 50%;
	border-right: 0;
}

.tree-default > .tree-pedigree .childs > li:not(:first-child):not(:last-child):after {
	content: "";
	position: absolute;
	height: 10px;
	border-left: 1px solid;
	left: 50%;
	right: 50%;
	top: 10px;
}

.tree-default > .tree-pedigree .person { display: block; }

.tree-default .chart-type-12up {
	transform: rotate(180deg);
	bottom: -20px;
}

.tree-default .chart-type-12up .person-info {
	transform: rotate(180deg);
}

/* ─────────────────────────────────────────────────────────────────────────────
   Shared tree styles (all types)
───────────────────────────────────────────────────────────────────────────── */

.tree-default {
	white-space: nowrap;
	position: relative;
	margin: 0 !important;
	padding: 0 !important;
}

.tree-default .childs {
	width: max-content;
	display: flex;
	position: relative;
	margin: 0;
	padding: 0;
	min-width: 100%;
	justify-content: center;
}

.tree-default .person {
	margin-top: 10px;
	padding-left: 4px;
	padding-right: 4px;
}

.tree-default .person > div > div {
	border: 1px solid;
	background: #e3e5e7;
	display: inline-flex;
	margin: 0 auto;
	position: relative;
	z-index: 5000000;
}

.tree-default .person table { width: 100%; }

.tree-default .person table,
.tree-default .person table td {
	border: 0;
	display: inline-flex;
	vertical-align: top;
	padding: 0;
	margin: 0;
}

.tree-default .person table td { padding: 3px; }
.tree-default .person table td a { text-decoration: none; }

.tree-default .person .thumb {
	position: relative;
	width: 50px;
	height: 50px;
	overflow: hidden;
}

.tree-default .person .thumb img { display: block; }

.tree-default .person .thumb > .toolbar {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 20;
	opacity: 0;
	background: rgb(255 255 255 / 80%);
	display: block;
	text-align: center;
}

.tree-default .person .thumb > .toolbar > .toolbar-inner {
	width: 50px;
	height: 50px;
}

.tree-default .person .thumb > .toolbar a {
	display: inline-block;
	margin: 18px 2px;
	height: 14px;
}

.tree-default .person .thumb > .toolbar:hover { opacity: 1; }

/* ── Chart preview page ──────────────────────────────────────────────────── */
/* These rules only apply on the standalone chart preview page where the
   .apft-pb toolbar and full-viewport chart containers are used. They are
   scoped tightly enough that they have no effect on normal front-end pages. */

.apft-pb {
	background: #1A1A18;
	color: #F4F2EC;
	padding: 10px 20px;
	display: flex;
	align-items: center;
	gap: 16px;
	font: 13px/1 Inter, sans-serif;
	position: sticky;
	top: 0;
	z-index: 9999;
}

.apft-pb a {
	color: #C4831A;
	text-decoration: none;
}

/* Override full-bleed wrapper - preview page has no constrained content column */
.apft-chart-preview-page .apft-chart-wrapper {
	width: 100% !important;
	left: auto !important;
	right: auto !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	position: relative !important;
}

/* Give the viewport the remaining screen height */
.apft-chart-preview-page .apft-chart-viewport {
	height: calc(100vh - 46px) !important;
	overflow: hidden !important;
}

/* Keep drag div centred inside the visible viewport */
.apft-chart-preview-page .apft-chart-drag {
	position: absolute !important;
	top: 20px !important;
	left: 50% !important;
	transform: translateX(-50%) !important;
}

/* ── Credit link ─────────────────────────────────────────────────────────── */
.apft-credit {
	text-align: right;
	padding: 4px 8px;
	font-size: 11px;
	opacity: 0.6;
}

.apft-credit a {
	color: inherit;
	text-decoration: none;
}

.apft-credit a:hover {
	opacity: 1;
	text-decoration: underline;
}

/* ═══════════════════════════════════════════════════════════════════════════
   Member Profile Page
   ═══════════════════════════════════════════════════════════════════════════ */

.apft-member-profile-wrap {
	max-width: 780px;
	margin: 2rem auto;
	padding: 0 1rem;
}

/* ── Profile header ─────────────────────────────────────────────────────── */

.apft-profile-header {
	border-left: 4px solid #2F4A3F;
	padding: 1.25rem 0 1.25rem 1.25rem;
	margin-bottom: 2rem;
	display: flex;
	align-items: flex-start;
	gap: 1.25rem;
}

.apft-profile-photo {
	width: 110px;
	height: 110px;
	object-fit: cover;
	border-radius: 6px;
	flex-shrink: 0;
	border: 1px solid #e5e7eb;
}

.apft-profile-header-text {
	flex: 1;
	min-width: 0;
}

.apft-profile-name {
	font-size: 2rem;
	font-weight: 700;
	margin: 0 0 0.25rem;
	color: #1A1A18;
	line-height: 1.2;
}

.apft-profile-years {
	font-size: 1rem;
	color: #4b5563;
	margin: 0 0 0.375rem;
	font-variant-numeric: tabular-nums;
}

.apft-profile-sex {
	display: inline-block;
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: #6b7280;
	background: #f3f4f6;
	padding: 0.2em 0.65em;
	border-radius: 2px;
}

/* ── Profile body sections ──────────────────────────────────────────────── */

.apft-profile-section {
	margin-bottom: 1.75rem;
	padding-bottom: 1.75rem;
	border-bottom: 1px solid #e5e7eb;
}

.apft-profile-section:last-child {
	border-bottom: none;
}

.apft-profile-section-title {
	font-size: 0.7rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: #2F4A3F;
	margin: 0 0 1rem;
}

/* ── Definition list (vital records + life events) ──────────────────────── */

.apft-profile-dl {
	margin: 0;
	padding: 0;
}

.apft-profile-dl-row {
	display: grid;
	grid-template-columns: 7rem 1fr;
	gap: 0.25rem 1rem;
	padding: 0.5rem 0;
	border-bottom: 1px solid #f3f4f6;
}

.apft-profile-dl-row:last-child {
	border-bottom: none;
}

.apft-profile-dl dt {
	font-weight: 600;
	color: #374151;
	font-size: 0.875rem;
}

.apft-profile-dl dd {
	margin: 0;
	color: #1A1A18;
	font-size: 0.875rem;
}

.apft-profile-place {
	color: #6b7280;
}

/* ── Relations (parents, spouse, children, siblings) ────────────────────── */

.apft-profile-family-group {
	margin-bottom: 0.75rem;
}

.apft-profile-relations {
	list-style: none;
	margin: 0;
	padding: 0;
}

.apft-profile-relation {
	display: grid;
	grid-template-columns: 5.5rem 1fr auto;
	align-items: baseline;
	gap: 0.25rem 0.75rem;
	padding: 0.45rem 0;
	border-bottom: 1px solid #f3f4f6;
	font-size: 0.875rem;
}

.apft-profile-relation:last-child {
	border-bottom: none;
}

.apft-relation-label {
	font-weight: 600;
	color: #374151;
	white-space: nowrap;
}

.apft-relation-name {
	color: #2F4A3F;
	text-decoration: none;
	font-weight: 500;
}

.apft-relation-name:hover {
	color: #C4831A;
	text-decoration: underline;
}

.apft-relation-date {
	color: #9ca3af;
	font-size: 0.8rem;
	white-space: nowrap;
}

/* ── Notes ──────────────────────────────────────────────────────────────── */

.apft-profile-note {
	color: #374151;
	font-size: 0.9rem;
	line-height: 1.7;
	margin: 0 0 0.75rem;
}

/* ═══════════════════════════════════════════════════════════════════════════
   Members Index Shortcodes
   [apft-family-members] and [apft-members]
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Alphabetical surname index ─────────────────────────────────────────── */

.apft-surname-letter {
	font-size: 0.8rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: #2F4A3F;
	border-bottom: 2px solid #2F4A3F;
	padding-bottom: 0.25rem;
	margin: 1.75rem 0 0.75rem;
}

.apft-surname-letter:first-child {
	margin-top: 0;
}

/* ── Member list (shared by both shortcodes) ─────────────────────────────── */

.apft-member-list {
	list-style: none;
	margin: 0 0 0.5rem;
	padding: 0;
	columns: 2;
	column-gap: 1.5rem;
}

@media ( max-width: 540px ) {
	.apft-member-list {
		columns: 1;
	}
}

.apft-member-list li {
	break-inside: avoid;
	padding: 0.3rem 0;
	border-bottom: 1px solid #f3f4f6;
}

.apft-member-list a {
	color: #2F4A3F;
	text-decoration: none;
	font-size: 0.9rem;
}

.apft-member-list a:hover {
	color: #C4831A;
	text-decoration: underline;
}

/* ── Responsive tweaks for profile ──────────────────────────────────────── */

@media ( max-width: 540px ) {
	.apft-profile-name {
		font-size: 1.5rem;
	}

	.apft-profile-dl-row {
		grid-template-columns: 1fr;
		gap: 0;
	}

	.apft-profile-dl dt {
		margin-top: 0.5rem;
	}

	.apft-profile-relation {
		grid-template-columns: 4.5rem 1fr;
	}
}

/* ── Chart control panel ──────────────────────────────────────────────────── */
.apft-ctrl-panel {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 20;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 13px;
}

.apft-ctrl-toggle {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	background: #fff;
	border: 1px solid #ddd;
	border-radius: 6px;
	cursor: pointer;
	box-shadow: 0 1px 4px rgba(0,0,0,.12);
	color: #555;
	padding: 0;
	transition: background 0.15s, box-shadow 0.15s;
}

.apft-ctrl-toggle:hover,
.apft-ctrl-toggle.apft-ctrl-active {
	background: #f5f5f5;
	box-shadow: 0 2px 8px rgba(0,0,0,.18);
}

.apft-ctrl-body {
	position: absolute;
	top: 44px;
	right: 0;
	background: #fff;
	border: 1px solid #ddd;
	border-radius: 8px;
	padding: 14px;
	min-width: 180px;
	box-shadow: 0 4px 16px rgba(0,0,0,.12);
}

.apft-ctrl-hidden {
	display: none;
}

.apft-ctrl-section {
	margin-bottom: 12px;
}

.apft-ctrl-section:last-child {
	margin-bottom: 0;
}

.apft-ctrl-section > label {
	display: block;
	font-size: 11px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #888;
	margin-bottom: 6px;
}

.apft-ctrl-select {
	width: 100%;
	padding: 5px 8px;
	border: 1px solid #ddd;
	border-radius: 4px;
	font-size: 13px;
	color: #333;
	background: #fafafa;
	cursor: pointer;
}

.apft-ctrl-btn {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 5px 10px;
	margin-right: 6px;
	border: 1px solid #ddd;
	border-radius: 4px;
	background: #fafafa;
	font-size: 12px;
	color: #333;
	cursor: pointer;
	transition: background 0.15s;
}

.apft-ctrl-btn:hover {
	background: #f0f0f0;
	border-color: #bbb;
}

/* ── Profile gallery ─────────────────────────────────────────────────────── */
.apft-gallery-grid {
	display: grid;
	grid-template-columns: repeat( auto-fill, minmax( 160px, 1fr ) );
	gap: 16px;
	margin-top: 8px;
}

.apft-gallery-figure {
	margin: 0;
	cursor: pointer;
}

.apft-gallery-thumb-wrap {
	display: block;
	overflow: hidden;
	border-radius: 6px;
	cursor: pointer;
}

.apft-gallery-img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	display: block;
	transition: transform 0.2s;
}

.apft-gallery-thumb-wrap:hover .apft-gallery-img {
	transform: scale( 1.04 );
}

.apft-gallery-caption {
	margin-top: 6px;
	font-size: 12px;
	color: #555;
	line-height: 1.4;
	text-align: center;
}

/* ── CSS-only lightbox ───────────────────────────────────────────────────── */
.apft-lb-toggle {
	display: none;
}

.apft-lb-overlay {
	display: none;
	position: fixed;
	inset: 0;
	background: rgba( 0, 0, 0, 0.88 );
	z-index: 99999;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 20px;
	cursor: pointer;
}

.apft-lb-toggle:checked ~ .apft-lb-overlay {
	display: flex;
}

.apft-lb-full-img {
	max-width: 90vw;
	max-height: 80vh;
	object-fit: contain;
	border-radius: 4px;
	box-shadow: 0 8px 40px rgba( 0, 0, 0, 0.5 );
	cursor: default;
}

.apft-lb-caption {
	color: #fff;
	font-size: 14px;
	margin-top: 12px;
	text-align: center;
	max-width: 600px;
	line-height: 1.5;
}

.apft-lb-close {
	position: absolute;
	top: 16px;
	right: 20px;
	color: #fff;
	font-size: 28px;
	line-height: 1;
	cursor: pointer;
	opacity: 0.7;
}

.apft-lb-close:hover {
	opacity: 1;
}

/* ── Member search widget ────────────────────────────────────────────────── */
.apft-search-widget {
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.apft-search-form {
	margin: 0 0 8px;
}

.apft-search-input-row {
	display: flex;
	gap: 0;
	border: 1px solid #d1d5db;
	border-radius: 5px;
	overflow: hidden;
}

.apft-search-input {
	flex: 1;
	padding: 7px 10px;
	border: none;
	font-size: 14px;
	outline: none;
	background: #fff;
	min-width: 0;
}

.apft-search-input:focus {
	box-shadow: inset 0 0 0 2px #2F4A3F;
}

.apft-search-btn {
	padding: 0 12px;
	background: #2F4A3F;
	color: #F4F2EC;
	border: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	transition: background 0.15s;
}

.apft-search-btn:hover {
	background: #243b32;
}

/* Results */
.apft-search-results {
	margin-top: 4px;
}

.apft-search-result-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.apft-search-result-item {
	border-bottom: 1px solid #f0f0f0;
}

.apft-search-result-item:last-child {
	border-bottom: none;
}

.apft-search-result-link {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 8px;
	padding: 7px 4px;
	text-decoration: none;
	color: #1A1A18;
	font-size: 13px;
	transition: color 0.12s;
}

.apft-search-result-link:hover {
	color: #2F4A3F;
}

.apft-search-result-name {
	font-weight: 500;
}

.apft-search-result-years {
	font-size: 11px;
	color: #6B6E6C;
	white-space: nowrap;
	flex-shrink: 0;
}

.apft-search-result-count {
	font-size: 11px;
	color: #6B6E6C;
	margin: 6px 0 0;
	text-align: right;
}

.apft-search-no-results {
	font-size: 13px;
	color: #6B6E6C;
	margin: 6px 0 0;
	font-style: italic;
}

.apft-search-notice {
	font-size: 12px;
	color: #888;
}

/* ── Search block editor preview ─────────────────────────────────────────── */
.apft-search-block-editor {
	padding: 12px;
	border: 1px dashed #ccc;
	border-radius: 4px;
}

.apft-search-block-preview {
	display: flex;
	align-items: center;
	gap: 8px;
	color: #555;
}

.apft-search-block-icon {
	flex-shrink: 0;
	opacity: 0.6;
}

.apft-search-block-label {
	font-weight: 600;
	font-size: 13px;
	margin: 0;
}

.apft-search-block-tree {
	font-size: 12px;
	color: #888;
	margin: 0;
}

/* ─────────────────────────────────────────────────────────────────────────────
   Compact Text Chart (type 61)
─────────────────────────────────────────────────────────────────────────────── */

.apft-compact-wrapper {
	padding: 24px 32px;
	background: #F4F2EC;
	border-top: 1px solid #ddd;
	border-bottom: 1px solid #ddd;
}

.apft-cmp-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Nested lists get left indent with a subtle Verdant border */
.apft-cmp-list .apft-cmp-list {
	padding-left: 20px;
	margin-left: 8px;
	border-left: 2px solid #2F4A3F30;
	margin-top: 2px;
}

.apft-cmp-person {
	padding: 3px 0;
	line-height: 1.5;
}

.apft-cmp-name {
	font-family: 'Inter', -apple-system, sans-serif;
	font-weight: 600;
	font-size: 13px;
	color: #1A1A18;
}

.apft-cmp-dates {
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 11px;
	color: #6B6E6C;
	margin-left: 6px;
}

.apft-cmp-spouse {
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	color: #6B6E6C;
	margin-left: 8px;
}

.apft-cmp-spouse .apft-cmp-name {
	font-size: 12px;
	font-weight: 500;
	color: #4a4a48;
}

/* Print: compact chart prints cleanly */
@media print {
	.apft-compact-wrapper {
		border: none;
		padding: 0;
		background: none;
	}
	.apft-cmp-list .apft-cmp-list {
		border-left-color: #ccc;
	}
}

/* ── Chart block editor preview ─────────────────────────────────────── */

.apft-chart-block-editor {
	border: 1px dashed #C8C4BA;
	border-radius: 4px;
	background: #F4F2EC;
}

.apft-chart-block-preview {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 16px;
}

.apft-chart-block-icon {
	flex-shrink: 0;
	color: #2F4A3F;
	display: flex;
}

.apft-chart-block-info {
	display: flex;
	flex-direction: column;
	gap: 3px;
	min-width: 0;
}

.apft-chart-block-info strong {
	font-size: 13px;
	color: #1A1A18;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.apft-chart-block-meta {
	font-size: 11px;
	color: #6B6E6C;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* ── Empty chart state ──────────────────────────────────────────────── */
.apft-chart-empty {
	padding: 40px 32px;
	text-align: center;
	color: #6B6E6C;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
}

/* ── Profile compact card ────────────────────────────────────────────── */
.apft-profile-card {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px;
	background: #F4F2EC;
	border: 1px solid #C8C4BA;
	border-radius: 4px;
	max-width: 320px;
	font-family: 'Inter', sans-serif;
}
.apft-profile-card-photo {
	width: 56px;
	height: 56px;
	object-fit: cover;
	border-radius: 50%;
	flex-shrink: 0;
}
.apft-profile-card-body {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}
.apft-profile-card-name {
	font-family: 'Libre Baskerville', Georgia, serif;
	font-size: 15px;
	font-weight: 700;
	color: #1A1A18;
	text-decoration: none;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.apft-profile-card-name:hover {
	color: #2F4A3F;
	text-decoration: underline;
}
.apft-profile-card-dates {
	font-size: 12px;
	color: #6B6E6C;
}

/* ── Profile custom fields section ──────────────────────────────────── */
.apft-profile-custom-fields .apft-profile-dl-row dt {
	font-weight: 600;
	color: #2F4A3F;
}

/* ── Block placeholder (editor only) ────────────────────────────────── */
.apft-block-placeholder {
	padding: 24px;
	text-align: center;
	border: 2px dashed #2F4A3F;
	border-radius: 4px;
	background: #F4F2EC;
	color: #2F4A3F;
}

/* ── Profile name link ───────────────────────────────────────────────── */
.apft-profile-name-link {
	color: inherit;
	text-decoration: none;
}
.apft-profile-name-link:hover {
	text-decoration: underline;
	color: #2F4A3F;
}

/* ── Member Index ────────────────────────────────────────────────────── */
.apft-member-index {
	font-family: 'Inter', sans-serif;
}

.apft-index-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
	margin-bottom: 28px;
	padding: 12px;
	background: #F4F2EC;
	border-radius: 4px;
}

.apft-index-jump {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 30px;
	height: 30px;
	padding: 0 6px;
	background: #fff;
	border: 1px solid #C8C4BA;
	border-radius: 3px;
	color: #1A1A18;
	text-decoration: none;
	font-size: 12px;
	font-weight: 600;
	transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.apft-index-jump:hover {
	background: #2F4A3F;
	color: #F4F2EC;
	border-color: #2F4A3F;
}

.apft-index-groups {
	margin-top: 0;
}

.apft-index-group {
	margin-bottom: 36px;
}

.apft-index-group-heading {
	font-family: 'Libre Baskerville', Georgia, serif;
	font-size: 18px;
	font-weight: 700;
	color: #2F4A3F;
	border-bottom: 2px solid #2F4A3F;
	padding-bottom: 6px;
	margin: 0 0 12px;
}

.apft-index-list {
	list-style: none;
	margin: 0;
	padding: 0;
	column-count: 2;
	column-gap: 32px;
}

@media ( max-width: 640px ) {
	.apft-index-list {
		column-count: 1;
	}
}

.apft-index-entry {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 8px;
	padding: 5px 0;
	border-bottom: 1px solid #ECEAE3;
	break-inside: avoid;
	page-break-inside: avoid;
}

.apft-index-name {
	color: #1A1A18;
	text-decoration: none;
	font-size: 14px;
	line-height: 1.4;
}

.apft-index-name:hover {
	color: #2F4A3F;
	text-decoration: underline;
}

.apft-index-dates {
	display: flex;
	gap: 6px;
	font-size: 11px;
	color: #6B6E6C;
	white-space: nowrap;
	flex-shrink: 0;
}

.apft-index-living .apft-index-name {
	color: #6B6E6C;
	font-style: italic;
}

.apft-index-empty {
	color: #6B6E6C;
	font-style: italic;
}
