:root {
  color-scheme: light;
  --page: #fbf7ed;
  --surface: #ffffff;
  --surface-soft: #f2ead9;
  --ink: #17140f;
  --muted: #4c4438;
  --link: #004f7a;
  --link-hover: #00334f;
  --accent: #7a3d00;
  --accent-soft: #f5e2c6;
  --green: #145a37;
  --green-soft: #e2f1e8;
  --red: #8a281b;
  --red-soft: #f8e4df;
  --line: #706858;
  --line-soft: #c9c0ae;
  --focus: #005fcc;
  --body: Arial, Helvetica, Verdana, system-ui, sans-serif;
  --mono: "Courier New", Courier, monospace;
  --max: 1240px;
  --measure: 72ch;
  --space-1: .4rem;
  --space-2: .75rem;
  --space-3: 1.2rem;
  --space-4: 1.8rem;
  --space-5: 2.8rem;
  --space-6: 4.2rem;
  --radius: 7px;
  --shadow: 0 7px 20px rgba(50, 39, 22, .11);
}

* {
  box-sizing: border-box;
}

html {
  background: var(--page);
  font-size: 20px;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

html[data-text-size="large"] {
  font-size: 24px;
}

html[data-text-size="largest"] {
  font-size: 28px;
}

body {
  min-height: 100vh;
  margin: 0;
  overflow-x: hidden;
  background: var(--page);
  color: var(--ink);
  font-family: var(--body);
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.65;
  overflow-wrap: break-word;
}

a {
  color: var(--link);
  font-weight: 600;
  text-decoration-thickness: 2px;
  text-underline-offset: .18em;
}

a:hover {
  color: var(--link-hover);
}

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

.address-images {
  margin-top: var(--space-5);
}

.house-place-card,
.person-house-images {
  min-width: 0;
  margin: var(--space-4) 0;
  padding: var(--space-3);
  border: 2px solid var(--line-soft);
  border-radius: var(--radius);
  background: var(--surface);
}

.house-image-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-3);
  min-width: 0;
}

.house-image-card {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  border: 2px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface-soft);
}

.house-image-card img {
  width: 100%;
  max-width: 100%;
  height: auto;
}

.house-image-card figcaption {
  min-width: 0;
  padding: var(--space-2);
  font-size: .8rem;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.house-image-card figcaption p {
  margin: .55rem 0 0;
}

.house-image-card figcaption p:first-child {
  margin-top: 0;
}

.house-image-credit,
.house-image-licence {
  color: var(--ink);
}

@media (min-width: 760px) {
  .house-image-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

button,
input,
select,
summary {
  font: inherit;
}

button,
.button {
  min-height: 48px;
  border: 2px solid var(--link);
  border-radius: 5px;
  background: var(--surface);
  color: var(--link);
  padding: .6rem .85rem;
  cursor: pointer;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
}

button:hover,
.button:hover {
  border-color: var(--link-hover);
  background: #e5f2f8;
  color: var(--link-hover);
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.button.primary {
  border-color: var(--link);
  background: var(--link);
  color: var(--surface);
}

.button.primary:hover {
  border-color: var(--link-hover);
  background: var(--link-hover);
  color: var(--surface);
}

:focus {
  outline: 3px solid var(--focus);
  outline-offset: 4px;
}

:focus-visible {
  outline: 4px solid var(--focus);
  outline-offset: 4px;
}

[id] {
  scroll-margin-top: 7rem;
}

.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.skip {
  position: absolute;
  left: -9999px;
}

.skip:focus {
  left: 1rem;
  top: 1rem;
  z-index: 1002;
  background: var(--surface);
  color: var(--ink);
  padding: .65rem .9rem;
}

/* Header and navigation */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  border-bottom: 2px solid var(--line);
  background: #fffdf8;
  color: var(--ink);
}

.header-inner {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  max-width: var(--max);
  margin: 0 auto;
  padding: .45rem 1rem;
}

.home-button {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  margin-right: 1rem;
  color: var(--ink);
  font-size: 1.05rem;
  font-weight: 800;
  text-decoration: none;
}

.site-nav {
  display: flex;
  align-items: center;
  min-width: 0;
  /* Wrap at every width, not just on phones. This used to be an
     overflow-x:auto scroll strip on desktop, which silently clipped the last
     link — "What's new" was cut in half behind the text-size control on a
     1500px window. A sideways-scrolling nav hides destinations from anyone who
     does not think to swipe, and the same reasoning that wraps it under 920px
     applies above it. The header simply grows a row when it needs one. */
  flex-wrap: wrap;
  row-gap: .1rem;
  white-space: normal;
}

.site-nav::-webkit-scrollbar {
  display: none;
}

.site-nav a {
  display: inline-flex;
  align-items: center;
  /* flex-shrink must stay 0: without it the links compress below their text
     width and the labels overlap each other into unreadable soup. */
  flex: 0 0 auto;
  min-height: 48px;
  margin-right: 1rem;
  color: var(--ink);
  font-size: .9rem;
  text-decoration: underline;
}

.site-nav a:hover,
.site-nav a[aria-current="page"] {
  color: var(--link);
}

.text-size {
  display: flex;
  align-items: center;
  padding-left: .7rem;
  border-left: 1px solid var(--line-soft);
  white-space: nowrap;
}

.text-size span {
  margin-right: .45rem;
  color: var(--muted);
  font-size: .8rem;
  font-weight: 700;
}

.text-size button {
  min-width: 48px;
  min-height: 48px;
  margin-left: .3rem;
  padding: .35rem;
  border-color: var(--line);
  color: var(--ink);
  font-size: .8rem;
}

.text-size button[aria-pressed="true"] {
  border-color: var(--link);
  background: var(--link);
  color: var(--surface);
}

main {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 1.25rem 6rem;
}

footer {
  border-top: 2px solid var(--line);
  background: var(--surface-soft);
  color: var(--ink);
  padding: 2rem 1.25rem 3rem;
  text-align: center;
  font-size: .9rem;
}

footer p {
  margin: .25rem 0;
}

.footer-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  margin: .8rem auto 0;
}

.footer-nav a {
  margin: .35rem .7rem;
}

.footer-note {
  display: block;
  margin-top: .8rem;
}

.breadcrumbs {
  display: flex;
  align-items: center;
  overflow-x: auto;
  white-space: nowrap;
  padding: .85rem 0;
  color: var(--muted);
  font-size: .8rem;
  font-weight: 700;
}

.breadcrumbs > * {
  margin-right: .55rem;
}

.breadcrumbs a {
  color: var(--link);
}

.breadcrumbs span[aria-hidden] {
  color: var(--accent);
}

/* Typography */
h1,
h2,
h3,
h4 {
  color: var(--ink);
  font-family: var(--body);
  line-height: 1.15;
  word-break: break-word;
  overflow-wrap: anywhere;
}

h1 {
  margin: .08em 0 .2em;
  font-size: clamp(2.5rem, 8vw, 5.8rem);
  font-weight: 800;
  letter-spacing: -.035em;
}

h2 {
  margin: 2.3rem 0 .8rem;
  font-size: clamp(1.7rem, 4vw, 2.7rem);
  font-weight: 800;
  letter-spacing: -.02em;
}

h3 {
  margin: .2rem 0 .55rem;
  font-size: 1.35rem;
  font-weight: 800;
}

.eyebrow,
.plain-label,
.section-kicker {
  margin: 0 0 .7rem;
  color: var(--accent);
  font-size: .8rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.lede {
  max-width: 50rem;
  color: var(--ink);
  font-size: clamp(1.15rem, 2.2vw, 1.45rem);
  line-height: 1.5;
}

.muted,
.caption {
  color: var(--muted);
}

.caption {
  font-size: .9rem;
}

.measure,
.article {
  max-width: var(--measure);
}

.hero {
  max-width: 65rem;
  padding: clamp(3rem, 8vw, 6rem) 0 3rem;
}

.hero h1 {
  max-width: 62rem;
}

.home-hero {
  display: grid;
  align-content: center;
  min-height: 650px;
  min-height: min(82vh, 800px);
  padding: 4rem 0;
}

.home-hero h1 {
  max-width: 58rem;
}

.home-hero .lede {
  max-width: 48rem;
  margin: .7rem 0 1.1rem;
}

.home-actions,
.person-return,
.surname-buttons {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  margin: .75rem -.4rem;
}

.home-actions > *,
.person-return > *,
.surname-buttons > * {
  margin: .4rem;
}

.home-start {
  display: inline-flex;
  align-items: center;
  margin-top: 1.2rem;
  color: var(--link);
}

.home-start:after {
  content: "↓";
  margin-left: .55rem;
  color: var(--accent);
  font-size: 1.4rem;
}

.section-label {
  display: flex;
  align-items: baseline;
  padding-bottom: .7rem;
  margin-bottom: 1.5rem;
  border-bottom: 2px solid var(--line);
}

.section-label > * {
  margin-right: 1rem;
}

.section-label span,
.spine-gen {
  color: var(--accent);
  font-family: var(--mono);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .06em;
}

/* Cards, search, and notices */
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr));
  gap: 1rem;
}

.card {
  display: block;
  position: relative;
  min-height: 160px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-left: 5px solid var(--accent);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  padding: 1.35rem;
  text-decoration: none;
  box-shadow: var(--shadow);
}

.card:hover,
.card:focus {
  border-color: var(--link);
  background: #f4faff;
}

.card p,
.card-summary,
.surname-summary {
  color: var(--muted);
}

.card-summary,
.surname-summary {
  font-size: .92rem;
  line-height: 1.5;
}

.surname-summary {
  display: block;
  max-width: 60ch;
  margin: .15rem 0 .7rem;
}

.badge {
  display: inline-block;
  border: 2px solid currentColor;
  border-radius: 99px;
  padding: .14rem .55rem;
  font-size: .8rem;
  font-weight: 800;
  line-height: 1.4;
  letter-spacing: .04em;
  text-transform: uppercase;
  vertical-align: middle;
}

.documented {
  color: var(--green);
}

.partial,
.compiled,
.tree-supplied {
  color: var(--accent);
}

.unverified,
.unproven {
  color: var(--red);
}

.living {
  color: var(--muted);
}

.claim,
.place-disputed {
  color: var(--red);
  font-weight: 700;
}

.claim {
  display: inline-block;
  margin: .25rem 0;
  font-size: .88rem;
  font-style: italic;
}

.notice {
  margin: 2rem 0;
  padding: 1.2rem 1.4rem;
  border: 1px solid var(--red);
  border-left: 6px solid var(--red);
  background: var(--red-soft);
  color: var(--ink);
}

.notice.question {
  border-color: var(--green);
  background: var(--green-soft);
}

.searchbox {
  margin: 2rem 0;
  padding: 1.3rem;
  border: 2px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
}

.searchbox-hero {
  width: min(760px, 100%);
  margin: .8rem 0 1.2rem;
  box-shadow: var(--shadow);
}

.searchbox label strong {
  color: var(--ink);
  font-size: 1.15rem;
}

.searchbox p {
  margin: .25rem 0 .7rem;
}

.searchbox input {
  width: 100%;
  min-height: 54px;
  padding: .8rem 1rem;
  border: 2px solid var(--line);
  border-radius: 4px;
  background: var(--surface);
  color: var(--ink);
}

.searchbox input::placeholder {
  color: var(--muted);
  opacity: 1;
}

.searchbox input:focus {
  border-color: var(--focus);
}

#search-results {
  display: grid;
  gap: .35rem;
  margin-top: .8rem;
}

.search-summary {
  margin: .2rem 0 !important;
  color: var(--accent);
  font-family: var(--mono);
  font-size: .8rem;
  font-weight: 700;
  text-transform: uppercase;
}

.result {
  display: block;
  padding: .9rem;
  border: 2px solid transparent;
  border-bottom-color: var(--line-soft);
  color: var(--ink);
  text-decoration: none;
}

.result:hover,
.result:focus {
  border-color: var(--link);
  background: #edf7fc;
}

.result-name {
  display: block;
  color: var(--ink);
  font-size: 1.15rem;
  font-weight: 800;
}

.result-meta,
.result-lede {
  display: block;
}

.result-meta {
  margin: .15rem 0;
  color: var(--green);
  font-size: .88rem;
  font-weight: 700;
}

.result-lede {
  color: var(--muted);
  font-size: .92rem;
  line-height: 1.5;
}

/* Home page */
.spine {
  position: relative;
  max-width: 900px;
  margin: 1rem 0 6rem;
  padding-left: clamp(1.3rem, 6vw, 5rem);
}

.spine:before {
  content: "";
  position: absolute;
  left: clamp(.25rem, 2vw, 1.35rem);
  top: .75rem;
  bottom: .75rem;
  width: 3px;
  background: var(--line);
}

.spine-person {
  position: relative;
  display: grid;
  grid-template-columns: minmax(125px, .36fr) 1fr;
  gap: clamp(1rem, 5vw, 4.5rem);
  padding: 0 0 3.3rem;
}

.spine-person:last-child {
  padding-bottom: 0;
}

.spine-person:before {
  content: "";
  position: absolute;
  left: calc(clamp(.25rem, 2vw, 1.35rem) * -1 - clamp(1.3rem, 6vw, 5rem) + 1.25rem);
  top: .65rem;
  width: 12px;
  height: 12px;
  border: 3px solid var(--accent);
  border-radius: 50%;
  background: var(--page);
}

.spine-person h3 {
  font-size: clamp(1.5rem, 3vw, 2.2rem);
}

.spine-person h3 a {
  color: var(--ink);
}

.spine-meta {
  color: var(--muted);
}

.spine-place,
.place-name {
  color: var(--green);
  font-weight: 700;
}

.story-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 1.25rem;
  margin-bottom: 5rem;
}

.story-card {
  grid-column: span 6;
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 380px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  text-decoration: none;
  box-shadow: var(--shadow);
}

.story-card:nth-child(3) {
  grid-column: span 7;
}

.story-card:nth-child(4) {
  grid-column: span 5;
  grid-template-columns: 1fr;
}

.story-art {
  min-height: 260px;
  overflow: hidden;
  background: var(--surface-soft);
  padding: 1rem;
}

.story-art img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.story-copy {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: clamp(1.4rem, 3vw, 2.4rem);
}

.story-copy p {
  color: var(--muted);
}

.quiet-entry {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin: 3rem 0 5rem;
  border-top: 2px solid var(--line);
  border-bottom: 2px solid var(--line);
}

.quiet-entry a {
  padding: 1.5rem;
  border-right: 1px solid var(--line);
  color: var(--ink);
  font-size: 1.15rem;
}

.quiet-entry a:last-child {
  border-right: 0;
}

.quiet-entry small {
  display: block;
  margin-top: .35rem;
  color: var(--muted);
  font-size: .85rem;
  font-weight: 400;
}

/* Person pages */
.person-main {
  min-width: 0;
}

.person-head {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 360px;
  min-height: clamp(360px, 55vh, 590px);
  padding: 3rem 0 4rem;
}

.person-head h1 {
  max-width: 950px;
}

.person-head .dates {
  color: var(--muted);
  font-size: clamp(1.15rem, 2.5vw, 1.5rem);
}

.person-head .lede {
  margin-top: 1.25rem;
}

.identification {
  max-width: 70ch;
  margin: 1rem 0 0;
  color: var(--muted);
  font-size: 1.08rem;
  font-weight: 700;
}

.person-overview {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 390px);
  align-items: start;
  gap: clamp(1.5rem, 4vw, 4rem);
  margin: 0 0 2rem;
}

.person-introduction {
  min-width: 0;
}

.person-infobox {
  border: 2px solid var(--line);
  border-top: 7px solid var(--accent);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.person-infobox h2 {
  margin: 0;
  padding: 1rem 1.15rem;
  border-bottom: 2px solid var(--line);
  background: var(--surface-soft);
  font-size: 1.45rem;
}

.person-infobox dl {
  margin: 0;
}

.person-infobox dt,
.person-infobox dd {
  margin: 0;
  padding: .7rem 1rem;
  border-bottom: 1px solid var(--line-soft);
}

.person-infobox dt {
  padding-bottom: 0;
  color: var(--accent);
  font-size: .8rem;
  font-weight: 800;
  text-transform: uppercase;
}

.person-infobox dd {
  padding-top: .15rem;
}

.infobox-note {
  color: var(--muted);
  font-size: .86rem;
}

.person-contents {
  max-width: 760px;
  margin: 2.5rem 0 4rem;
  padding: 1.2rem 1.4rem;
  border: 2px solid var(--line);
  background: var(--surface-soft);
}

.person-contents h2 {
  margin: 0 0 .65rem;
  font-size: 1.55rem;
}

.person-contents ol {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .25rem 1.5rem;
  margin: 0;
  padding-left: 1.5rem;
}

.person-contents a {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
}

.reference-section {
  max-width: 78rem;
}

.transcript-label {
  color: var(--accent);
  font-weight: 800;
}

.occupation-list blockquote {
  margin: .6rem 0 1.5rem;
  padding: .8rem 1rem;
  border-left: 5px solid var(--accent);
  background: #fff8e8;
  font-family: var(--mono);
  white-space: pre-wrap;
}

.see-also a,
.source-list a {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
}

.compelling-narratives {
  margin: 0 0 5rem;
  padding: clamp(1.5rem, 4vw, 3rem);
  border: 2px solid var(--line);
  border-top: 9px solid var(--accent);
  background: var(--surface-soft);
}

.compelling-narratives > h2 {
  margin-top: .2rem;
}

.narrative-list {
  display: grid;
  gap: 1rem;
}

.narrative-card {
  padding: 1.25rem;
  border: 1px solid var(--line);
  border-left: 6px solid var(--accent);
  background: var(--surface);
}

.narrative-card .anchor-link {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  margin-left: .6rem;
}

.recorded-as,
.uncertain-name {
  color: var(--accent);
  font-weight: 700;
}

.recorded-as {
  margin: .7rem 0 0;
  font-style: italic;
}

.uncertain-name {
  display: inline-flex;
  align-items: center;
  font-size: .9rem;
}

.record-section {
  margin-top: 4rem;
}

.relationship-path {
  position: relative;
  margin: 0 0 3.5rem;
  padding: 1.1rem 1.2rem 1.1rem 3.5rem;
  border-top: 2px solid var(--line);
  border-bottom: 2px solid var(--line);
  background: var(--surface-soft);
  color: var(--ink);
}

.relationship-path:before {
  content: "⌁";
  position: absolute;
  left: 1rem;
  color: var(--green);
  font-size: 2rem;
}

.family-block {
  margin: 2rem 0;
  padding: 1.25rem;
  border: 1px solid var(--line);
  background: var(--surface);
}

.family-block h2 {
  margin-top: 0;
  font-size: 1.5rem;
}

.family-block h3 {
  margin: 1.25rem 0 .45rem;
  color: var(--accent);
  font-size: .8rem;
  letter-spacing: .06em;
  text-transform: uppercase;
}

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

.family-list li {
  margin: .15rem 0;
}

.family-list a,
.family-list .current {
  display: block;
  min-height: 48px;
  padding: .5rem .25rem;
}

.family-list .current {
  border-left: 4px solid var(--accent);
  padding-left: .65rem;
  color: var(--ink);
}

.family-list .current span {
  color: var(--accent);
  font-size: .8rem;
}

.chart-route {
  margin-top: 1rem;
}

.two-col {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(240px, .72fr);
  gap: clamp(1.5rem, 4vw, 4rem);
}

.timeline {
  position: relative;
  margin-left: .55rem;
  padding-left: 2rem;
  border-left: 2px solid var(--line);
}

.event {
  position: relative;
  margin: 0 0 2.5rem;
}

.event-icon {
  position: absolute;
  left: -2.9rem;
  top: 0;
  display: grid;
  place-items: center;
  width: 1.7rem;
  height: 1.7rem;
  border: 2px solid var(--accent);
  border-radius: 50%;
  background: var(--page);
  color: var(--ink);
  font-size: .8rem;
}

.event time {
  color: var(--accent);
  font-family: var(--mono);
  font-size: .8rem;
  font-weight: 700;
}

.event h3 {
  margin: .2rem 0;
}

.event p {
  margin: .25rem 0;
}

.source-ref {
  font-size: .88rem;
}

.source-card {
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
}

.source-card h3 {
  font-size: 1.5rem;
}

.source-card blockquote,
.feature-story blockquote,
.biography blockquote,
.article blockquote {
  position: relative;
  margin: 2rem 0;
  padding: clamp(1.25rem, 4vw, 2.5rem);
  border: 1px solid var(--line);
  border-left: 6px solid var(--accent);
  background: #fff8e8;
  color: var(--ink);
  font-family: var(--mono);
  font-size: clamp(.82rem, 1.5vw, 1rem);
  line-height: 1.75;
  white-space: pre-wrap;
}

.source-card blockquote:before,
.biography blockquote:before {
  display: block;
  margin-bottom: 1.2rem;
  color: var(--accent);
  font-family: var(--body);
  font-size: .8rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.source-card blockquote:before {
  content: "record transcription";
}

.biography blockquote:before {
  content: "record quotation";
}

.life-story {
  margin: 0 0 4rem;
}

.life-story > h2 {
  margin-top: 0;
}

.biography {
  max-width: 66ch;
  margin: 0 0 1.35rem;
  color: var(--ink);
  font-size: clamp(1.05rem, 1.8vw, 1.2rem);
  line-height: 1.75;
}

.biography p {
  margin: 0 0 1.35em;
}

.evidence-note {
  max-width: 66ch;
  margin: .5rem 0 0;
  padding-top: 1rem;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: .92rem;
}

.thin-page,
.privacy {
  background: var(--surface);
}

.thin-page {
  margin: 1rem 0 3rem;
  padding: 1rem 1.4rem;
  border: 1px solid var(--line);
  border-left: 6px solid var(--green);
}

.privacy {
  max-width: 760px;
  margin: 5rem auto;
  padding: 2rem;
  border: 2px solid var(--line);
}

.privacy h1 {
  font-size: clamp(2.5rem, 8vw, 5rem);
}

.sibling-nav {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 3rem 0;
  padding: 1rem 0;
  border-top: 2px solid var(--line);
  border-bottom: 2px solid var(--line);
}

.sibling-nav a:last-child {
  text-align: right;
}

.sibling-nav small {
  display: block;
  color: var(--muted);
}

.open-question {
  border-left: 5px solid var(--red);
  padding-left: 1.5rem;
}

/* Documents and articles */
.doc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
  gap: 2rem;
}

.doc-card {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.doc-card > a,
.doc-card > span {
  display: block;
  padding: clamp(1rem, 3vw, 2rem);
  background: var(--surface-soft);
}

.doc-card .doc-preview {
  position: relative;
  padding-bottom: 3.35rem;
}

.doc-preview span {
  position: absolute;
  left: 1rem;
  right: 1rem;
  bottom: .85rem;
  color: var(--ink);
  font-size: .8rem;
  font-weight: 800;
  text-align: center;
  text-transform: uppercase;
}

.doc-card img {
  display: block;
  width: 100%;
  height: min(64vw, 580px);
  object-fit: contain;
  background: var(--surface);
}

.doc-body {
  padding: 1.2rem 1.4rem;
}

.pdf-tile {
  display: grid;
  place-items: center;
  height: 360px;
  background: #f3ded6;
  color: var(--red);
  font-size: 2rem;
  font-weight: 800;
}

.document-exhibit,
.feature-document {
  margin: 3rem 0;
  padding: clamp(1rem, 4vw, 2.5rem);
  background: var(--surface-soft);
}

.document-exhibit img,
.feature-document img {
  display: block;
  width: 100%;
  max-height: 900px;
  object-fit: contain;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.feature-document figcaption {
  margin-top: .85rem;
  color: var(--ink);
  font-size: .9rem;
}

.article {
  font-size: 1.05rem;
  line-height: 1.75;
}

.article p {
  margin: 0 0 1.3em;
}

.article h2 {
  margin-top: 2.2em;
}

.feature-hero {
  max-width: 980px;
  padding: 5rem 0 3rem;
}

.table-wrap {
  max-width: 100%;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

.transcription {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--mono);
  font-size: .82rem;
}

.transcription caption {
  margin-bottom: .7rem;
  color: var(--ink);
  font-family: var(--body);
  font-size: 1.4rem;
  font-weight: 800;
  text-align: left;
}

.transcription th,
.transcription td {
  padding: .7rem;
  border: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}

.transcription th {
  width: 30%;
  background: var(--surface-soft);
  color: var(--ink);
}

.burial-journey li {
  margin: 1rem 0;
}

.journey-list {
  padding: 0;
  list-style: none;
}

.journey-list li {
  margin: .8rem 0;
}

.journey-list a {
  display: flex;
  gap: .9rem;
  align-items: flex-start;
  padding: 1rem;
  border: 2px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  text-decoration: none;
}

.journey-list a:hover,
.journey-list a:focus-visible {
  border-color: var(--accent);
}

.journey-number,
.journey-marker {
  display: inline-flex;
  flex: 0 0 2.1rem;
  align-items: center;
  justify-content: center;
  width: 2.1rem;
  height: 2.1rem;
  border: 3px solid #ffffff;
  border-radius: 50%;
  background: var(--red);
  color: #ffffff;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 1px 5px rgba(0, 0, 0, .45);
}

.journey-date {
  color: var(--muted);
  font-weight: 700;
}

.feature-links {
  padding: 1rem 0;
}

.machine-transcript {
  margin-top: 1rem;
  padding: .9rem;
  border: 2px dashed var(--line);
  border-radius: 6px;
  background: var(--surface-soft);
}

.machine-transcript summary {
  color: var(--accent);
  font-weight: 800;
  cursor: pointer;
}

.machine-transcript pre {
  max-height: 30rem;
  overflow: auto;
  padding: 1rem;
  border-left: 4px solid var(--accent);
  background: var(--surface);
  color: var(--ink);
  font: .8rem/1.55 var(--mono);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.transcript-card {
  margin: 1.5rem 0;
  padding: 1rem;
  border: 1px solid var(--line);
  background: var(--surface);
}

/* Lists, maps, and small utilities */
.stats,
.chart-key,
.chart-actions,
.map-fallback {
  /* One place per line. This was display:flex, which ran the place names
     together into a single unreadable line on wide screens. */
  display: block;
  list-style: disc;
}

.map-fallback li {
  display: list-item;
  margin: .35rem 0;
}

.stats {
  margin: 2rem -.45rem;
}

.stat {
  min-width: 150px;
  margin: .45rem;
  padding: .25rem .8rem;
  border-left: 4px solid var(--accent);
}

.stat strong {
  display: block;
  font-size: 2.1rem;
  font-weight: 800;
}

.map {
  z-index: 1;
  height: 460px;
  border: 2px solid var(--line);
  border-radius: 6px;
  background: #dcecf4;
}

.map-fallback {
  padding-left: 1.3rem;
}

.map-fallback > * {
  margin: .25rem .75rem .25rem 0;
}

.marker-key {
  color: var(--red);
  font-size: .8rem;
  font-weight: 800;
  text-transform: uppercase;
}

.burial-marker {
  filter: hue-rotate(130deg) saturate(1.8);
}

.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
  background: var(--surface);
  color: var(--ink);
}

.leaflet-popup-content,
.leaflet-popup-content a {
  color: var(--ink);
  font-family: var(--body);
  font-size: .9rem;
  line-height: 1.45;
}

.leaflet-popup-content a {
  color: var(--link);
}

.leaflet-container,
.leaflet-control-attribution {
  font-size: .8rem !important;
}

.leaflet-container .map-loading {
  display: none;
}

.place-list {
  columns: 2;
  column-gap: 3rem;
}

.place-list section {
  break-inside: avoid;
}

.pill {
  display: inline-block;
  min-height: 48px;
  margin: .2rem;
  padding: .4rem .7rem;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--surface);
  font-size: .88rem;
}

.context-list .card {
  margin-bottom: .8rem;
}

.surname-start {
  margin-bottom: 2rem;
}

.surname-button,
.help-button {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  margin: .3rem;
  padding: .55rem .8rem;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--surface);
}

.surname-group {
  margin: 2rem 0;
}

.surname-list {
  columns: 2;
  padding: 0;
  list-style: none;
}

.surname-list li {
  break-inside: avoid;
  margin: .35rem 0 1rem;
}

.about-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
}

.about-grid section {
  padding: 1rem;
  border: 1px solid var(--line);
  border-top: 6px solid currentColor;
  background: var(--surface);
}

.ship-image,
.person-ship-image {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
}

.ship-image img,
.person-ship-image img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 560px;
  object-fit: contain;
}

.ship-image figcaption,
.person-ship-image figcaption {
  padding: .7rem .8rem;
  color: var(--muted);
  font-size: .85rem;
  font-weight: 600;
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.ship-card {
  display: grid;
  grid-template-rows: 180px 1fr;
  min-width: 0;
  padding: 0;
}

.ship-thumbnail {
  display: block;
  overflow: hidden;
  border-bottom: 1px solid var(--line);
  background: var(--surface-soft);
}

.ship-thumbnail img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ship-card-copy {
  display: block;
  min-width: 0;
  padding: 1rem 1.15rem;
}

.ship-card-copy h3 {
  overflow-wrap: anywhere;
}

.person-ship-card {
  margin: 1.5rem 0;
  padding: 1rem;
  border: 2px solid var(--green);
  border-radius: 6px;
  background: var(--green-soft);
}

.person-ship-card > p {
  margin-top: 0;
}

.person-ship-image {
  max-width: 680px;
}

.picture-version {
  margin: 1.5rem 0;
  border-top: 2px solid var(--line);
  border-bottom: 2px solid var(--line);
  background: var(--page);
}

.picture-version > summary {
  min-height: 52px;
  padding: .8rem 1.25rem;
  background: var(--surface-soft);
  color: var(--ink);
  cursor: pointer;
  font-weight: 800;
}

.picture-version > p,
.picture-version > noscript > p,
.picture-version > .chart-key {
  max-width: var(--max);
  margin-right: auto;
  margin-left: auto;
  padding-right: 1.25rem;
  padding-left: 1.25rem;
}

.generation-list,
.tree-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 28rem), 1fr));
  gap: 1rem;
  max-width: var(--max);
  margin: 0 auto;
  padding: .5rem 1.25rem 2.5rem;
  list-style: none;
}

.generation-group {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  border: 2px solid var(--line);
  border-top: 7px solid var(--accent);
  border-radius: 6px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.generation-group h2 {
  margin: 0;
  padding: .8rem 1rem;
  border-bottom: 2px solid var(--line);
  background: var(--surface-soft);
  color: var(--ink);
  font-size: clamp(1.15rem, 2.5vw, 1.45rem);
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.generation-group ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.generation-group li + li {
  border-top: 1px solid var(--line-soft);
}

.generation-list .generation-group a,
.tree-list .generation-group a {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 48px;
  padding: .75rem 1rem;
  background: var(--surface);
  color: var(--link);
  line-height: 1.35;
  overflow-wrap: anywhere;
  text-decoration-thickness: 2px;
}

.generation-list .generation-group a:hover,
.generation-list .generation-group a:focus,
.tree-list .generation-group a:hover,
.tree-list .generation-group a:focus {
  background: #edf7fc;
}

.generation-group strong {
  font-size: 1.08rem;
  font-weight: 800;
}

.generation-group a > span {
  margin-top: .2rem;
  color: var(--muted);
  font-size: .85rem;
  font-weight: 600;
  text-decoration: none;
}

/* Interactive canvas chart */
.chart-page main {
  max-width: none;
  padding: 0;
}

.chart-page .breadcrumbs,
.chart-intro {
  max-width: var(--max);
  margin-right: auto;
  margin-left: auto;
}

.chart-page .breadcrumbs {
  padding-right: 1.25rem;
  padding-left: 1.25rem;
  font-size: .8rem;
}

.chart-intro {
  display: block;
  padding: 2.2rem 1.25rem 1.2rem;
}

.chart-intro h1 {
  max-width: 18ch;
  font-size: clamp(2rem, 5vw, 3rem);
  line-height: 1.05;
}

.chart-intro .plain-label {
  font-size: .8rem;
}

.chart-intro .lede {
  max-width: var(--measure);
  margin: .6rem 0;
  font-size: 1.1rem;
}

.chart-key {
  margin: .5rem -.35rem;
  color: var(--ink);
  font-size: .85rem;
}

.chart-key span {
  margin: .35rem;
  font-weight: 700;
}

.chart-key span:before {
  content: "";
  display: inline-block;
  width: .65rem;
  height: .65rem;
  margin-right: .35rem;
  border: 3px solid currentColor;
  vertical-align: -.08rem;
}

.chart-key .living-key:before {
  border-style: dashed;
}

.chart-toolbar {
  position: relative;
  z-index: 5;
  display: grid;
  grid-template-columns: minmax(240px, 360px) minmax(0, 1fr);
  gap: .75rem 1rem;
  padding: .9rem max(1.25rem, calc((100vw - var(--max)) / 2 + 1.25rem));
  border-top: 2px solid var(--line);
  border-bottom: 2px solid var(--line);
  background: var(--surface-soft);
}

.chart-picker {
  display: grid;
  gap: .25rem;
}

.chart-toolbar label,
.chart-toolbar .hint {
  color: var(--ink);
  font-size: .85rem;
  font-weight: 700;
}

.chart-toolbar select {
  width: 100%;
  min-height: 48px;
  padding: .55rem .7rem;
  border: 2px solid var(--line);
  border-radius: 4px;
  background: var(--surface);
  color: var(--ink);
}

.chart-actions {
  align-items: flex-end;
  margin: -.3rem;
}

.chart-actions button,
.chart-actions .button {
  min-width: 48px;
  margin: .3rem;
}

.chart-toolbar .hint {
  grid-column: 1 / -1;
  margin: 0;
  line-height: 1.4;
}

.chart-stage {
  position: relative;
  height: 600px;
  height: 68vh;
  min-height: 520px;
  overflow: hidden;
  border-bottom: 2px solid var(--line);
  background: #f7f1e4;
}

.chart-stage canvas {
  display: block;
  width: 100%;
  height: 100%;
  cursor: grab;
  touch-action: none;
}

.chart-stage canvas:active {
  cursor: grabbing;
}

.chart-stage canvas:focus {
  outline: 4px solid var(--focus);
  outline-offset: -4px;
}

.chart-tooltip {
  position: absolute;
  z-index: 4;
  display: none;
  max-width: 320px;
  padding: .65rem .8rem;
  border: 2px solid var(--accent);
  border-radius: 4px;
  background: var(--surface);
  color: var(--ink);
  font-size: .9rem;
  line-height: 1.45;
  pointer-events: none;
  box-shadow: var(--shadow);
}

.tree-fallback {
  max-width: var(--max);
  margin: 2rem auto;
  padding: 0 1.25rem;
}

.tree-fallback summary {
  min-height: 48px;
  padding: .8rem 0;
  color: var(--ink);
  cursor: pointer;
  font-size: 1.15rem;
  font-weight: 800;
}

.tree-fallback ol {
  padding-left: 1rem;
  border-left: 2px solid var(--line);
  list-style: none;
}

.tree-fallback li {
  margin: .45rem 0;
}

.tree-fallback a {
  display: inline-block;
  min-height: 48px;
  padding: .35rem 0;
}

/* Person-page editorial overhaul */
.person-main,
.person-main * {
  min-width: 0;
}

.person-main {
  --person-measure: 72ch;
}

.person-head {
  max-width: 58rem;
  min-height: clamp(290px, 43vh, 470px);
  padding: clamp(2.5rem, 7vw, 5rem) 0 3.2rem;
  border-bottom: 1px solid var(--line-soft);
}

.person-head h1 {
  max-width: 16ch;
  margin: .12em 0 .18em;
  font-size: clamp(2.5rem, 7vw, 4.6rem);
  line-height: 1.02;
}

.person-head .dates {
  margin: .4rem 0 0;
  color: var(--accent);
  font-size: clamp(1.15rem, 2.5vw, 1.45rem);
  font-weight: 800;
}

.person-head .identification {
  max-width: 68ch;
  margin-top: 1rem;
  color: var(--ink);
  font-size: 1.05rem;
  font-weight: 400;
  line-height: 1.6;
}

.page-evidence {
  margin: 1rem 0 0;
}

.person-overview {
  grid-template-columns: minmax(0, 1fr) minmax(18rem, 23rem);
  gap: clamp(1.5rem, 5vw, 4.5rem);
  max-width: 68rem;
  margin: clamp(2rem, 6vw, 4rem) 0 3rem;
}

.person-introduction,
.person-introduction .lede,
.person-introduction > p {
  max-width: var(--person-measure);
}

.person-introduction .lede {
  margin: 0 0 1.35rem;
  font-size: 1.18rem;
  line-height: 1.65;
}

.person-introduction > p {
  margin-top: 0;
  margin-bottom: 1.15rem;
}

.person-infobox {
  overflow: hidden;
  border: 1px solid var(--line);
  border-top: 7px solid var(--accent);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 12px 30px rgba(50, 39, 22, .11);
}

.person-infobox h2 {
  padding: 1.1rem 1.25rem .95rem;
  border-bottom: 1px solid var(--line);
  background: var(--surface-soft);
  font-size: 1.4rem;
}

.person-infobox dl {
  display: grid;
  grid-template-columns: minmax(6rem, .38fr) minmax(0, 1fr);
}

.person-infobox dt,
.person-infobox dd {
  padding: .85rem 1rem;
  border-bottom: 1px solid var(--line-soft);
}

.person-infobox dt {
  padding-right: .5rem;
  color: var(--muted);
  font-size: .8rem;
  letter-spacing: .025em;
  line-height: 1.45;
}

.person-infobox dd {
  padding-left: .5rem;
  color: var(--ink);
  line-height: 1.48;
  overflow-wrap: anywhere;
}

.infobox-note {
  display: inline-block;
  margin-top: .25rem;
  font-size: .85rem;
  line-height: 1.5;
}

.person-contents {
  max-width: var(--person-measure);
  margin: 3.5rem 0 5rem;
  padding: 1.35rem clamp(1rem, 4vw, 1.75rem) 1.5rem;
  overflow: hidden;
  border: 1px solid var(--line);
  border-top: 7px solid var(--green);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 8px 22px rgba(50, 39, 22, .09);
}

.contents-kicker,
.exhibit-kicker {
  margin: 0 0 .15rem;
  color: var(--green);
  font-size: .8rem;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.person-contents h2 {
  margin: 0 0 .8rem;
  font-size: 1.65rem;
}

.person-contents ol {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 1.5rem;
  padding: 0;
  border-top: 1px solid var(--line-soft);
  list-style: none;
  counter-reset: contents;
}

.person-contents li {
  counter-increment: contents;
  border-bottom: 1px solid var(--line-soft);
}

.person-contents a {
  display: grid;
  grid-template-columns: 2rem 1fr;
  align-items: center;
  min-height: 54px;
  padding: .35rem .2rem;
  text-decoration: none;
}

.person-contents a:before {
  content: counter(contents, decimal-leading-zero);
  color: var(--accent);
  font-family: var(--mono);
  font-size: .8rem;
  font-weight: 700;
}

.person-contents a:hover,
.person-contents a:focus-visible {
  background: #edf7fc;
  text-decoration: underline;
}

.reference-section,
.family-block,
.relationship-path,
.thin-summary,
.sibling-nav,
.person-return {
  max-width: var(--person-measure);
}

.reference-section {
  margin: 0 0 5rem;
}

.reference-section > h2,
.family-block > h2,
.thin-summary > h2 {
  margin: 4.2rem 0 1.15rem;
  padding-top: .65rem;
  border-top: 3px solid var(--ink);
  font-size: clamp(1.75rem, 4vw, 2.25rem);
}

.reference-section h3 {
  margin: 2.1rem 0 .55rem;
  font-size: 1.3rem;
}

.reference-section p,
.reference-section li,
.biography p {
  line-height: 1.7;
}

.reference-section p {
  margin-top: 0;
  margin-bottom: 1.25rem;
}

.reference-section li + li,
.see-also li + li,
.source-list li + li {
  margin-top: .55rem;
}

.biography {
  max-width: var(--person-measure);
  font-size: 1rem;
  line-height: 1.72;
}

.family-block {
  margin: 0 0 5rem;
  padding: 0;
  border: 0;
  background: transparent;
}

.family-block h3 {
  margin-top: 1.6rem;
  font-size: .85rem;
}

.family-list li {
  margin: 0;
  border-bottom: 1px solid var(--line-soft);
}

.family-list a,
.family-list .current {
  display: flex;
  align-items: center;
  padding: .55rem .7rem;
}

.badge {
  border-radius: 5px;
  padding: .22rem .58rem;
  line-height: 1.45;
  letter-spacing: .02em;
  text-transform: none;
}

.badge.documented {
  border-color: var(--green);
  background: var(--green-soft);
  color: #0d4a2b;
}

.badge.partial,
.badge.compiled,
.badge.tree-supplied {
  border-color: var(--accent);
  background: var(--accent-soft);
  color: #633100;
}

.badge.unverified,
.badge.unproven {
  border-color: var(--red);
  background: var(--red-soft);
  color: #742116;
}

.timeline {
  position: relative;
  margin: 1.6rem 0 0;
  padding: 0;
  border: 0;
}

.timeline:before {
  content: "";
  position: absolute;
  top: .7rem;
  bottom: 1.6rem;
  left: 8.75rem;
  width: 3px;
  background: var(--line);
}

.event {
  display: grid;
  grid-template-columns: 7.35rem minmax(0, 1fr);
  gap: 2.8rem;
  margin: 0;
  padding: 0 0 2.8rem;
}

.event-date {
  position: relative;
  padding-top: .16rem;
  text-align: right;
}

.event-marker {
  position: absolute;
  top: 0;
  left: calc(100% + .67rem);
  display: grid;
  place-items: center;
  width: 1.65rem;
  height: 1.65rem;
  border: 3px solid var(--accent);
  border-radius: 50%;
  background: var(--page);
  color: var(--ink);
  font-size: .8rem;
  line-height: 1;
}

.event time {
  color: var(--accent);
  font-size: .85rem;
  line-height: 1.35;
}

.event-body h3 {
  margin: 0 0 .45rem;
  font-size: 1.25rem;
}

.event-body p {
  margin: 0 0 .65rem;
}

.event-evidence {
  margin-top: .85rem !important;
}

.source-ref {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  font-size: .85rem;
}

.source-card {
  max-width: var(--person-measure);
  margin: 2.5rem 0;
  padding: 0;
  overflow: hidden;
  border: 2px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 10px 28px rgba(50, 39, 22, .1);
}

.record-exhibit-head {
  padding: 1.35rem clamp(1rem, 4vw, 1.8rem) 1rem;
  border-bottom: 1px solid var(--line-soft);
  background: var(--surface-soft);
}

.record-exhibit-head h3 {
  margin: .15rem 0 .6rem;
  font-size: 1.45rem;
}

.record-exhibit-head p {
  margin: .5rem 0;
}

.exhibit-kicker {
  color: var(--accent);
}

.source-card .transcript-label {
  margin: 1.25rem clamp(1rem, 4vw, 1.8rem) .6rem;
}

.source-card blockquote,
.occupation-list blockquote {
  margin: .5rem clamp(1rem, 4vw, 1.8rem) 0;
  padding: clamp(1.25rem, 4vw, 2rem);
  border: 1px solid var(--line);
  border-left: 8px solid var(--accent);
  border-radius: 4px;
  background: #fff9e9;
  color: var(--ink);
  font-family: var(--mono);
  font-size: 1rem;
  line-height: 1.72;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  box-shadow: inset 0 0 0 1px rgba(122, 61, 0, .06);
}

.source-card blockquote:before,
.occupation-list blockquote:before {
  content: "verbatim record";
  display: block;
  margin-bottom: .9rem;
  color: var(--accent);
  font-family: var(--body);
  font-size: .8rem;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.record-citation,
.source-card .record-citation {
  display: block;
  margin: 0 clamp(1rem, 4vw, 1.8rem) 1.4rem;
  padding: .9rem 0 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-family: var(--body);
  font-size: .85rem;
  line-height: 1.6;
  text-align: left;
}

.record-links {
  display: block;
  margin-top: .35rem;
}

.record-citation a,
.record-links a {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
}

.occupation-list {
  max-width: var(--person-measure);
  padding-left: 1.25rem;
}

.occupation-list > li {
  margin-bottom: 2rem;
}

.occupation-list blockquote,
.occupation-list .record-citation {
  margin-right: 0;
  margin-left: 0;
}

/* Long verbatim text stays native, readable, and complete without JavaScript. */
.records-scale {
  max-width: var(--person-measure);
  margin: 1rem 0 1.5rem;
  padding: .75rem 1rem;
  border-left: 5px solid var(--green);
  background: var(--surface-soft);
  font-weight: 800;
}

.long-transcription {
  margin: 1.15rem 0 0;
  border-top: 2px solid var(--line);
  color: var(--ink);
  font-family: var(--body);
  white-space: normal;
}

.long-transcription > summary {
  box-sizing: border-box;
  min-height: 48px;
  padding: .7rem .8rem .7rem 1.65rem;
  background: var(--surface-soft);
  color: var(--link);
  cursor: pointer;
  font-family: var(--body);
  font-size: 1rem;
  font-weight: 800;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.long-transcription > summary:hover {
  background: #e5f2f8;
  color: var(--link-hover);
}

.long-transcription > summary::marker {
  color: var(--accent);
}

.summary-action,
.transcription-length {
  display: block;
}

.summary-hide,
.long-transcription[open] .summary-show {
  display: none;
}

.long-transcription[open] .summary-hide {
  display: block;
}

.transcription-length {
  margin-top: .15rem;
  color: var(--muted);
  font-size: 1rem;
  font-weight: 600;
}

.transcription-rest {
  padding-top: 1rem;
  color: var(--ink);
  font-family: var(--mono);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.long-transcription > .transcription-rest {
  display: block;
}

.doc-card blockquote.verbatim-extract {
  margin: 1rem 0 0;
  padding: 1rem;
  border: 1px solid var(--line);
  border-left: 6px solid var(--accent);
  background: #fff9e9;
  color: var(--ink);
  font-family: var(--mono);
  font-size: 1rem;
  line-height: 1.72;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.doc-grid {
  grid-template-columns: minmax(0, 1fr);
  max-width: var(--person-measure);
  gap: 2.5rem;
}

.doc-card {
  margin: 0;
  border: 2px solid var(--line);
  border-top: 7px solid var(--accent);
  border-radius: 8px;
  box-shadow: 0 12px 30px rgba(50, 39, 22, .12);
}

.doc-card > a,
.doc-card > span {
  border-bottom: 1px solid var(--line);
  background: #eee7d9;
}

.doc-card img {
  height: auto;
  max-height: 76vh;
  object-fit: contain;
  box-shadow: 0 3px 14px rgba(23, 20, 15, .16);
}

.doc-preview span {
  min-height: 48px;
  padding: .55rem .4rem;
  background: var(--surface);
  text-transform: none;
}

.doc-body {
  padding: 1.4rem clamp(1rem, 4vw, 1.8rem) 1.6rem;
}

.doc-body h3 {
  margin-top: 0;
}

.thin-summary {
  margin: 1rem 0 3.5rem;
  padding: 1.4rem clamp(1rem, 4vw, 1.8rem);
  border: 1px solid var(--line);
  border-left: 8px solid var(--green);
  border-radius: 7px;
  background: var(--green-soft);
}

.thin-summary > h2 {
  margin: .1rem 0 .8rem;
  padding: 0;
  border: 0;
  font-size: 1.65rem;
}

.thin-summary p:last-child {
  margin-bottom: 0;
}

.is-thin .person-head {
  min-height: 280px;
}

.is-thin .person-overview {
  max-width: 58rem;
}

.person-return {
  align-items: stretch;
  margin-top: 4rem;
  padding-top: 1.2rem;
  border-top: 2px solid var(--line);
}

.redirect-card {
  max-width: 44rem;
  margin: clamp(3rem, 12vw, 8rem) auto;
  padding: clamp(1.4rem, 5vw, 2.5rem);
  border: 2px solid var(--line);
  border-top: 8px solid var(--green);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.redirect-card h1 {
  font-size: clamp(2.2rem, 7vw, 3.8rem);
}

/* Enhancements */
[data-reveal] {
  opacity: 0;
  transform: translateY(12px);
}

.loaded [data-reveal] {
  animation: reveal .45s both;
  animation-delay: calc(var(--reveal, 0) * 60ms);
}

@keyframes reveal {
  to {
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 920px) {
  .header-inner {
    grid-template-columns: auto 1fr;
  }

  .site-nav {
    grid-column: 1 / -1;
    grid-row: 2;
    border-top: 1px solid var(--line-soft);
    /* Wrap onto as many rows as it takes rather than scrolling sideways.
       A swipe-to-scroll nav hides links from a reader who does not know to
       swipe, and this archive's audience should see every destination. */
    flex-wrap: wrap;
    overflow-x: visible;
    white-space: normal;
    padding-top: .15rem;
    padding-bottom: .15rem;
  }

  .site-nav a {
    margin-right: 1.1rem;
  }

  .text-size {
    justify-self: end;
  }

  .story-card,
  .story-card:nth-child(3),
  .story-card:nth-child(4) {
    grid-column: span 12;
  }

  .quiet-entry {
    grid-template-columns: 1fr 1fr;
  }

  .quiet-entry a:nth-child(2) {
    border-right: 0;
  }

  .quiet-entry a:nth-child(-n+2) {
    border-bottom: 1px solid var(--line);
  }

  .chart-intro,
  .chart-toolbar,
  .two-col,
  .person-overview {
    grid-template-columns: 1fr;
  }

  .chart-toolbar .hint {
    grid-column: auto;
  }
}

@media (max-width: 620px) {
  main {
    padding-right: .9rem;
    padding-left: .9rem;
  }

  .header-inner {
    padding: .35rem .65rem;
  }

  .home-button {
    margin-right: .5rem;
  }

  .text-size {
    padding-left: .25rem;
    border-left: 0;
  }

  .text-size span {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
  }

  .text-size button {
    min-width: 48px;
    margin-left: .2rem;
  }

  .site-nav a {
    margin-right: .85rem;
    font-size: .82rem;
  }

  .breadcrumbs {
    padding: .65rem 0;
    font-size: .8rem;
  }

  .hero {
    padding: 2.8rem 0 2rem;
  }

  .home-hero {
    min-height: auto;
    padding: 3rem 0 4rem;
  }

  .home-actions {
    align-items: stretch;
    flex-direction: column;
    margin: .5rem 0;
  }

  .home-actions > * {
    width: 100%;
    margin: .3rem 0;
    justify-content: center;
  }

  .spine-person {
    grid-template-columns: 1fr;
    gap: .25rem;
    padding-bottom: 2.6rem;
  }

  .story-card {
    grid-template-columns: 1fr;
  }

  .story-art {
    height: 280px;
  }

  .quiet-entry {
    grid-template-columns: 1fr;
  }

  .quiet-entry a {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .person-head {
    min-height: auto;
    padding: 3rem 0;
  }

  .person-contents ol {
    grid-template-columns: 1fr;
  }

  .narrative-card .anchor-link {
    display: flex;
    margin: .6rem 0 0;
  }

  .doc-grid {
    grid-template-columns: 1fr;
  }

  .source-card blockquote,
  .biography blockquote {
    padding: 1rem;
    font-size: 1rem;
  }

  .source-card blockquote {
    margin-right: 1rem;
    margin-left: 1rem;
  }

  .timeline:before {
    left: .75rem;
  }

  .event {
    display: block;
    padding: 0 0 2.7rem 2.65rem;
  }

  .event-date {
    position: static;
    margin-bottom: .35rem;
    text-align: left;
  }

  .event-marker {
    left: -.08rem;
  }

  .event-body h3 {
    margin-top: 0;
  }

  .place-list,
  .surname-list {
    columns: 1;
  }

  .map {
    height: 340px;
  }

  .chart-intro {
    padding: 1.8rem .9rem 1rem;
  }

  .generation-list,
  .tree-list {
    padding-right: .9rem;
    padding-left: .9rem;
  }

  .chart-toolbar {
    padding: .8rem .9rem;
  }

  .chart-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .5rem;
    margin: 0;
    width: 100%;
  }

  .chart-actions button,
  .chart-actions .button {
    width: 100%;
    margin: 0;
    padding: .55rem .35rem;
    font-size: .85rem;
  }

  .chart-stage {
    height: 400px;
    height: 56vh;
    min-height: 380px;
    max-height: 500px;
  }

  .tree-fallback {
    padding: 0 .9rem;
  }

  .transcription {
    font-size: .8rem;
  }

  .transcription th,
  .transcription td {
    padding: .5rem;
  }
}

@media (max-width: 420px) {
  .person-infobox dl {
    grid-template-columns: 1fr;
  }

  .person-infobox dt {
    padding: .8rem 1rem .12rem;
    border-bottom: 0;
  }

  .person-infobox dd {
    padding: 0 1rem .85rem;
  }

  .chart-actions {
    grid-template-columns: 1fr;
  }

  .chart-intro h1 {
    font-size: 2rem;
  }
}

@media (max-width: 620px) {
  .machine-transcript pre {
    max-height: none;
    overflow: visible;
  }
}

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

  *,
  *:before,
  *:after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }

  [data-reveal] {
    opacity: 1;
    transform: none;
  }
}

@media print {
  .site-header,
  footer,
  .searchbox,
  .chart-route,
  .picture-version,
  .map {
    display: none !important;
  }

  html,
  body {
    background: #ffffff;
    color: #111111;
    font-size: 11pt;
  }

  body:before {
    display: none;
  }

  main {
    max-width: none;
    padding: 0;
  }

  a {
    color: #111111;
    font-weight: 400;
  }

  .card,
  .source-card,
  .notice,
  .family-block,
  .privacy {
    border-color: #555555;
    background: #ffffff;
    color: #111111;
    box-shadow: none;
    break-inside: avoid;
  }

  .source-card blockquote,
  .feature-story blockquote,
  .biography blockquote,
  .article blockquote {
    border-color: #555555;
    background: #ffffff;
    color: #111111;
  }

  /* Closed disclosures are forced open on paper so every verbatim word prints. */
  details.long-transcription,
  details.long-transcription[open] {
    display: block;
  }

  details.long-transcription::details-content,
  details.long-transcription:not([open])::details-content {
    display: block !important;
    content-visibility: visible !important;
  }

  details.long-transcription > summary {
    display: none !important;
  }

  details.long-transcription > .transcription-rest {
    display: block !important;
  }

  .person-head {
    min-height: auto;
  }

  .doc-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Family perspectives: audience-facing starting pages and the home chooser. */
.perspective-chooser {
  padding: 2.2rem 0 2.5rem;
  border-bottom: 2px solid var(--accent);
}

.perspective-chooser > header {
  max-width: var(--measure);
  margin-bottom: 1.4rem;
}

.perspective-chooser h1 {
  max-width: 20ch;
  margin-bottom: .55rem;
  font-size: clamp(2.1rem, 6vw, 3.8rem);
}

.perspective-chooser header > p:last-child {
  max-width: 62ch;
  font-size: 1.08rem;
}

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

.perspective-choice {
  display: flex;
  min-width: 0;
  min-height: 260px;
  flex-direction: column;
  padding: 1.25rem;
  border: 2px solid var(--line);
  border-top: 7px solid var(--accent);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--ink);
  text-decoration: none;
  box-shadow: var(--shadow);
}

.perspective-choice:hover,
.perspective-choice:focus {
  border-color: var(--link);
  background: #f4faff;
  color: var(--ink);
}

.perspective-choice > strong {
  margin-bottom: .6rem;
  font-size: 1.4rem;
  line-height: 1.2;
}

.perspective-choice > span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.perspective-choice-action {
  display: flex;
  align-items: center;
  min-height: 48px;
  margin-top: auto;
  padding-top: .8rem;
  color: var(--link);
  font-weight: 800;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: .18em;
}

.home-hero h2 {
  max-width: 18ch;
  margin: .08em 0 .2em;
  font-size: clamp(2.2rem, 5vw, 3.6rem);
  line-height: 1.08;
}

.perspective-page main {
  max-width: 1120px;
}

.perspective-hero {
  max-width: var(--measure);
  padding: 2.8rem 0 2.2rem;
  border-bottom: 1px solid var(--line);
}

.perspective-hero h1 {
  max-width: 18ch;
  font-size: clamp(2.2rem, 6vw, 4rem);
}

.privacy-note {
  margin-top: 1.4rem;
  padding: 1rem 1.15rem;
  border-left: 5px solid var(--green);
  background: var(--green-soft);
}

.perspective-section,
.perspective-full-index {
  max-width: 880px;
  margin: 3rem 0;
}

.perspective-line {
  max-width: 760px;
  margin: 1.2rem 0 0;
  padding: 0;
  list-style: none;
  counter-reset: perspective-generation;
}

.perspective-line li {
  position: relative;
  min-width: 0;
  padding: .8rem .8rem .8rem 3.2rem;
  border-bottom: 1px solid var(--line-soft);
  counter-increment: perspective-generation;
}

.perspective-line li:before {
  position: absolute;
  left: 0;
  top: .72rem;
  display: flex;
  width: 2.25rem;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--accent);
  border-radius: 50%;
  background: var(--surface);
  color: var(--accent);
  content: counter(perspective-generation);
  font-weight: 800;
}

.perspective-line a {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  font-size: 1.12rem;
}

.perspective-line-detail {
  display: block;
  color: var(--muted);
}

.perspective-places {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem 1rem;
  max-width: 760px;
  padding: 0;
  list-style: none;
}

.perspective-places li {
  min-width: 0;
  border-bottom: 1px solid var(--line-soft);
}

.perspective-places a {
  display: flex;
  min-height: 48px;
  align-items: center;
  overflow-wrap: anywhere;
}

.perspective-discoveries {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.perspective-story,
.perspective-record {
  min-width: 0;
  padding: 1.2rem;
  border: 1px solid var(--line);
  border-left: 5px solid var(--accent);
  border-radius: var(--radius);
  background: var(--surface);
}

.perspective-story h3,
.perspective-record h3 {
  overflow-wrap: anywhere;
}

.perspective-full-index {
  padding: 1.4rem;
  border: 2px solid var(--link);
  background: #eaf5fa;
}

.redirect-message {
  max-width: 760px;
  margin: 3rem auto;
  text-align: center;
}

@media (max-width: 920px) {
  .perspective-choices {
    grid-template-columns: minmax(0, 1fr);
  }

  .perspective-choice {
    min-height: 0;
  }
}

@media (max-width: 620px) {
  .perspective-chooser {
    padding-top: 1.4rem;
  }

  .perspective-chooser h1,
  .perspective-hero h1 {
    max-width: none;
    font-size: clamp(2rem, 12vw, 2.65rem);
  }

  .home-hero h2 {
    max-width: none;
    font-size: clamp(2rem, 12vw, 2.65rem);
  }

  .perspective-places,
  .perspective-discoveries {
    grid-template-columns: minmax(0, 1fr);
  }

  .perspective-line li {
    padding-right: 0;
  }
}

/* Reference-work identity: warm paper, claret rules, and book typography. */
:root {
  --page: #fbf7ec;
  --surface: #fffefa;
  --surface-soft: #f1eadb;
  --ink: #17130f;
  --muted: #494137;
  --link: #174f68;
  --link-hover: #0d3548;
  --accent: #6d302d;
  --accent-soft: #f1deda;
  --green: #315b3d;
  --green-soft: #e3eee5;
  --red: #822f25;
  --red-soft: #f5e1dc;
  --line: #6a5d4d;
  --line-soft: #c9beab;
  --focus: #005fcc;
  --body: Georgia, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, serif;
  --ui: Arial, Helvetica, Verdana, system-ui, sans-serif;
  --max: 1180px;
  --measure: 76ch;
  --radius: 3px;
  --shadow: none;
}

body {
  font-family: var(--body);
  line-height: 1.62;
}

button,
input,
select,
summary,
.button,
.site-header,
.breadcrumbs,
.text-size,
.plain-label,
.eyebrow,
.section-kicker,
.contents-kicker,
.exhibit-kicker,
.badge,
.site-footer,
.chart-toolbar,
.chart-key,
.pdf-tile,
.record-citation,
.caption,
.spine-gen,
.reference-number,
.reference-back {
  font-family: var(--ui);
}

h1,
h2,
h3,
h4,
.footer-title {
  font-family: var(--body);
  letter-spacing: 0;
}

a {
  font-weight: 600;
}

/* Tap targets belong on controls, not on words inside a sentence.
   This rule used to apply `display:inline-flex; min-width:48px; min-height:48px`
   to EVERY link in main. That turned each one into an atomic inline box which
   cannot break across lines, with two visible consequences:

     1. A long link could not fit the shortened line boxes beside the floated
        infobox, so it dropped below the whole float — leaving a tall empty gap
        inside the "Featured story" notice on person pages.
     2. min-height:48px inflated the leading of any paragraph containing a link.

   WCAG 2.5.5/2.5.8 exempt links inline in a sentence from target sizing, so
   prose links are ordinary inline text again and the 48px target is kept for
   the links that genuinely act as buttons. */
main a {
  max-width: 100%;
}

main .button,
main .home-start a,
main .surname-buttons a,
main .person-return a,
main .person-contents a,
main .see-also a,
main .journey-list a {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  vertical-align: middle;
}

.site-header {
  border-bottom: 1px solid var(--line);
  background: #f8f1e3;
  box-shadow: none;
}

.header-inner {
  max-width: var(--max);
  padding-top: .3rem;
  padding-bottom: .3rem;
}

.home-button {
  color: var(--accent);
  font-family: var(--body);
  font-weight: 700;
}

.site-nav a {
  flex: 0 0 auto;
  justify-content: center;
  min-width: 48px;
  color: var(--ink);
  font-weight: 600;
}

.skip:focus {
  min-height: 48px;
}

.footer-note a {
  display: inline-flex;
  align-items: center;
  min-width: 48px;
  min-height: 48px;
}

main {
  max-width: var(--max);
  padding-bottom: 4.5rem;
}

.hero,
.person-head,
.feature-hero,
.chart-intro,
.home-hero {
  max-width: var(--measure);
  padding-top: 2.5rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--line);
}

.hero h1,
.person-head h1,
.feature-hero h1,
.chart-intro h1,
.home-hero h1 {
  max-width: 21ch;
  font-size: clamp(2.2rem, 5vw, 3.6rem);
  font-weight: 700;
  line-height: 1.08;
}

.hero .lede,
.feature-hero .lede,
.chart-intro .lede,
.home-hero .lede,
.person-head .identification {
  max-width: 74ch;
}

.home-hero {
  max-width: var(--measure);
  padding-bottom: 2.4rem;
}

.home-hero h1 {
  max-width: 18ch;
}

.person-head {
  max-width: var(--measure);
  min-height: 0;
}

.person-head h1 {
  max-width: 19ch;
}

.person-head .dates {
  color: var(--accent);
  font-family: var(--ui);
  font-size: 1.05rem;
  font-weight: 700;
}

.person-head .identification {
  margin-top: .75rem;
  font-size: 1rem;
  line-height: 1.62;
}

.disambiguation-note {
  max-width: 72ch;
  margin: .35rem 0 .65rem;
  padding-left: .85rem;
  border-left: 3px solid var(--accent);
  color: var(--muted);
}

.person-overview {
  display: block;
  max-width: 66rem;
  margin-top: 2rem;
  margin-bottom: 2.5rem;
}

.person-overview:after {
  display: table;
  clear: both;
  content: "";
}

.person-infobox {
  float: right;
  width: min(22rem, 39%);
  margin: 0 0 2rem 2.2rem;
  overflow: hidden;
  border: 1px solid var(--line);
  border-top: 5px solid var(--accent);
  border-radius: 0;
  background: var(--surface);
  box-shadow: none;
}

.person-infobox h2 {
  margin: 0;
  padding: .75rem .9rem;
  border-bottom: 1px solid var(--line);
  background: var(--accent-soft);
  font-size: 1.25rem;
  text-align: center;
}

.person-infobox dl {
  display: grid;
  grid-template-columns: minmax(6.2rem, .38fr) minmax(0, 1fr);
}

.person-infobox dt,
.person-infobox dd {
  padding: .62rem .7rem;
  border-bottom: 1px solid var(--line-soft);
  font-size: .8rem;
  line-height: 1.5;
}

.person-infobox dt {
  padding-right: .45rem;
  background: #f6f0e4;
  color: var(--ink);
  font-family: var(--ui);
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}

.person-infobox dd {
  padding-left: .6rem;
}

.infobox-portrait {
  margin: 0;
  padding: .7rem .7rem .55rem;
  border-bottom: 1px solid var(--line);
  background: #e9e0d0;
}

.portrait-crop {
  position: relative;
  width: 100%;
  height: 0;
  padding-top: 125%;
  overflow: hidden;
  border: 5px solid var(--surface);
  background: #d8cdbb;
}

.portrait-crop img {
  position: absolute;
  top: 0;
  left: 0;
  width: 225%;
  max-width: none;
  height: auto;
  transform: translate(-50%, -35%);
}

.infobox-portrait figcaption {
  margin-top: .45rem;
  color: var(--muted);
  font-family: var(--ui);
  font-size: .8rem;
  line-height: 1.45;
  text-align: center;
}

.person-infobox dt:last-of-type,
.person-infobox dd:last-of-type {
  border-bottom: 0;
}

.person-introduction,
.person-introduction .lede,
.person-introduction > p,
.reference-section,
.family-block,
.relationship-path,
.thin-summary,
.sibling-nav,
.person-return,
.biography,
.article {
  max-width: var(--measure);
}

.person-introduction .lede {
  font-size: 1.08rem;
  line-height: 1.62;
}

.page-contents {
  max-width: 42rem;
  margin: 2rem 0 3rem;
  padding: .9rem 1rem 1rem;
  overflow: visible;
  border: 1px solid var(--line);
  border-left: 5px solid var(--green);
  border-top-width: 1px;
  border-radius: 0;
  background: #f7f1e5;
  box-shadow: none;
}

.page-contents h2 {
  margin: 0 0 .45rem;
  font-size: 1.35rem;
}

.page-contents ol {
  gap: 0 1.25rem;
  border-top-color: var(--line-soft);
}

.page-contents li {
  border-bottom-color: var(--line-soft);
}

.page-contents a {
  min-height: 48px;
  padding-top: .25rem;
  padding-bottom: .25rem;
}

.compact-contents {
  max-width: var(--measure);
}

.compact-contents ol {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.reference-section,
.family-block {
  margin-bottom: 3.4rem;
}

.article h2,
.reference-section > h2,
.family-block > h2,
.surname-group > h2,
.place-list h2,
.reference-index-section > h2 {
  margin-top: 2.8rem;
  margin-bottom: .8rem;
  padding-top: .55rem;
  border-top: 1px solid var(--line);
  font-size: clamp(1.55rem, 3vw, 2rem);
}

.reference-section h3,
.article h3 {
  margin-top: 1.8rem;
}

.reference-section p,
.reference-section li,
.biography p,
.article p {
  line-height: 1.65;
}

.family-block {
  padding: 0;
  border: 0;
  background: transparent;
}

.relationship-path {
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: #f7f1e5;
}

.citation-marker {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 48px;
  min-height: 48px;
  margin: -.55rem .05rem;
  color: var(--link);
  font-family: var(--ui);
  font-size: .8rem;
  font-style: normal;
  font-weight: 700;
  line-height: 1;
  text-decoration: underline;
  vertical-align: middle;
}

.citation-run {
  white-space: normal;
}

.source-list {
  list-style: none;
  counter-reset: none;
}

.source-list li {
  padding: .5rem 0 .7rem;
  border-bottom: 1px solid var(--line-soft);
}

.reference-number {
  color: var(--accent);
  font-size: .8rem;
  font-weight: 700;
}

.reference-backs {
  display: flex;
  flex-wrap: wrap;
  gap: .15rem .65rem;
  margin-top: .2rem;
}

.reference-back {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  font-size: .8rem;
}

.card,
.doc-card,
.source-card,
.transcript-card,
.generation-group,
.about-grid section,
.narrative-card {
  border-radius: 0;
  box-shadow: none;
}

.card {
  border-left-color: var(--accent);
}

.searchbox-hero {
  border: 1px solid var(--line);
  border-top: 4px solid var(--green);
  border-radius: 0;
  box-shadow: none;
}

.compelling-narratives,
#direct-line,
.home-browse {
  border-top: 1px solid var(--line);
}

.quiet-entry {
  border-radius: 0;
  box-shadow: none;
}

.reference-index-section {
  margin-bottom: 3.5rem;
}

.reference-index-section > .doc-grid {
  max-width: none;
}

.machine-transcript pre {
  max-height: none;
  overflow: visible;
}

.table-wrap {
  overflow-x: auto;
  overflow-y: visible;
}

.site-footer {
  border-top: 2px solid var(--accent);
  background: #eee5d4;
}

@media (max-width: 920px) {
  .person-infobox {
    float: none;
    width: 100%;
    max-width: 34rem;
    margin: 0 0 1.5rem;
  }

  .compact-contents ol {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .map,
  .map-caption {
    display: none;
  }

  .breadcrumbs {
    flex-wrap: wrap;
    overflow-x: visible;
    white-space: normal;
  }

  .breadcrumbs span[aria-current="page"] {
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .hero,
  .person-head,
  .feature-hero,
  .chart-intro,
  .home-hero {
    padding-top: 1.8rem;
    padding-bottom: 1.6rem;
  }

  .hero h1,
  .person-head h1,
  .feature-hero h1,
  .chart-intro h1,
  .home-hero h1 {
    font-size: clamp(2rem, 12vw, 2.65rem);
  }

  .compact-contents ol,
  .page-contents ol {
    grid-template-columns: 1fr;
  }

  .page-contents {
    margin-top: 1.5rem;
    margin-bottom: 2.4rem;
    padding-right: .7rem;
    padding-left: .7rem;
  }

  .person-infobox dl {
    grid-template-columns: minmax(5.7rem, .38fr) minmax(0, 1fr);
  }
}

@media (max-width: 420px) {
  .person-infobox dl {
    grid-template-columns: 1fr;
  }

  .person-infobox dt {
    padding: .62rem .7rem .15rem;
    border-bottom: 0;
  }

  .person-infobox dd {
    padding: 0 .7rem .62rem;
  }
}

@media print {
  .source-card blockquote,
  .occupation-list blockquote,
  .doc-card blockquote.verbatim-extract,
  .article blockquote {
    font-size: 12pt;
  }
}

/* Publication-wide presentation system */
.hero,
.person-head,
.feature-hero,
.chart-intro,
.home-hero {
  max-width: 58rem;
  min-height: 0;
  padding-top: clamp(2.4rem, 7vw, 4.7rem);
  padding-bottom: clamp(2rem, 5vw, 3.4rem);
  border-bottom: 1px solid var(--line-soft);
}

.hero h1,
.person-head h1,
.feature-hero h1,
.chart-intro h1,
.home-hero h1 {
  max-width: 18ch;
  margin: .12em 0 .24em;
  font-size: clamp(2.35rem, 6vw, 4.35rem);
  line-height: 1.04;
}

.hero .lede,
.feature-hero .lede,
.chart-intro .lede,
.home-hero .lede {
  max-width: 48rem;
  margin: .65rem 0 0;
}

.section-heading {
  max-width: 52rem;
  margin-bottom: var(--space-4);
}

.section-heading h2 {
  margin: .12rem 0 .55rem;
}

.section-heading .lede,
.section-heading > p:last-child {
  margin-bottom: 0;
}

main > .grid,
main > .doc-grid,
main > .about-grid,
main > .place-list,
main > .map,
main > .article,
main > section {
  margin-bottom: var(--space-6);
}

main li::marker {
  color: var(--accent);
  font-weight: 800;
}

hr {
  height: 0;
  margin: var(--space-5) 0;
  border: 0;
  border-top: 2px solid var(--line);
}

.grid {
  gap: var(--space-3);
}

.card,
.doc-card,
.source-card,
.transcript-card,
.generation-group,
.about-grid section,
.person-infobox,
.narrative-card {
  border-color: var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.card {
  min-height: 0;
  padding: var(--space-3);
  border-width: 1px;
  border-left-width: 5px;
}

.card h3 {
  margin-top: 0;
}

.card:hover,
.card:focus-visible,
.generation-group a:hover,
.generation-group a:focus-visible {
  border-color: var(--link);
  background: #edf7fc;
}

.hero + .grid,
.hero + .about-grid,
.hero + .article {
  margin-top: .25rem;
}

.article h2,
.reference-section > h2,
.family-block > h2,
.surname-group > h2,
.place-list h2 {
  margin-top: var(--space-5);
  margin-bottom: var(--space-2);
  padding-top: var(--space-2);
  border-top: 2px solid var(--ink);
}

.article h3,
.reference-section h3 {
  margin-top: var(--space-4);
}

.article p,
.reference-section p {
  margin-top: 0;
  margin-bottom: 1.1em;
}

.notice,
.thin-summary,
.person-ship-card,
.machine-transcript {
  border-radius: var(--radius);
  box-shadow: none;
}

/* Front page */
.home-page main {
  max-width: 1320px;
}

.home-hero {
  max-width: 66rem;
  padding-bottom: var(--space-5);
  border-bottom: 0;
}

.home-hero h1 {
  max-width: 15ch;
}

.home-hero .lede {
  max-width: 43rem;
}

.home-guide {
  margin: .8rem 0 0;
}

.searchbox-hero {
  width: min(42rem, 100%);
  margin: var(--space-4) 0 0;
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-top: 6px solid var(--green);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.searchbox-hero label strong {
  display: block;
  margin-bottom: .15rem;
  font-size: 1.2rem;
}

.searchbox-hero input {
  min-height: 58px;
  border-radius: 5px;
  box-shadow: inset 0 1px 2px rgba(23, 20, 15, .08);
}

.compelling-narratives {
  margin-bottom: var(--space-6);
  padding: var(--space-5) 0 0;
  border: 0;
  border-top: 3px solid var(--ink);
  background: transparent;
}

.compelling-narratives > h2,
.compelling-narratives > .section-heading h2 {
  margin-top: .12rem;
}

.narrative-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
}

.narrative-card {
  display: grid;
  grid-template-rows: auto 1fr;
  min-width: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--line);
}

.narrative-card:first-child {
  grid-column: 1 / -1;
  grid-template-columns: minmax(16rem, .9fr) minmax(0, 1.1fr);
  grid-template-rows: auto;
}

.narrative-image {
  position: relative;
  min-width: 0;
  height: 13.5rem;
  margin: 0;
  padding: .8rem .8rem 2.45rem;
  overflow: hidden;
  border-bottom: 1px solid var(--line);
  background: #e7dfd0;
}

.narrative-card:first-child .narrative-image {
  height: 100%;
  min-height: 19rem;
  border-right: 1px solid var(--line);
  border-bottom: 0;
}

.narrative-image img {
  width: 100%;
  height: 100%;
  border: 6px solid var(--surface);
  object-fit: cover;
  box-shadow: 0 3px 12px rgba(23, 20, 15, .2);
}

.narrative-image figcaption {
  position: absolute;
  right: .8rem;
  bottom: .55rem;
  left: .8rem;
  color: var(--muted);
  font-size: .8rem;
  font-weight: 700;
  line-height: 1.35;
}

.narrative-copy {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: clamp(1.15rem, 3vw, 1.8rem);
}

.narrative-copy h3 {
  margin-top: 0;
  font-size: clamp(1.3rem, 2.6vw, 1.65rem);
}

.narrative-copy > p:not(.narrative-actions) {
  color: var(--muted);
}

.narrative-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .45rem .8rem;
  margin: auto 0 0;
  padding-top: .55rem;
}

.narrative-card .anchor-link {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  margin: 0;
}

.home-finding {
  max-width: var(--measure);
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-left: 7px solid var(--green);
  border-radius: var(--radius);
  background: var(--green-soft);
}

.home-finding h2 {
  margin: .1rem 0 .65rem;
  padding: 0;
  border: 0;
}

.home-finding p:last-child {
  margin-bottom: 0;
}

#direct-line,
.home-browse {
  padding-top: var(--space-4);
  border-top: 3px solid var(--ink);
}

.spine {
  margin-top: var(--space-4);
  margin-bottom: var(--space-5);
}

.spine-person {
  padding-bottom: var(--space-5);
}

.spine-person h3 {
  margin-top: 0;
}

.quiet-entry {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: var(--space-3) 0 var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.quiet-entry a {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 112px;
  padding: var(--space-3);
  text-decoration: none;
}

.quiet-entry a:hover,
.quiet-entry a:focus-visible {
  background: #edf7fc;
  text-decoration: underline;
}

.quiet-entry span {
  display: block;
  margin-top: .25rem;
  color: var(--muted);
  font-size: .85rem;
  font-weight: 400;
  line-height: 1.45;
}

.surname-start {
  max-width: var(--measure);
  margin-bottom: 0;
}

.surname-button,
.help-button {
  text-decoration: underline;
  text-underline-offset: .18em;
}

/* Records and photographs */
main > .doc-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr));
  max-width: none;
  gap: var(--space-4);
}

.doc-card {
  border-width: 1px;
  border-top-width: 6px;
}

.doc-card > a,
.doc-card > span,
.doc-card > .doc-preview {
  padding: var(--space-3);
  border-bottom: 1px solid var(--line);
  background: #e7dfd0;
}

.doc-card img {
  max-height: 34rem;
  border: 7px solid var(--surface);
  background: var(--surface);
  object-fit: contain;
  box-shadow: 0 3px 14px rgba(23, 20, 15, .2);
}

.doc-preview span {
  right: var(--space-3);
  bottom: .7rem;
  left: var(--space-3);
}

.doc-body {
  padding: var(--space-3);
}

.doc-body > .plain-label:first-child {
  margin-bottom: 0;
}

.document-exhibit,
.feature-document,
.ship-image,
.person-ship-image {
  padding: var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #e7dfd0;
  box-shadow: var(--shadow);
}

.document-exhibit img,
.feature-document img,
.ship-image img,
.person-ship-image img {
  border: 6px solid var(--surface);
  background: var(--surface);
  box-shadow: 0 2px 10px rgba(23, 20, 15, .16);
}

.feature-document figcaption,
.ship-image figcaption,
.person-ship-image figcaption {
  padding: .7rem .25rem .1rem;
  color: var(--muted);
  font-size: .85rem;
  line-height: 1.5;
}

.ship-card {
  grid-template-rows: 13rem 1fr;
  padding: 0;
  border-left-width: 1px;
}

.ship-thumbnail {
  padding: .6rem;
  background: #e7dfd0;
}

.ship-thumbnail img {
  border: 5px solid var(--surface);
  box-shadow: 0 2px 10px rgba(23, 20, 15, .16);
}

.ship-page .person-overview {
  align-items: stretch;
}

.ship-page .ship-image {
  height: 100%;
}

.ship-page .ship-image img {
  width: 100%;
  max-height: 34rem;
}

.person-ship-card {
  max-width: var(--person-measure);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-left: 6px solid var(--green);
  background: var(--surface);
}

/* Calm, consistent data treatments */
.person-overview {
  margin-top: var(--space-5);
  margin-bottom: var(--space-5);
}

.person-contents {
  margin-top: var(--space-5);
  margin-bottom: var(--space-6);
}

.reference-section,
.family-block {
  margin-bottom: var(--space-6);
}

.family-list,
.surname-list,
.place-list ul,
.see-also,
.source-list {
  padding-left: 0;
  list-style: none;
}

.surname-list li,
.place-list li,
.see-also li,
.source-list li {
  padding: .45rem 0;
  border-bottom: 1px solid var(--line-soft);
}

.surname-list a,
.place-list a,
.see-also a,
.source-list a {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
}

.timeline:before {
  background: var(--line-soft);
}

.event {
  padding-bottom: var(--space-4);
}

.event-body {
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--line-soft);
}

.source-card {
  border-width: 1px;
}

.record-exhibit-head {
  border-top: 6px solid var(--accent);
}

.transcript-card {
  max-width: var(--measure);
  padding: var(--space-3);
  border-left: 6px solid var(--accent);
}

.table-wrap {
  margin: var(--space-4) 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
}

.transcription th,
.transcription td {
  border-color: var(--line-soft);
}

.transcription tr:nth-child(even) td {
  background: #f7f2e8;
}

.transcription th {
  background: var(--surface-soft);
}

.about-grid section {
  padding: var(--space-3);
}

.about-grid h2 {
  margin: .1rem 0 .55rem;
  padding: 0;
  border: 0;
  font-size: 1.35rem;
}

.place-list,
.surname-list {
  column-gap: var(--space-5);
}

.place-list section,
.surname-group {
  margin-bottom: var(--space-4);
}

.map {
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.picture-version {
  margin-bottom: var(--space-5);
}

.picture-version > summary,
.tree-fallback summary,
.machine-transcript summary,
.long-transcription > summary {
  min-height: 48px;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: .18em;
}

/* Publication footer */
.site-footer {
  padding: var(--space-5) 1.25rem;
  border-top: 3px solid var(--ink);
  background: #eee6d7;
  text-align: left;
}

.footer-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: var(--space-4);
  max-width: var(--max);
  margin: 0 auto;
}

.footer-about {
  max-width: 38rem;
}

.footer-title {
  color: var(--ink);
  font-size: 1.2rem;
  font-weight: 800;
}

.footer-nav {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  margin: 0;
}

.footer-nav a {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  margin: 0;
  padding: .25rem .5rem;
}

.footer-note {
  grid-column: 1 / -1;
  margin: 0;
  padding-top: var(--space-2);
  border-top: 1px solid var(--line);
}

/* One quiet entrance, with no content hidden when scripts are unavailable. */
[data-reveal] {
  opacity: 0;
  transform: translateY(8px);
}

.loaded [data-reveal] {
  animation: reveal .38s both;
  animation-delay: 40ms;
}

@media (max-width: 920px) {
  .narrative-list,
  .narrative-card:first-child {
    grid-template-columns: 1fr;
  }

  .narrative-card:first-child {
    grid-column: auto;
    grid-template-rows: auto 1fr;
  }

  .narrative-card:first-child .narrative-image {
    height: 15rem;
    min-height: 0;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

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

  .footer-inner,
  .person-overview,
  .two-col,
  .chart-toolbar {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 620px) {
  main {
    padding-right: .8rem;
    padding-left: .8rem;
    padding-bottom: var(--space-5);
  }

  .header-inner {
    padding-right: .55rem;
    padding-left: .55rem;
  }

  .hero,
  .person-head,
  .feature-hero,
  .chart-intro,
  .home-hero {
    padding-top: 2.35rem;
    padding-bottom: 2.2rem;
  }

  .hero h1,
  .person-head h1,
  .feature-hero h1,
  .chart-intro h1,
  .home-hero h1 {
    max-width: none;
    font-size: clamp(2.15rem, 13vw, 2.85rem);
  }

  .compelling-narratives,
  #direct-line,
  .home-browse {
    padding-top: var(--space-3);
  }

  .narrative-list {
    gap: var(--space-3);
  }

  .narrative-image,
  .narrative-card:first-child .narrative-image {
    height: 12rem;
  }

  .narrative-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .narrative-actions .button,
  .narrative-card .anchor-link {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  .home-finding {
    padding: var(--space-3);
  }

  .quiet-entry,
  .footer-nav {
    grid-template-columns: 1fr;
  }

  .quiet-entry a {
    min-height: 84px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .quiet-entry a:last-child {
    border-bottom: 0;
  }

  .footer-inner {
    gap: var(--space-3);
  }

  .site-footer {
    padding-right: .8rem;
    padding-left: .8rem;
  }

  .person-contents ol {
    grid-template-columns: 1fr;
  }

  .timeline:before {
    left: .75rem;
  }

  .event {
    display: block;
    padding: 0 0 var(--space-4) 2.65rem;
  }

  .event-date {
    position: static;
    margin-bottom: .35rem;
    text-align: left;
  }

  .event-marker {
    left: -.08rem;
  }

  .place-list,
  .surname-list {
    columns: 1;
  }

  .chart-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .chart-actions button,
  .chart-actions .button {
    width: 100%;
  }

  .machine-transcript pre {
    max-height: none;
    overflow: visible;
  }

  .doc-card img {
    max-height: none;
  }
}

@media (max-width: 420px) {
  .person-infobox dl {
    grid-template-columns: 1fr;
  }

  .person-infobox dt {
    padding: .8rem 1rem .12rem;
    border-bottom: 0;
  }

  .person-infobox dd {
    padding: 0 1rem .85rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  .loaded [data-reveal] {
    opacity: 1;
    transform: none;
    animation: none;
  }
}

.burial-evidence-key {
  margin: 0 0 var(--space-4);
  padding: var(--space-3);
  border: 2px solid var(--line);
  background: var(--surface-soft);
}

.burial-card {
  margin: var(--space-4) 0;
  padding: clamp(1rem, 3vw, 1.8rem);
  border: 1px solid var(--line-soft);
  border-left: 5px solid var(--accent);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.burial-card h3 {
  margin-top: 0;
}

.burial-card h4 {
  margin: var(--space-4) 0 var(--space-2);
}

.burial-card blockquote {
  margin: var(--space-2) 0 var(--space-3);
  padding: var(--space-3);
  border-left: 4px solid var(--line);
  background: var(--surface-soft);
  color: var(--ink);
  white-space: pre-wrap;
}

.evidence-tag {
  display: inline-block;
  font-family: var(--mono);
  font-size: .82em;
  letter-spacing: .02em;
}

.record-tag {
  color: var(--green);
}

.compiled-tag {
  color: var(--red);
}

.grave-photo {
  margin: var(--space-4) 0;
}

.grave-photo a {
  display: block;
  padding: var(--space-2);
  border: 1px solid var(--line-soft);
  background: #ffffff;
}

.grave-photo img {
  display: block;
  width: 100%;
  max-width: 900px;
  max-height: 760px;
  margin: 0 auto;
  object-fit: contain;
}

.grave-photo figcaption {
  max-width: 900px;
  margin: var(--space-2) auto 0;
  color: var(--muted);
  font-size: .92rem;
}

.conflict-note {
  margin-top: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border: 2px solid var(--red);
  background: var(--red-soft);
}

@page {
  margin: .7in .65in .75in;
}

@media print {
  html,
  body {
    overflow: visible;
    background: #ffffff;
    color: #111111;
    font-family: Georgia, "Times New Roman", serif;
    font-size: 11pt;
    line-height: 1.45;
  }

  .site-header,
  .site-footer,
  .breadcrumbs,
  .person-contents,
  .person-return,
  .sibling-nav,
  .map,
  .map-fallback,
  .picture-version,
  .searchbox,
  .chart-route,
  .home-guide {
    display: none !important;
  }

  main {
    max-width: none;
    padding: 0;
  }

  h1,
  h2,
  h3,
  h4,
  .plain-label,
  .badge,
  .person-infobox dt {
    font-family: Arial, Helvetica, sans-serif;
  }

  a {
    color: #111111;
  }

  .person-head {
    max-width: none;
    min-height: 0;
    margin-bottom: .28in;
    padding: 0 0 .18in;
    border-bottom: 2pt solid #111111;
  }

  .person-head h1 {
    max-width: none;
    margin: 0 0 .08in;
    font-size: 28pt;
    letter-spacing: -.02em;
  }

  .person-head .dates,
  .person-head .identification {
    margin: .04in 0 0;
  }

  .person-overview {
    display: block;
    max-width: none;
    margin: 0 0 .3in;
  }

  .person-introduction {
    max-width: none;
  }

  .person-infobox {
    max-width: 6.7in;
    margin: .2in 0;
    border: 1pt solid #555555;
    border-top: 4pt solid #333333;
    box-shadow: none;
    break-inside: avoid;
  }

  .person-infobox h2 {
    padding: .09in .12in;
    background: #eeeeee;
    font-size: 15pt;
  }

  .person-infobox dt,
  .person-infobox dd {
    padding: .06in .1in;
  }

  .reference-section,
  .family-block {
    max-width: none;
    margin-bottom: .28in;
  }

  .reference-section > h2,
  .family-block > h2,
  .article h2 {
    margin: .28in 0 .1in;
    padding-top: .08in;
    border-top: 1.5pt solid #222222;
    font-size: 18pt;
    break-after: avoid;
  }

  .event,
  .source-card,
  .doc-card,
  .family-list li,
  figure,
  table,
  blockquote {
    break-inside: avoid;
  }

  .timeline:before {
    background: #777777;
  }

  .event-marker {
    background: #ffffff;
  }

  .source-card,
  .doc-card,
  .person-ship-card,
  .thin-summary,
  .notice {
    border-color: #555555;
    background: #ffffff;
    box-shadow: none;
  }

  .source-card blockquote,
  .occupation-list blockquote,
  .doc-card blockquote.verbatim-extract,
  .article blockquote {
    border-color: #555555;
    background: #ffffff;
    color: #111111;
    font-size: 9.5pt;
  }

  .record-exhibit-head,
  .person-infobox h2,
  .transcription th,
  .transcription tr:nth-child(even) td {
    background: #eeeeee;
  }

  details.long-transcription,
  details.long-transcription[open],
  details.machine-transcript,
  details.machine-transcript[open] {
    display: block !important;
  }

  details.long-transcription::details-content,
  details.long-transcription:not([open])::details-content,
  details.machine-transcript::details-content,
  details.machine-transcript:not([open])::details-content {
    display: block !important;
    height: auto !important;
    content-visibility: visible !important;
  }

  details.long-transcription > summary,
  details.machine-transcript > summary {
    display: none !important;
  }

  details.long-transcription > .transcription-rest,
  details.machine-transcript > pre {
    display: block !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }

  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}

/* Final cascade guard for the reference-work rules above. */
[data-reveal],
.loaded [data-reveal] {
  opacity: 1;
  transform: none;
  animation: none;
}

.hero,
.person-head,
.feature-hero,
.chart-intro,
.home-hero {
  max-width: var(--measure);
  min-height: 0;
  padding-top: 2.5rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--line);
}

.hero h1,
.person-head h1,
.feature-hero h1,
.chart-intro h1,
.home-hero h1 {
  max-width: 21ch;
  font-size: clamp(2.2rem, 5vw, 3.6rem);
  font-weight: 700;
  line-height: 1.08;
}

.person-head h1 {
  max-width: 19ch;
}

.home-hero h1 {
  max-width: 18ch;
}

.person-overview {
  margin-top: 2rem;
  margin-bottom: 2.5rem;
}

.page-contents {
  margin-top: 2rem;
  margin-bottom: 3rem;
}

.article h2,
.reference-section > h2,
.family-block > h2,
.surname-group > h2,
.place-list h2,
.reference-index-section > h2 {
  margin-top: 2.8rem;
  margin-bottom: .8rem;
  padding-top: .55rem;
  border-top: 1px solid var(--line);
  font-size: clamp(1.55rem, 3vw, 2rem);
}

.compelling-narratives,
#direct-line,
.home-browse {
  border-top: 1px solid var(--line);
}

.site-footer {
  border-top: 2px solid var(--accent);
}

.map,
.leaflet-container {
  background-color: #e8e0cf;
  background-image: linear-gradient(#d4cab7 1px, transparent 1px), linear-gradient(90deg, #d4cab7 1px, transparent 1px);
  background-size: 48px 48px;
}

.journey-list a > span:last-child {
  min-width: 0;
  overflow-wrap: anywhere;
}

.footer-note,
.footer-note span {
  min-width: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 620px) {
  .hero,
  .person-head,
  .feature-hero,
  .chart-intro,
  .home-hero {
    padding-top: 1.8rem;
    padding-bottom: 1.6rem;
  }

  .hero h1,
  .person-head h1,
  .feature-hero h1,
  .chart-intro h1,
  .home-hero h1 {
    max-width: none;
    font-size: clamp(2rem, 12vw, 2.65rem);
  }

  .sibling-nav {
    grid-template-columns: minmax(0, 1fr);
  }

  .sibling-nav a,
  .sibling-nav a:last-child {
    min-width: 0;
    width: 100%;
    text-align: left;
    overflow-wrap: anywhere;
  }
}

@media print {
  .source-card blockquote,
  .occupation-list blockquote,
  .doc-card blockquote.verbatim-extract,
  .article blockquote {
    font-size: 12pt;
  }
}

/* ---- What is new (the feed) ---- */
.feed-entry {
  margin: 0 0 2rem;
  padding: 0 0 1.6rem;
  border-bottom: 1px solid var(--line-soft);
}

.feed-entry h3 {
  margin: .2rem 0 .5rem;
}

.feed-date {
  margin: 0;
  color: var(--accent);
  font-family: var(--body);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.feed-people {
  margin: .6rem 0 0;
  font-size: .9rem;
}

.feed-entry-history {
  border-left: 3px solid var(--line);
  padding-left: 1rem;
}

/* ---- Could they write their own name? ---- */
.literacy {
  margin: 1.6rem 0 0;
  padding: 1rem 1.1rem;
  border: 1px solid var(--line);
  border-left: 4px solid var(--accent);
  background: #fbf7ec;
}

.literacy h3 {
  margin: 0 0 .4rem;
  font-size: 1.05rem;
}

.literacy p {
  margin: .4rem 0 0;
}

.literacy-quote {
  font-style: italic;
}

.literacy-mark {
  border-left-color: var(--red, #8a281b);
}

/* ---- In their own hand ---- */
.signature-block {
  margin: 1.2rem 0 0;
  padding-top: 1rem;
  border-top: 1px solid var(--line-soft);
}

.signature-block h3 {
  margin: 0 0 .6rem;
  font-size: 1rem;
}

.signature-figure {
  margin: 0 0 1.2rem;
}

.signature-figure img {
  display: block;
  width: 100%;
  max-width: 44rem;
  height: auto;
  border: 1px solid var(--line);
  background: #fff;
}

.signature-figure figcaption {
  margin-top: .5rem;
  font-size: .85rem;
}

/* ---- Photographs -------------------------------------------------------
   A photograph is not a document. Documents prove an event; a photograph
   shows a face, and a face nobody has proved is a face nobody has proved.
   The confidence line is therefore printed above the caption rather than
   hidden in a footnote, and the unidentified ones are deliberately not
   styled as though they were settled. */
.photo-block { margin: 2.5rem 0; }

.person-photo {
  margin: 0 0 2rem;
  padding: 0;
  border: 1px solid var(--line);
  background: var(--surface);
}

.person-photo img {
  display: block;
  /* Portrait-shaped prints (a badge, a standing couple) would otherwise run
     the whole column height and push the caption off the screen. Cap the
     height and centre, so tall and wide photographs sit equally well. */
  width: auto;
  max-width: 100%;
  max-height: 32rem;
  height: auto;
  margin: 0 auto;
  border-bottom: 1px solid var(--line);
}

.person-photo figcaption { padding: 1rem 1.2rem; }

.photo-confidence {
  display: block;
  margin-bottom: .35rem;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.photo-caption { display: block; font-weight: 600; }

.photo-detail { margin: .7rem 0 0; }

.photo-source { margin: .6rem 0 0; font-size: .85rem; }

/* An unproved identification gets a plainer frame than a proved one, so the
   difference is legible at a glance and not only on reading the words. */
.photo-unidentified { border-style: dashed; }
.photo-documented { border-left: 5px solid var(--green); }
.photo-family-attributed { border-left: 5px solid var(--accent); }

@media (max-width: 640px) {
  .person-photo figcaption { padding: .8rem .9rem; }
}

/* Two people at one address is the kind of thing a reader notices and a
   database does not — a household, a lodger, a family that moved together.
   Only genuinely specific places are cross-linked; everyone shares "Bayonne". */
.co-residents {
  margin: 1.4rem 0 0;
  padding: 1rem 1.2rem;
  border-left: 4px solid var(--line);
  background: var(--surface);
}

.co-residents h3 { margin: 0 0 .5rem; font-size: 1rem; }
.co-residents ul { margin: 0; padding-left: 1.2rem; }
.co-residents li { margin-bottom: .35rem; }

/* A pin carrying six births should not look like a pin carrying one. The
   number is the count of recorded events at that place, so a reader can see
   where the archive is dense before clicking anything. */
.count-marker {
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid #fff;
  border-radius: 50%;
  background: #174f68;
  color: #fff;
  font-family: var(--body);
  font-size: .82rem;
  font-weight: 700;
  box-shadow: 0 1px 4px rgba(0, 0, 0, .45);
}

.count-marker.count-burial { background: #8a281b; }

/* The explorable map wants room to be explored in. */
#all-places { height: min(70vh, 640px); }

.leaflet-popup-content { max-height: 15rem; overflow-y: auto; line-height: 1.5; }
.leaflet-popup-content a { display: block; padding: .12rem 0; }

/* External source links. A citation you cannot follow is half a citation, so
   the host is printed after the label: a reader should know whether they are
   about to land on irishgenealogy.ie or on somebody's memorial page before
   they click. */
.external-source { text-decoration-thickness: 1px; }
.external-host { color: var(--muted); font-weight: 400; font-size: .88em; white-space: nowrap; }

/* "How is this person related?" — the relationship picker.
   Lives inside the introduction column beside the infobox, so it must not
   assume full page width. */
.relationship-box {
  margin: 1.25rem 0 0;
  padding: .85rem 1rem 1rem;
  border: 1px solid var(--rule, #d8d2c6);
  border-left: 4px solid #174f68;
  background: color-mix(in srgb, #174f68 4%, transparent);
  border-radius: 3px;
}
.relationship-box h2 {
  margin: 0 0 .5rem;
  font-size: 1rem;
  letter-spacing: .01em;
}
.relationship-label { font-size: .95rem; }
.relationship-select {
  min-height: 44px;              /* touch target */
  max-width: 100%;
  margin: .35rem .25rem .35rem 0;
  padding: .3rem .5rem;
  font: inherit;
}
.relationship-answers { margin-top: .5rem; }
.relationship-answer { margin: .35rem 0; font-size: 1.05rem; }
.relationship-answer strong { color: #174f68; }
.relationship-note {
  margin: .6rem 0 0;
  font-size: .85rem;
  color: var(--muted, #6b6459);
}
@media (prefers-color-scheme: dark) {
  .relationship-box { border-left-color: #7fc4e0; background: color-mix(in srgb, #7fc4e0 8%, transparent); }
  .relationship-answer strong { color: #9ad6ef; }
}
