:root{--ink:#183b35;--paper:#f4efe3;--panel:#fffdf8;--line:#d7c9ad;--gold:#ad782c;--muted:#66736d;--warn:#9a4d32}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:#172f2a;font-family:Georgia,"Times New Roman",serif}.topbar{height:80px;padding:0 max(24px,calc((100vw - 1680px)/2));display:flex;align-items:center;border-bottom:1px solid var(--line);background:rgba(255,253,248,.96);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}.brand b{font-size:18px}.brand small{display:block;text-transform:uppercase;letter-spacing:.18em;font:10px Arial;color:var(--muted);margin-top:2px}.monogram{width:43px;height:43px;border:1px solid var(--gold);border-radius:50%;display:grid;place-items:center;font-size:25px}.topbar nav{margin-left:auto;display:flex;gap:34px}.topbar nav a{font:14px Arial;color:var(--muted);text-decoration:none;padding:31px 0 25px;border-bottom:2px solid transparent}.topbar nav a.active{color:var(--ink);border-color:var(--gold)}.menu{display:none;margin-left:auto}.view{display:none;max-width:1480px;margin:auto;padding:46px 28px 90px}.view.active{display:block}.hero{padding:0 0 26px}.eyebrow{font:11px Arial;text-transform:uppercase;letter-spacing:.25em;color:var(--gold);font-weight:bold}.hero h1,.section-head h1{font-weight:400;font-size:42px;margin:12px 0}.lead{font-size:18px;color:var(--muted);max-width:760px;line-height:1.5}.metrics{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}.metrics span{font:13px Arial;padding:10px 14px;background:var(--panel);border:1px solid var(--line)}.metrics b{font-size:18px;color:var(--ink);margin-right:5px}.legend{display:flex;gap:20px;font:12px Arial;color:var(--muted);margin:0;flex-wrap:wrap}.legend i,.status{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:6px}.confirmed{background:#235b49}.mixed{background:#b28742}.gedcom{background:#89928f}.graph-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:10px}.graph-actions{display:flex;gap:8px}.graph-actions button{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:9px 13px;cursor:pointer}.graph-help{font:12px/1.4 Arial;color:var(--muted);margin:0 0 10px}.graph-shell{position:relative;height:min(720px,72vh);min-height:520px;border:1px solid var(--line);background:#18201e;overflow:hidden}.graph-shell canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:none}.graph-shell canvas.dragging{cursor:grabbing}.graph-details{position:absolute;right:14px;top:14px;width:min(320px,calc(100% - 28px));padding:14px 16px;background:rgba(255,253,248,.94);border:1px solid var(--line);box-shadow:0 8px 28px rgba(0,0,0,.2);font:12px/1.45 Arial;color:var(--muted);pointer-events:none}.graph-details b{display:block;color:var(--ink);font:18px Georgia;margin-bottom:5px}.graph-details span{display:block}.section-head{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:20px}.search{font:12px Arial;color:var(--muted)}.search span{display:block;margin-bottom:6px}.search input{width:min(360px,70vw);padding:12px 14px;border:1px solid var(--line);background:var(--panel);font-size:15px}.notice{padding:14px 16px;border-left:3px solid var(--gold);background:rgba(255,253,248,.7);font:13px/1.5 Arial;color:var(--muted);margin:0 0 25px}.people-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.person-card{background:var(--panel);border:1px solid var(--line);padding:18px;min-height:150px}.person-card h2{font-size:19px;font-weight:400;margin:0 0 12px}.person-card ul{padding-left:17px;margin:0;font:12px/1.55 Arial;color:#485a54}.person-card .source{margin-top:14px;font:10px Arial;text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}.filters{display:flex;gap:8px;margin:0 0 20px}.filters button{border:1px solid var(--line);background:var(--panel);padding:9px 14px;cursor:pointer}.filters button.active{background:var(--ink);color:white}.gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.archive-item{margin:0;background:var(--panel);border:1px solid var(--line);cursor:pointer}.archive-item img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}.archive-item figcaption{padding:10px 12px;font:12px Arial;color:var(--muted)}.research-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.research-grid article{background:var(--panel);border:1px solid var(--line);padding:24px}.research-grid article.warning{border-top:4px solid var(--warn)}.research-grid h2{font-weight:400;margin-top:0}.research-grid li{margin:8px 0;font:14px/1.5 Arial;color:#42534e}dialog{width:min(1000px,92vw);border:0;background:#111;color:white;padding:44px 18px 18px}dialog::backdrop{background:rgba(0,0,0,.82)}dialog img{max-width:100%;max-height:78vh;display:block;margin:auto}.close{position:absolute;right:12px;top:6px;border:0;background:none;color:white;font-size:32px;cursor:pointer}dialog p{text-align:center;font:13px Arial}footer{background:var(--ink);color:#dce6e1;padding:30px;text-align:center;font:12px Arial;letter-spacing:.08em}@media(max-width:850px){.topbar{height:auto;padding:14px 18px;flex-wrap:wrap}.menu{display:block;border:1px solid var(--line);background:transparent;padding:8px}.topbar nav{display:none;width:100%;padding-top:12px;gap:18px}.topbar.open nav{display:flex}.topbar nav a{padding:8px 0}.view{padding:32px 18px 70px}.hero h1,.section-head h1{font-size:34px}.research-grid{grid-template-columns:1fr}.people-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.graph-toolbar{align-items:flex-start;flex-direction:column}.graph-shell{min-height:480px;height:68vh}.section-head{align-items:start;flex-direction:column}}@media(max-width:520px){.people-grid{grid-template-columns:1fr}.gallery{gap:8px}.archive-item figcaption{font-size:10px}.graph-shell{min-height:430px}.graph-details{top:auto;bottom:10px}}

.tree-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:10px}.tree-actions button{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:9px 13px;cursor:pointer}.tree-help{font:12px/1.4 Arial;color:var(--muted);margin:0 0 10px}.classic-tree{height:min(720px,72vh);min-height:520px;overflow:auto;border:1px solid var(--line);background:#f8f4e9;scroll-behavior:smooth}.tree-board{position:relative;min-width:100%;min-height:100%}.tree-board svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.tree-person{position:absolute;width:206px;min-height:82px;padding:12px 14px;background:var(--panel);border:1px solid #cabd9f;box-shadow:0 4px 14px rgba(47,42,29,.06);text-align:left;color:var(--ink);cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}.tree-person:hover,.tree-person.active{transform:translateY(-2px);border-color:var(--gold);box-shadow:0 8px 20px rgba(47,42,29,.14)}.tree-person strong{display:block;font:16px/1.16 Georgia;font-weight:400}.tree-person small{display:block;margin-top:8px;font:10px/1.35 Arial;color:var(--muted)}.tree-person .status{position:absolute;right:9px;top:9px;margin:0}.tree-person.focus{border:2px solid var(--gold);background:#fffaf0}.generation-label{position:absolute;left:20px;color:var(--gold);font:10px Arial;text-transform:uppercase;letter-spacing:.16em}.tree-details{margin-top:12px;padding:14px 16px;background:var(--panel);border:1px solid var(--line);font:12px/1.5 Arial;color:var(--muted)}.tree-details b{display:block;color:var(--ink);font:18px Georgia;margin-bottom:5px}.tree-details span{display:block}.tree-parent-line{fill:none;stroke:#557a6f;stroke-width:1.25;opacity:.65}.tree-spouse-line{fill:none;stroke:var(--gold);stroke-width:2;opacity:.9}@media(max-width:850px){.tree-toolbar{align-items:flex-start;flex-direction:column}.classic-tree{min-height:500px;height:70vh}.tree-person{width:186px}.tree-details{position:sticky;bottom:0}}@media(max-width:520px){.classic-tree{min-height:460px}.tree-person{width:172px}.tree-person strong{font-size:14px}}

.classic-tree{overflow:hidden;cursor:grab;touch-action:none;user-select:none;scroll-behavior:auto}.classic-tree.dragging{cursor:grabbing}.tree-board{transform-origin:0 0;will-change:transform}.tree-person{user-select:text}
