:root{--fg:#1f2328;--muted:#59636e;--bg:#fff;--surface:#f6f8fa;--border:#d1d9e0;--accent:#8a3c0b;--accent-fg:#fff;--danger:#b42318;--notice:#fff8c5;--notice-border:#d4a72c;--tree-male:#2f6fb3;--tree-female:#b3407a;--tree-unknown:#8c959f;--tree-union:#1f7a4d;--tree-line:#6e7781;color:var(--fg);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--fg:#e6edf3;--muted:#9198a1;--bg:#0d1117;--surface:#151b23;--border:#3d444d;--accent:#f0883e;--accent-fg:#0d1117;--danger:#ff7b72;--notice:#2b2410;--notice-border:#9e6a03;--tree-male:#58a6ff;--tree-female:#f778ba;--tree-unknown:#8b949e;--tree-union:#3fb950;--tree-line:#8b949e}}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent)}h1{margin:.5rem 0 1rem;font-size:1.5rem;line-height:1.25}h2{margin:1.5rem 0 .5rem;font-size:1.15rem}h3{margin:1rem 0 .25rem;font-size:1rem}.container{max-width:760px;margin:0 auto;padding:1rem}.narrow{max-width:420px;margin:0 auto}.topbar{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.5rem 1rem;display:flex}.topbar nav{flex-wrap:wrap;align-items:center;gap:.25rem 1rem;display:flex}.brand{font-size:1.1rem;font-weight:700;text-decoration:none}.topbar nav a.active{font-weight:600}.who{color:var(--muted);font-size:.875rem}.banner{background:var(--notice);border-bottom:1px solid var(--notice-border);text-align:center;padding:.5rem 1rem}.muted{color:var(--muted)}.error{color:var(--danger)}.notice{border:1px solid var(--notice-border);background:var(--notice);border-radius:6px;padding:.75rem}.lead{font-size:1.05rem}.prose{white-space:pre-wrap}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}button,.button{border:1px solid var(--accent);background:var(--accent);min-height:44px;color:var(--accent-fg);font:inherit;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;padding:.5rem 1rem;text-decoration:none;display:inline-flex}button:disabled{opacity:.55;cursor:not-allowed}button.secondary,.button.secondary{color:var(--accent);background:0 0}button.danger{border-color:var(--danger);color:var(--danger);background:0 0}button.link{min-height:0;color:var(--accent);background:0 0;border:0;padding:0;text-decoration:underline}button.link.danger{color:var(--danger)}input,select,textarea{border:1px solid var(--border);background:var(--bg);width:100%;min-height:44px;color:var(--fg);font:inherit;border-radius:6px;padding:.5rem}input[type=checkbox]{width:1.25rem;min-height:1.25rem}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.form{gap:.75rem;display:grid}.form label{gap:.25rem;display:grid}.password-input{position:relative}.password-input input{padding-right:48px}.password-input .reveal{width:44px;min-height:44px;color:var(--muted);background:0 0;border:0;padding:0;position:absolute;bottom:0;right:0}.password-input .reveal[aria-pressed=true]{color:var(--accent)}.form label.check{align-items:center;gap:.5rem;display:flex}.form label.invalid input{border-color:var(--danger)}fieldset{border:1px solid var(--border);border-radius:8px;gap:.75rem;margin:0;padding:.75rem;display:grid}legend{padding:0 .25rem;font-weight:600}.row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.row.three{grid-template-columns:repeat(3,1fr)}.actions{flex-wrap:wrap;gap:.5rem;margin:.75rem 0;display:flex}.actions.sticky{background:var(--bg);padding:.5rem 0;position:sticky;bottom:0}.searchbox{gap:.5rem;display:flex}.filters{grid-template-columns:repeat(3,1fr);gap:.5rem;margin:.75rem 0;display:grid}.filters label{gap:.25rem;font-size:.875rem;display:grid}.list{margin:0;padding:0;list-style:none}.list li{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.25rem .75rem;padding:.6rem 0;display:flex}.person-line{flex:12rem;display:grid}.person-line a{font-weight:600}.person-line .muted{font-size:.875rem}.tag{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:0 .5rem;font-size:.8rem}.facts{grid-template-columns:max-content 1fr;gap:.25rem 1rem;margin:0;display:grid}.facts dt{color:var(--muted)}.facts dd{margin:0}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.page-head h1{margin-bottom:.5rem}.panel{border:1px solid var(--border);background:var(--surface);border-radius:8px;margin:1rem 0;padding:1rem}.conflict{border-color:var(--notice-border);background:var(--notice)}.internal{border-left:4px solid var(--notice-border);padding:0 .75rem .5rem}.pager{justify-content:space-between;align-items:center;margin:1rem 0;display:flex}.tree-page{gap:.5rem;display:grid}.container:has(.tree-page){max-width:none;padding:.5rem}.tree-toolbar{flex-wrap:wrap;align-items:end;gap:.5rem 1rem;display:flex}.tree-toolbar label{gap:.25rem;font-size:.875rem;display:grid}.tree-toolbar select{width:auto}.tree-canvas{border:1px solid var(--border);background:var(--surface);border-radius:8px;height:calc(100dvh - 11rem);min-height:360px}.tree-card{border:1px solid var(--border);border-left:4px solid var(--tree-unknown);background:var(--bg);width:168px;height:76px;color:var(--fg);text-align:center;cursor:pointer;border-radius:8px;align-content:center;padding:.35rem .5rem;font-size:.85rem;line-height:1.25;display:grid;position:relative}.tree-card.male,.legend-card.male{border-left-color:var(--tree-male)}.tree-card.female,.legend-card.female{border-left-color:var(--tree-female)}.tree-card.focus{box-shadow:0 0 0 3px var(--accent)}.tree-card.selected{outline:2px dashed var(--accent);outline-offset:2px}.tree-card.hidden-card{color:var(--muted);cursor:default;border-style:dashed}.tree-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tree-meta{color:var(--muted);font-size:.75rem}.tree-card .react-flow__handle{opacity:0;pointer-events:none}.tree-card .expand{border-radius:999px;width:28px;height:22px;min-height:0;padding:0;font-size:.7rem;line-height:1;position:absolute;left:50%;transform:translate(-50%)}.tree-card .expand.up{top:-12px}.tree-card .expand.down{bottom:-12px}.tree-canvas .react-flow__edge.tree-edge.union path{stroke:var(--tree-union);stroke-width:2.5px}.tree-canvas .react-flow__edge.tree-edge.parent-child path{stroke:var(--tree-line)}.tree-edge.union.divorced path,.tree-edge.union.separated path,.tree-edge.parent-child.adoptive path,.tree-edge.parent-child.step path{stroke-dasharray:6 4}.tree-legend{font-size:.875rem}.tree-legend summary{cursor:pointer;min-height:44px;color:var(--accent);align-items:center;font-weight:600;display:inline-flex}.legend-groups{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:.75rem;padding:.5rem .75rem .75rem;display:grid}@media (min-width:720px){.legend-groups{grid-template-columns:repeat(3,minmax(0,1fr))}}.legend-group{align-content:start;gap:.35rem;display:grid}.legend-row{align-items:center;gap:.5rem;display:flex}.legend-card{border:1px solid var(--border);border-left:4px solid var(--tree-unknown);background:var(--bg);border-radius:4px;flex:none;width:36px;height:20px}.legend-card.focus{box-shadow:0 0 0 2px var(--accent)}.legend-card.hidden-card{border-style:dashed}.legend-line{flex:none}.legend-key{text-align:center;min-width:40px;color:var(--muted);flex:none}.tree-canvas .react-flow__edge-text{fill:var(--fg);font-size:11px}.tree-canvas .react-flow__edge-textbg{fill:var(--surface)}.tree-canvas .react-flow__controls{flex-direction:column;gap:4px;margin:8px;display:flex}.tree-canvas .react-flow__controls-button{border:1px solid var(--border);background:var(--bg);width:36px;height:36px;color:var(--fg);border-radius:6px;place-items:center;padding:0;display:grid}.tree-canvas .react-flow__controls-button svg{fill:currentColor;width:14px;height:14px}.tree-canvas .react-flow__edge-path{fill:none;stroke:var(--muted);stroke-width:1.5px}.tree-panel{margin:0;position:sticky;bottom:0}.account{align-items:flex-start}.account .actions{margin:0}label.inline select{width:auto}@media (min-width:720px){.container{padding:1.5rem 2rem}h1{font-size:1.85rem}}
