99a660485e
Rebuilds the family view's pedigree as a recursive bracket chart with CSS connector lines — focus links to its two parents (2 lines), and each parent links to its two parents (4 lines to grandparents). Fixes the prior ambiguity where grandparent slots weren't tied to a specific parent: now every parent shows its own two parent slots, so a person clearly has up to four grandparents grouped by lineage. Height-robust connectors (each leaf draws its own spine half + stub). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Justin Paul <justin@jpaul.me>
109 lines
2.3 KiB
CSS
109 lines
2.3 KiB
CSS
@import "tailwindcss";
|
|
|
|
/* Brand palette + type (docs/brand): warm ink + bronze + paper, serif display. */
|
|
@theme {
|
|
--color-bronze: #a06a42;
|
|
--color-bronze-deep: #8a5836;
|
|
--color-paper: #f7f3ec;
|
|
--color-ink: #1a1a17;
|
|
|
|
--font-sans: var(--font-inter), ui-sans-serif, system-ui, -apple-system, sans-serif;
|
|
--font-serif: var(--font-fraunces), Georgia, "Times New Roman", ui-serif, serif;
|
|
}
|
|
|
|
/* Adaptive tokens — ink/paper flip for light/dark; bronze + paper are constant. */
|
|
:root {
|
|
--background: #f7f3ec;
|
|
--foreground: #1a1a17;
|
|
--muted: #6b6862;
|
|
--surface: #fffdf9;
|
|
--border: #e6ddcc;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--background: #161410;
|
|
--foreground: #f2eee6;
|
|
--muted: #9a968e;
|
|
--surface: #211d17;
|
|
--border: #353029;
|
|
}
|
|
}
|
|
|
|
body {
|
|
/* A faint bronze warmth pooled at the top gives the flat paper some depth. */
|
|
background:
|
|
radial-gradient(
|
|
1100px 520px at 50% -8%,
|
|
color-mix(in srgb, var(--color-bronze) 9%, var(--background)),
|
|
var(--background) 60%
|
|
);
|
|
background-attachment: fixed;
|
|
color: var(--foreground);
|
|
font-family: var(--font-sans);
|
|
}
|
|
|
|
h1,
|
|
h2,
|
|
h3,
|
|
.font-serif {
|
|
font-family: var(--font-serif);
|
|
letter-spacing: -0.015em;
|
|
}
|
|
|
|
::selection {
|
|
background: color-mix(in srgb, var(--color-bronze) 22%, transparent);
|
|
}
|
|
|
|
/* Pedigree bracket connectors (ancestors grow rightward). Each leaf draws its
|
|
own half of the vertical spine + a horizontal stub, so lines stay correct
|
|
regardless of box heights: focus → 2 parents, each parent → 2 grandparents. */
|
|
.ped-person {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.ped-self {
|
|
flex-shrink: 0;
|
|
}
|
|
.ped-branch {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.75rem;
|
|
margin-left: 2.5rem;
|
|
}
|
|
.ped-branch::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: -2.5rem;
|
|
top: 50%;
|
|
width: 2.5rem;
|
|
border-top: 1px solid var(--border);
|
|
}
|
|
.ped-leaf {
|
|
position: relative;
|
|
padding-left: 1.5rem;
|
|
}
|
|
.ped-leaf::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 50%;
|
|
width: 1.5rem;
|
|
border-top: 1px solid var(--border);
|
|
}
|
|
.ped-leaf::after {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
border-left: 1px solid var(--border);
|
|
}
|
|
.ped-leaf:first-child::after {
|
|
top: 50%;
|
|
}
|
|
.ped-leaf:last-child::after {
|
|
bottom: 50%;
|
|
}
|