:root{--bg:#f9f2d5;--surface:#fefbe9;--surface-2:#f4ecc6;--border:#e6d9a8;--text:#2b2612;--muted:#6f6440;--accent:#265ddb;--accent-contrast:#fff;--danger:#b8352a;--shadow:0 1px 3px rgba(70,55,15,.1),0 6px 20px rgba(70,55,15,.07);--shadow-lg:0 12px 44px rgba(70,55,15,.22);--pill-ok:#1c6b3f;--pill-warn:#8a5210;--radius:14px}:root[data-theme=dark]{--bg:#04060a;--surface:#171c24;--surface-2:#1f262f;--border:#2a323d;--text:#e7ecf2;--muted:#97a2b0;--accent:#5b8bff;--accent-contrast:#0f1319;--danger:#ff6b5e;--shadow:0 1px 3px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);--shadow-lg:0 12px 48px rgba(0,0,0,.6);--pill-ok:#4fbf82;--pill-warn:#e8a34e}:root[data-theme=forest]{--bg:#040a06;--surface:#101a14;--surface-2:#17251c;--border:#22362a;--text:#e4efe6;--muted:#93ab99;--accent:#4caf7d;--accent-contrast:#04120b;--danger:#ff7a6b;--shadow:0 1px 3px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);--shadow-lg:0 12px 48px rgba(0,0,0,.6);--pill-ok:#4fbf82;--pill-warn:#e8a34e}:root[data-theme=tangerine]{--bg:#0d0703;--surface:#1e1209;--surface-2:#2a1a0d;--border:#3d2713;--text:#f6e9dc;--muted:#bfa287;--accent:#ff8a3d;--accent-contrast:#160b03;--danger:#ff6b5e;--shadow:0 1px 3px rgba(0,0,0,.45),0 8px 24px rgba(0,0,0,.38);--shadow-lg:0 12px 48px rgba(0,0,0,.62);--pill-ok:#4fbf82;--pill-warn:#e8a34e}:root[data-theme=desert]{--bg:#e6d5bb;--surface:#f8f0e0;--surface-2:#e4d5ba;--border:#d2c0a0;--text:#322619;--muted:#6b5940;--accent:#874f11;--accent-contrast:#fff;--danger:#a5321f;--shadow:0 1px 3px rgba(90,60,20,.12),0 6px 20px rgba(90,60,20,.1);--shadow-lg:0 12px 44px rgba(90,60,20,.24);--pill-ok:#1c6b3f;--pill-warn:#8a5210}:root[data-theme=crimson]{--bg:#f8e7e7;--surface:#fffafa;--surface-2:#f7e3e3;--border:#eccfcf;--text:#3a2226;--muted:#846065;--accent:#c62828;--accent-contrast:#fff;--danger:#a01818;--shadow:0 1px 3px rgba(90,20,25,.1),0 6px 20px rgba(90,20,25,.08);--shadow-lg:0 12px 44px rgba(90,20,25,.2);--pill-ok:#1d7550;--pill-warn:#8a5210}:root{--line-2: color-mix(in srgb, var(--border) 62%, var(--text));--faint: color-mix(in srgb, var(--muted) 72%, var(--surface));--accent-sf: color-mix(in srgb, var(--accent) 14%, var(--surface));--ok-sf: color-mix(in srgb, var(--pill-ok) 15%, var(--surface));--warn-sf: color-mix(in srgb, var(--pill-warn) 15%, var(--surface));--danger-sf: color-mix(in srgb, var(--danger) 15%, var(--surface));--r-sm: 9px;--late: var(--danger);--soon: var(--pill-warn);--fine: var(--pill-ok)}:root{--nav-accent: var(--accent)}body{background:var(--bg);color:var(--text)}.brand-mark{color:var(--accent)}main{max-width:var(--main-w);margin:0 auto;padding:calc(16px * var(--pad)) 16px calc(28px * var(--pad))}.panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:calc(14px * var(--pad));box-shadow:var(--shadow)}.panel+.panel{margin-top:14px}.panel-head{margin-bottom:12px}.panel-head h2{margin:0;font-size:calc(15 * var(--px) * var(--fs));font-weight:650}.lede{margin:2px 0 0;color:var(--muted);font-size:calc(13 * var(--px) * var(--fs));max-width:62ch}.err{margin:0 0 14px;padding:10px 12px;border-radius:var(--r-sm);background:var(--danger-sf);color:var(--late);border:1px solid color-mix(in srgb,var(--late) 35%,var(--border));font-size:calc(13.5 * var(--px) * var(--fs))}.tree-split{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start}.tree-col{min-width:0}@media(max-width:980px){.tree-split{grid-template-columns:minmax(0,1fr)}}.tree-scroll{overflow:auto;overscroll-behavior:contain;height:min(62vh,620px);padding-bottom:6px;-webkit-overflow-scrolling:touch;touch-action:none;cursor:grab}.tree-scroll.is-panning{cursor:grabbing}.tree-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.canvas-wrap{transform-origin:0 0}.canvas{position:relative;transform-origin:0 0}.tree-tools{display:flex;align-items:center;gap:8px;flex:none}.zoom{display:flex;align-items:center;gap:4px}.zoom .btn{min-width:44px;min-height:44px}.wires{position:absolute;inset:0;overflow:visible}.wires line,.wires path{stroke:var(--line-2);stroke-width:2;fill:none}.wires line.loose,.wires path.loose{stroke-dasharray:5 4}.node{position:absolute;width:200px;height:116px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:12px;font:inherit;text-align:center;cursor:pointer}.node:hover{border-color:var(--line-2)}.node.on{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 32%,transparent)}.node.is-self .av{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.node.is-gone{opacity:.8;border-style:dashed}.rip{margin-left:.32em;opacity:.6;font-weight:500;white-space:nowrap}.node .av,.node .nm,.node .sub{flex:none}.av{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--bg);border:1px solid var(--border);font-size:calc(12 * var(--px) * var(--fs));font-weight:600}.av.big{width:44px;height:44px;font-size:calc(14 * var(--px) * var(--fs))}.nm{font-weight:650;font-size:calc(13.5 * var(--px) * var(--fs));line-height:1.2;max-width:100%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.sub{color:var(--muted);font-size:calc(11 * var(--px) * var(--fs));line-height:1.25;max-width:100%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.rows{display:flex;flex-direction:column;gap:6px}.row{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--r-sm);font:inherit;text-align:left;cursor:pointer}.row:hover{border-color:var(--line-2)}.row.on{border-left-color:var(--accent)}.row-main{min-width:0;flex:1 1 auto}.row-title{font-weight:600;font-size:calc(14 * var(--px) * var(--fs));overflow-wrap:anywhere}.row-sub{color:var(--muted);font-size:calc(12.5 * var(--px) * var(--fs));overflow-wrap:anywhere}.row-when{flex:none;color:var(--muted);font-size:calc(12.5 * var(--px) * var(--fs));white-space:nowrap}.person .who{display:flex;gap:12px;align-items:center;margin-bottom:12px}.person h2{margin:0;font-size:calc(17 * var(--px) * var(--fs))}.person .legal{margin:0;color:var(--muted);font-size:calc(12 * var(--px) * var(--fs))}.person dl{margin:0;display:flex;flex-direction:column}.person .pair{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;padding:7px 0;border-top:1px solid var(--border)}.person dt{color:var(--muted);font-size:calc(12 * var(--px) * var(--fs))}.person dd{margin:0;font-size:calc(13 * var(--px) * var(--fs));overflow-wrap:anywhere}.jump{background:none;border:0;padding:0;font:inherit;cursor:pointer;color:var(--accent);text-decoration:none;display:inline-flex;align-items:center;min-height:44px;overflow-wrap:anywhere;max-width:100%;min-width:0;text-align:left}.jump:hover{text-decoration:underline}.empty{padding:18px 12px;text-align:center;color:var(--muted);font-size:calc(13.5 * var(--px) * var(--fs))}.btn{font:inherit;font-size:calc(13.5 * var(--px) * var(--fs));font-weight:560;padding:7px 13px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap}.btn:hover{border-color:var(--line-2);background:var(--surface-2)}.btn.primary{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.btn.primary:hover{filter:brightness(1.06)}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}.btn.danger:hover{background:var(--danger-sf)}.btn.small{font-size:calc(12.5 * var(--px) * var(--fs));padding:5px 10px;min-height:44px;min-width:44px}.btn.icon{padding:5px 8px;line-height:1}.sheet{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);padding:0;width:min(560px,calc(100vw - 24px));max-height:min(88vh,900px);overflow:hidden;box-shadow:var(--shadow-lg)}.sheet.wide{width:min(760px,calc(100vw - 24px))}.sheet::backdrop{background:#00000073}dialog.sheet[open]{display:flex;flex-direction:column}.sheet form,.sheet-in{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.sheet-head{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--border);flex:none}.sheet-head h2{margin:0;text-transform:none;letter-spacing:normal;color:var(--text);font-size:calc(16 * var(--px) * var(--fs));overflow-wrap:anywhere}.sheet-head .btn{margin-left:auto}.sheet-body{padding:14px 16px;overflow-y:auto;min-height:0;flex:1 1 auto;display:flex;flex-direction:column;gap:11px}.sheet-foot{display:flex;gap:8px;align-items:center;padding:11px 16px;border-top:1px solid var(--border);background:var(--surface);flex:none}.sheet-foot .spacer{flex:1 1 auto}.note{margin:0;background:var(--accent-sf);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border));border-radius:var(--r-sm);padding:9px 11px;font-size:calc(13 * var(--px) * var(--fs))}.field{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 160px}.field.narrow{flex:0 1 120px}.field>span,.field>legend{font-size:calc(12 * var(--px) * var(--fs));color:var(--muted);font-weight:560}.field input,.field select,.field textarea{font:inherit;font-size:calc(14 * var(--px) * var(--fs));padding:7px 9px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);min-width:0;width:100%}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.field textarea{resize:vertical}.field-row{display:flex;gap:10px;flex-wrap:wrap}.field.choice{border:1px solid var(--border);border-radius:var(--r-sm);padding:9px 11px;gap:7px}.radio{display:flex;gap:8px;align-items:flex-start;font-size:calc(13 * var(--px) * var(--fs));cursor:pointer}.radio input{margin-top:3px;flex:none;width:auto}.radio span{min-width:0}.radio strong{font-weight:650}.check{display:flex;gap:8px;align-items:center;font-size:calc(13.5 * var(--px) * var(--fs))}.check input{width:auto}.row-head{display:flex;align-items:flex-start;gap:12px}.row-head>div{min-width:0;flex:1 1 auto}.row-head .btn{flex:none}.hint{margin:0;color:var(--muted);font-size:calc(12 * var(--px) * var(--fs))}.link-row{display:flex;align-items:center;gap:10px}.link-row .what{flex:1 1 auto;min-width:0;font-size:calc(13.5 * var(--px) * var(--fs))}.link-row .what em{color:var(--muted);font-style:normal}@media(max-width:560px){.tree-scroll{height:min(56vh,460px)}#pf-connect .field-row,#link-form-el .field-row{flex-direction:column}#pf-connect .field-row .field,#link-form-el .field-row .field{flex:1 1 auto}.tree-tools{justify-content:space-between;flex-wrap:wrap;row-gap:8px}.field.narrow{flex:1 1 100px}.sheet,.sheet.wide{width:100vw;max-width:100vw;max-height:100vh;border-radius:0;border:0}.row-head{flex-direction:column;align-items:stretch}}.person-acts{display:flex;gap:8px;margin:-4px 0 12px}.sheet-body>.field{flex:0 0 auto}.field.date{flex:1 1 190px;min-width:170px}.panel-head:has(.btn){display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.tl-filters{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 14px;padding-bottom:14px;border-bottom:1px solid var(--border)}.tl-decade{margin:18px 0 8px;font-size:calc(12 * var(--px) * var(--fs));font-weight:700;letter-spacing:.08em;color:var(--muted)}.tl-decade:first-child{margin-top:0}.timeline{position:relative;padding-left:18px}.timeline:before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:2px;background:var(--border);border-radius:2px}.tl-item{position:relative;padding:0 0 18px 4px}.tl-item:before{content:"";position:absolute;left:-18px;top:6px;width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--surface)}.tl-item[data-kind=death]:before{background:var(--muted)}.tl-item.is-linked:after{content:"";position:absolute;inset:-6px -8px 10px -10px;border:2px solid var(--accent);border-radius:10px;pointer-events:none;animation:tl-found 2.6s ease-out forwards}@keyframes tl-found{0%,55%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.tl-item.is-linked:after{animation:none;opacity:1}}.tl-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.tl-when{font-size:calc(12.5 * var(--px) * var(--fs));font-weight:650;color:var(--text);font-variant-numeric:tabular-nums}.tl-kind{font-size:calc(11 * var(--px) * var(--fs));color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:1px 8px}.tl-title{margin:3px 0 0;font-size:calc(14.5 * var(--px) * var(--fs));font-weight:600;text-wrap:balance;overflow-wrap:anywhere}.tl-who,.tl-place,.tl-desc,.tl-foot{margin:4px 0 0;font-size:calc(13 * var(--px) * var(--fs));max-width:62ch;overflow-wrap:anywhere}.tl-place,.tl-foot{color:var(--muted);font-size:calc(12 * var(--px) * var(--fs))}.tl-desc{color:var(--text);white-space:pre-wrap}.tl-foot{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:6px}.tl-priv{border:1px solid var(--border);border-radius:999px;padding:1px 8px;font-size:calc(11 * var(--px) * var(--fs))}.tl-priv.weak{color:var(--pill-warn);border-color:color-mix(in srgb,var(--pill-warn) 40%,var(--border))}.tl-edit{margin-top:8px}.hint.warn{color:var(--pill-warn)}.ef-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:2px 12px;margin-top:6px;max-height:210px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 10px}.ef-person{display:flex;align-items:center;gap:8px;font-size:calc(13 * var(--px) * var(--fs));padding:3px 0}.ef-person input{flex:none;width:auto}.person-sec{margin:16px 0 6px;font-size:calc(12 * var(--px) * var(--fs));font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.person-events{margin:0;padding:0;list-style:none}.person-events li{display:flex;gap:8px;align-items:baseline;padding:3px 0;font-size:calc(13 * var(--px) * var(--fs))}.pe-when{flex:0 0 auto;color:var(--muted);font-size:calc(11.5 * var(--px) * var(--fs));font-variant-numeric:tabular-nums}.stories{display:flex;flex-direction:column;gap:12px}.story{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);padding:12px 14px}.story.waiting{border-style:dashed;background:none}.story .tl-title{margin-top:4px}.story .tl-who,.story .tl-place,.story .tl-desc{max-width:68ch}.story-qs{margin:8px 0 0;padding-left:20px}.story-qs li{font-size:calc(13 * var(--px) * var(--fs));padding:1px 0;max-width:62ch}.story-body{margin-top:8px}.story-body summary{cursor:pointer;font-size:calc(12.5 * var(--px) * var(--fs));color:var(--accent);width:max-content}.story-body p{margin:8px 0 0;white-space:pre-wrap;max-width:66ch;font-size:calc(13.5 * var(--px) * var(--fs));line-height:1.55}.story-media{color:var(--accent);font-size:calc(12 * var(--px) * var(--fs))}.media-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.media-item{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);padding:11px 13px;min-width:0}.media-item.waiting{border-style:dashed;background:none}.media-item .tl-title{margin-top:3px}.media-gaps{margin:6px 0 0;font-size:calc(12 * var(--px) * var(--fs));color:var(--pill-warn)}.coll-chip{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:1px 9px;margin-right:6px;font-size:calc(11.5 * var(--px) * var(--fs));color:var(--muted);cursor:pointer;font-family:inherit}.coll-chip:hover{color:var(--text);border-color:var(--accent)}.home-cards{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.home-card{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);padding:11px 13px;min-width:0}.home-card .tl-title{margin:0 0 4px;font-size:calc(14 * var(--px) * var(--fs))}.home-card .tl-desc{margin:0 0 8px}.home-card .btn{margin-top:2px}.home-add{display:flex;gap:8px;flex-wrap:wrap}.home-add .btn{max-width:100%;white-space:normal}#home-search-wrap{margin:0}.home-results{margin-top:10px;border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden;max-height:420px;overflow-y:auto}.search-hit{display:flex;align-items:baseline;gap:10px;width:100%;padding:9px 12px;background:var(--surface);border:0;border-bottom:1px solid var(--border);text-align:left;font-family:inherit;font-size:calc(13.5 * var(--px) * var(--fs));color:var(--text);cursor:pointer}.search-hit:last-child{border-bottom:0}.search-hit:hover{background:var(--surface-2)}.search-kind{flex:0 0 auto;font-size:calc(11 * var(--px) * var(--fs));color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:1px 8px}.search-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-detail{flex:0 0 auto;color:var(--muted);font-size:calc(12 * var(--px) * var(--fs))}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.home-card.memorial{background:none;border-left:3px solid var(--muted)}.home-card.memorial .tl-title{font-weight:600}.home-card.memorial .hint{margin-top:6px}:root{--famnav-h: 54px}body{padding-bottom:calc(var(--famnav-reserve, var(--famnav-h)) + env(safe-area-inset-bottom))}.famnav{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;justify-content:flex-start;justify-content:safe center;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;gap:6px;padding:0 10px env(safe-area-inset-bottom);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-top:1px solid var(--border)}.famnav::-webkit-scrollbar{display:none}.famnav-fade{position:fixed;bottom:0;z-index:51;width:calc(26 * var(--px) * var(--fs));height:var(--famnav-reserve, var(--famnav-h));pointer-events:none;opacity:0;transition:opacity .18s ease}.famnav-fade.is-on{opacity:1}.famnav-fade-l{left:0;background:linear-gradient(to right,var(--surface),transparent)}.famnav-fade-r{right:0;background:linear-gradient(to left,var(--surface),transparent)}@media(prefers-reduced-motion:reduce){.famnav-fade{transition:none}}.famnav a{flex:1 0 auto;max-width:132px;min-height:var(--famnav-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 12px;text-decoration:none;color:var(--muted);font-size:calc(11 * var(--px) * var(--fs));font-weight:550;letter-spacing:.01em;border-top:2px solid transparent;margin-top:-1px}.famnav .ico{font-size:calc(19 * var(--px) * var(--fs));line-height:1}.famnav .ico svg{width:1.05em;height:1.05em;display:block}.famnav a:hover{color:var(--text)}.famnav a:focus-visible{outline:2px solid var(--nav-accent);outline-offset:-3px}.famnav a[aria-current=page]{color:var(--nav-accent);border-top-color:var(--nav-accent)}.famnav.is-app{--famnav-h: 58px}@media(display-mode:standalone){:root{--famnav-h: 58px}}@media print{.famnav,.famnav-fade{display:none}body{padding-bottom:0}}.branch-bar{display:flex;align-items:center;gap:10px;margin:0 0 10px}#branch-all{flex:0 0 auto}.canvas>.fold-toggle{position:absolute;transform:translate(-50%,-50%) scale(var(--inv-zoom, 1));display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font-size:calc(15 * var(--px) * var(--fs));line-height:1;cursor:pointer;z-index:2}.canvas>.fold-toggle.is-collapsed{border-color:var(--accent);background:var(--accent);color:var(--on-accent, #fff);font-weight:600}.canvas>.fold-toggle:hover{border-color:var(--accent);color:var(--accent)}.canvas>.fold-toggle.is-collapsed:hover{color:var(--on-accent, #fff);opacity:.85}.canvas>.fold-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.canvas>.fold-toggle:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:44px}
