/* Shared pieces used by both the website and the print booklet.
   Colors, type and spacing come only from tokens.css (the Harvest Design System). */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--font-serif); font-variant-numeric: lining-nums; }
img { max-width: 100%; display: block; }
p { margin: 0 0 0.85em; }
h1, h2, h3, h4 { margin: 0; font-weight: 600; }
a { color: var(--bronze-deep); text-underline-offset: 3px; }
a:hover { color: var(--bronze-dark); }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.ink { background: var(--ink); color: var(--paper); }
.eyebrow { font-family: var(--font-sans); font-size: var(--fs-label); font-weight: 600; letter-spacing: var(--track-label); text-transform: uppercase; color: var(--bronze-deep); margin: 0 0 var(--sp-3); }
.eyebrow.on-ink, .ink .eyebrow { color: var(--bronze); }
.on-ink { color: var(--paper); }
.caption { font-family: var(--font-sans); font-size: var(--fs-caption); line-height: 1.45; color: var(--ink-500); }
.caption.on-ink, .ink .caption { color: var(--bronze-tint); }

/* ---------- Stats ---------- */
.stat-v { font-family: var(--font-display); font-weight: 600; line-height: 1; letter-spacing: var(--track-tight); font-variant-numeric: lining-nums tabular-nums; color: var(--ink); margin: 0 0 var(--sp-2); }
.stat-l { font-family: var(--font-sans); font-size: var(--fs-caption); line-height: 1.4; color: var(--ink-500); margin: 0; }
.ink .stat-v, .on-ink .stat-v { color: var(--bronze); }
.ink .stat-l, .on-ink .stat-l { color: var(--bronze-tint); }
.result-v { font-family: var(--font-display); font-weight: 600; line-height: 0.95; color: var(--bronze-deep); font-variant-numeric: lining-nums tabular-nums; margin: 0; }
.ink .result-v { color: var(--bronze); }
.result-l { font-family: var(--font-serif); font-style: italic; color: var(--ink-700); margin: var(--sp-2) 0 var(--sp-3); }
.ink .result-l { color: var(--bronze-tint); }

/* ---------- Lists ---------- */
.rule-list { list-style: none; margin: 0; padding: 0; }
.rule-list li { padding: 0.55em 0; border-top: 1px solid var(--line); }
.rule-list li:last-child { border-bottom: 1px solid var(--line); }
.tag-list { list-style: none; margin: var(--sp-3) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.tag-list li { font-family: var(--font-sans); font-size: var(--fs-caption); font-weight: 500; color: var(--bronze-dark); background: var(--bronze-wash); border: 1px solid var(--bronze-tint); border-radius: var(--r-pill); padding: 0.25em 0.8em; }
.names { list-style: none; margin: 0; padding: 0; }
.names li { break-inside: avoid; padding: 0.18em 0; }
.people { list-style: none; margin: 0; padding: 0; }
.people li { display: flex; flex-direction: column; padding: 0.5em 0; border-top: 1px solid var(--line); }
.ink .people li { border-color: var(--line-cream); }
.people .role { font-family: var(--font-sans); font-size: var(--fs-caption); color: var(--ink-500); }
.ink .people .role { color: var(--bronze-tint); }

/* ---------- Timeline ---------- */
.timeline { list-style: none; margin: 0; padding: 0; position: relative; }
.timeline li { position: relative; padding: 0 0 var(--sp-4) var(--sp-6); }
.timeline li::before { content: ''; position: absolute; left: 6px; top: 0.45em; width: 9px; height: 9px; border-radius: 50%; background: var(--bronze); box-shadow: 0 0 0 3px var(--paper); z-index: 1; }
.timeline::before { content: ''; position: absolute; left: 10px; top: 0.5em; bottom: 0.5em; width: 1px; background: var(--bronze-tint); }
.tl-when { font-family: var(--font-sans); font-size: var(--fs-label); font-weight: 600; letter-spacing: var(--track-label); text-transform: uppercase; color: var(--bronze-deep); margin: 0 0 0.2em; }
.tl-what { margin: 0; color: var(--ink-700); }

/* ---------- Quote ---------- */
.quote { margin: var(--sp-6) 0 0; padding: 0; }
.quote p { font-family: var(--font-display); font-style: italic; font-weight: 500; line-height: 1.25; color: var(--ink); margin: 0 0 var(--sp-3); }
.quote p::before { content: '“'; color: var(--bronze); }
.quote p::after { content: '”'; color: var(--bronze); }
.quote footer { font-family: var(--font-sans); font-size: var(--fs-caption); letter-spacing: 0.04em; color: var(--ink-500); }
.quote footer::before { content: '— '; }

/* ---------- Letters ---------- */
.salutation { font-family: var(--font-serif); font-style: italic; margin: 0 0 0.6em; }
.dropcap > p:first-of-type::first-letter { font-family: var(--font-display); font-weight: 600; float: left; font-size: 4.2em; line-height: 0.8; padding: 0.05em 0.08em 0 0; color: var(--bronze-deep); }
.signoff { font-style: italic; margin: var(--sp-5) 0 0.2em; color: var(--ink-700); }
.sig-name { font-family: var(--font-display); font-size: 1.6em; font-weight: 600; margin: 0; }

/* ---------- Bar lists (single hue, labeled) ---------- */
.bars { list-style: none; margin: var(--sp-3) 0; padding: 0; }
.bars li { display: grid; grid-template-columns: 1fr auto; column-gap: var(--sp-3); row-gap: 5px; padding: 0.55em 0; border-top: 1px solid var(--line); }
.bars li:last-child { border-bottom: 1px solid var(--line); }
.bars-label { font-family: var(--font-sans); font-size: var(--fs-caption); color: var(--ink-700); }
.bars-val { font-family: var(--font-sans); font-size: var(--fs-caption); font-weight: 600; font-variant-numeric: tabular-nums; color: var(--ink); text-align: right; white-space: nowrap; }
.bars-share { font-weight: 400; color: var(--ink-500); margin-left: 0.6em; }
.bars-track { grid-column: 1 / -1; height: 8px; }
.bars-fill { display: block; height: 100%; min-width: 4px; background: var(--bronze); border-radius: 0 var(--r-xs) var(--r-xs) 0; }

/* ---------- Financial table ---------- */
.fin { width: 100%; border-collapse: collapse; font-family: var(--font-sans); font-size: var(--fs-small); font-variant-numeric: tabular-nums lining-nums; }
.fin th, .fin td { padding: 0.5em 0.4em; text-align: left; font-weight: 400; color: var(--ink-700); border-bottom: 1px solid var(--line); }
.fin thead th { font-size: var(--fs-label); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-500); border-bottom: 1px solid var(--line-strong); vertical-align: bottom; }
.fin .num { text-align: right; white-space: nowrap; }
.fin .grp-h th { font-family: var(--font-display); font-size: 1.3em; font-weight: 600; color: var(--ink); padding-top: 1.1em; border-bottom: 0; }
.fin .tot th, .fin .tot td { font-weight: 600; color: var(--ink); border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); }
.fin .net th, .fin .net td { font-weight: 600; color: var(--ink); background: var(--bronze-wash); border-bottom: 0; }
.fin td.pending { color: var(--ink-300); }
.fin thead th:nth-child(2), .fin td:nth-child(2) { background: var(--paper-card); }
.pending-note { font-family: var(--font-serif); font-style: italic; color: var(--bronze-deep); margin: var(--sp-3) 0 0; }
.footnotes p { font-family: var(--font-sans); font-size: 0.75rem; line-height: 1.45; color: var(--ink-500); margin: 0 0 0.4em; }
.chart-pair { display: grid; gap: var(--sp-6); }
.chart-h { font-family: var(--font-sans); font-size: var(--fs-caption); font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-500); }

/* ---------- Gift level table ---------- */
.lvl { width: 100%; border-collapse: collapse; font-family: var(--font-sans); font-size: var(--fs-small); font-variant-numeric: tabular-nums; }
.lvl th, .lvl td { padding: 0.45em 0.4em; text-align: left; font-weight: 400; border-bottom: 1px solid var(--line-cream); color: var(--paper); }
.lvl thead th { font-size: var(--fs-label); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--bronze-tint); }
.lvl .num { text-align: right; width: 4.5em; }
.lvl .muted { color: var(--bronze-tint); }
.lvl-bar { width: 45%; }
.lvl-bar span { display: block; height: 8px; min-width: 4px; background: var(--bronze); border-radius: 0 var(--r-xs) var(--r-xs) 0; }

/* ---------- Event figures ---------- */
.figs { display: flex; flex-wrap: wrap; gap: var(--sp-5); margin: var(--sp-3) 0 0; }
.figs div { display: flex; flex-direction: column-reverse; }
.figs dt { font-family: var(--font-sans); font-size: var(--fs-caption); color: var(--ink-500); }
.figs dd { margin: 0; font-family: var(--font-display); font-size: 1.9em; font-weight: 600; color: var(--bronze-deep); line-height: 1; font-variant-numeric: lining-nums; }

/* ---------- Photos & placeholders ---------- */
.photo { margin: 0; overflow: hidden; background: var(--paper-alt); border-radius: var(--r-xs); }
.photo img { width: 100%; height: 100%; object-fit: cover; }
.ph-photo { display: flex; align-items: center; justify-content: center; background:
  repeating-linear-gradient(135deg, transparent 0 14px, rgba(176,120,72,0.07) 14px 15px), var(--bronze-wash);
  border: 1px dashed var(--bronze); position: relative; }
.ink .ph-photo { background: repeating-linear-gradient(135deg, transparent 0 14px, rgba(176,120,72,0.12) 14px 15px), var(--ink-soft); }
.ph-photo-in { max-width: 30em; padding: var(--sp-4); text-align: center; }
.ph-photo-in p { font-family: var(--font-sans); font-size: 0.75rem; line-height: 1.4; color: var(--ink-500); margin: 0.4em 0 0; }
.ink .ph-photo-in p { color: var(--bronze-tint); }
.ph-tag { font-family: var(--font-sans); font-size: 0.625rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--bronze-deep); }
.ink .ph-tag, .on-ink .ph-tag { color: var(--bronze); }
.ph-block { border: 1px dashed var(--bronze); background: var(--bronze-wash); border-radius: var(--r-sm); padding: var(--sp-4); margin: 0 0 var(--sp-4); position: relative; }
.ph-block p { font-family: var(--font-sans); font-size: var(--fs-caption); line-height: 1.5; color: var(--ink-700); margin: 0.4em 0 0; font-style: normal; }
.ink .ph-block { background: var(--ink-soft); }
.ink .ph-block p { color: var(--bronze-tint); }
.ph-inline { font-family: var(--font-sans); font-size: 0.8em; font-style: normal; font-weight: 500; color: var(--bronze-dark); background: var(--bronze-wash); border: 1px dashed var(--bronze); border-radius: var(--r-xs); padding: 0.05em 0.4em; letter-spacing: 0; line-height: 1.5; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.ink .ph-inline, .on-ink .ph-inline { background: var(--ink-soft); color: var(--bronze-tint); }
.chart-ph { border: 1px dashed var(--bronze); border-radius: var(--r-sm); background: var(--bronze-wash); padding: var(--sp-4); margin: var(--sp-5) 0; }
.chart-ph p { font-family: var(--font-sans); font-size: var(--fs-caption); color: var(--ink-700); margin: 0.4em 0 0; }

/* Draft markers (only present in the draft build) */
.ph-n { display: inline-block; font-family: var(--font-sans); font-size: 0.625rem; font-weight: 600; font-style: normal; line-height: 1; color: var(--paper); background: var(--bronze-deep); border-radius: var(--r-pill); padding: 0.25em 0.5em; margin-right: 0.5em; vertical-align: 0.15em; letter-spacing: 0; }
.ph-photo .ph-n { position: absolute; top: 8px; left: 8px; }
.cf { text-decoration: underline dotted var(--bronze); text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
.cf-mark, sup.cf-mark { font-family: var(--font-sans); font-size: 0.55rem; font-weight: 600; font-style: normal; letter-spacing: 0; color: var(--paper); background: var(--bronze-deep); border-radius: var(--r-pill); padding: 0.15em 0.45em; margin-left: 0.2em; vertical-align: super; line-height: 1; text-decoration: none; display: inline-block; }
.stat-v .cf-mark, .result-v .cf-mark, .gv-total .cf-mark { font-size: 0.6rem; vertical-align: top; }
.draft-list { padding-left: 2.2em; margin: 0; font-family: var(--font-sans); font-size: 0.8rem; line-height: 1.45; color: var(--ink-700); }
.draft-list li { margin-bottom: 0.45em; }
.dk { display: inline-block; font-size: 0.625rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; padding: 0.15em 0.5em; border-radius: var(--r-pill); }
.dk-confirm { background: var(--bronze-tint); color: var(--bronze-dark); }
.dk-todo { background: var(--paper-alt); color: var(--ink-700); border: 1px solid var(--line-strong); }
.dk-photo { background: var(--ink); color: var(--paper); }

.sdg { font-family: var(--font-display); font-style: italic; letter-spacing: 0.08em; color: var(--bronze); text-align: center; }

.ph-stat { display: inline-flex; align-items: center; font-family: var(--font-sans); font-size: 0.42em; font-weight: 600; letter-spacing: 0.12em; color: var(--bronze-dark); background: var(--bronze-wash); border: 1px dashed var(--bronze); border-radius: var(--r-sm); padding: 0.2em 0.6em; vertical-align: middle; }
.ink .ph-stat, .on-ink .ph-stat { background: var(--ink-soft); color: var(--bronze-tint); }

/* Portraits: keep faces in frame when cropped */
.portrait img, .lp-portrait img { object-position: 50% 22%; }

/* "As served in 2025–26" labels, independent review, gratitude line */
.as-of { font-family: var(--font-sans); font-size: 0.6875rem; font-style: normal; letter-spacing: 0.04em; color: var(--ink-500); margin: -0.4em 0 0.6em; }
.ink .as-of { color: var(--bronze-tint); }
.review-card { display: flex; flex-wrap: wrap; gap: var(--sp-4) var(--sp-6); align-items: center; justify-content: space-between; border: 1px solid var(--line-strong); border-radius: var(--r-md); background: var(--paper-card); padding: var(--sp-5); margin: var(--sp-6) 0; }
.review-card > div:first-child { flex: 1 1 22rem; min-width: 0; }
.review-text { font-family: var(--font-serif); color: var(--ink-700); margin: 0 0 0.3em; }
.review-action { flex: 0 1 auto; min-width: 0; }
.review-action .ph-block { margin: 0; max-width: 24rem; }
.review-url { font-family: var(--font-sans); font-size: var(--fs-caption); color: var(--ink-700); margin: 0; }
.gratitude { font-family: var(--font-display); font-style: italic; font-weight: 500; color: var(--ink); text-align: center; line-height: 1.3; max-width: 40rem; margin-left: auto; margin-right: auto; }

/* Illustrations: show the whole drawing and let its white paper become the page color */
.photo.sketch { background: transparent; }
.photo.sketch img { object-fit: contain; mix-blend-mode: multiply; }
/* Year at a glance: small bronze "as of" line under each stat */
.stat-asof { font-family: var(--font-sans); font-size: 0.68rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--bronze-deep); margin: 0.35em 0 0; }
