
:root{font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;color:#1d1d1f;background:#f5f5f7;font-synthesis:none;--muted:#68686e;--blue:#0068d9}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid #007aff88;outline-offset:4px}button{border:0}svg{display:block}button svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}header{height:76px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 36px;background:#fbfbfd;border-bottom:1px solid #e6e6ea}.brand{display:flex;align-items:center;gap:12px;font-size:19px;font-weight:650;letter-spacing:-.5px}.brand svg{width:28px;height:30px;stroke:#1d1d1f;stroke-width:1.5;fill:none}.mainnav{display:flex;gap:5px;align-items:center}.mainnav span{padding:9px 14px;color:#68686e;font-size:13px;font-weight:500;white-space:nowrap}.mainnav .active{background:#e9e9ee;color:#202024;border-radius:8px}.sketch{font-size:11px;letter-spacing:.02em;color:#68686e}main{padding:36px 36px 24px;max-width:1920px;margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}h1{font-size:34px;line-height:1.1;letter-spacing:-1.15px;font-weight:650;margin:0 0 10px}.sub{font-size:14px;color:var(--muted);margin:0}.search{display:flex;align-items:center;gap:8px;background:#e9e9ee;padding:10px 12px;border-radius:10px;color:#737379;width:230px}.search svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}.search input{outline:0;border:0;background:transparent;min-width:0;width:100%;font-size:13px;color:#1d1d1f}.search input::placeholder{color:#68686e}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:stretch}.canvas{position:relative;background:#fff;border-radius:20px;overflow:hidden;min-height:660px;box-shadow:0 8px 30px -18px #1d1d1f38}.canvasbar{position:absolute;z-index:2;top:22px;left:24px;right:24px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.segments{background:#efeff2;border-radius:8px;padding:3px;display:flex;pointer-events:auto}.segments button{border-radius:6px;padding:6px 15px;font-size:12px;color:#606066;background:transparent}.segments .selected{color:#1d1d1f;background:white;box-shadow:0 1px 4px #00000015}.canvaslabel{font-size:12px;color:#737379;display:flex;gap:6px;align-items:center}.canvaslabel i{height:6px;width:6px;border-radius:50%;background:#aab0b8}.tree{width:100%;height:660px;touch-action:none;outline:0}.familyline{fill:none;stroke:#c1c5cc;stroke-width:1.45;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.versionline{stroke:#c39760;stroke-dasharray:4 5}.junction{fill:#b0b5bf}.person{width:200px;height:88px;padding:18px 19px;position:relative;background:#fff;border-radius:13px;box-shadow:0 3px 14px -7px #00000042;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;border:1px solid #e3e5e8;color:#1d1d1f;text-align:left;transition:border-color .15s,background .15s}.person .name{font-size:17px;line-height:1.25;font-weight:590;letter-spacing:-.25px}.person .year{font-size:13px;color:#656972;line-height:1.4;margin-top:6px;font-variant-numeric:tabular-nums}.person.selected{background:#f4f9ff;border:1.5px solid #1680f5;box-shadow:0 3px 12px -8px #007aff55}.person:hover{border-color:#929aa5}.person.selected:hover{border-color:#1680f5}.versiontag{font-size:11px;color:#8e5b23;letter-spacing:.01em}.version-caption{font-size:12px;fill:#8e5b23}.treecontrol{position:absolute;bottom:24px;right:24px;display:flex;align-items:center;gap:1px;border:1px solid #e5e5e9;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 4px 14px -8px #0003}.treecontrol button{height:36px;min-width:38px;background:white;color:#51545b;display:flex;align-items:center;justify-content:center}.treecontrol button:hover{background:#f0f0f4}.treecontrol .fit{padding:0 12px;font-size:12px;border-right:1px solid #e9e9ed}.scale{padding:0 10px;font-size:11px;color:#6b6d73;min-width:48px;text-align:center}.legend{position:absolute;left:24px;bottom:29px;font-size:11px;color:#656972;display:flex;align-items:center;gap:8px}.legend i{display:inline-block;width:22px;border-top:1.4px dashed #b58d5d}.person-panel{background:#fbfbfd;border-radius:20px;padding:26px 24px 24px;align-self:stretch;position:relative}.paneltitle{display:flex;align-items:center;justify-content:space-between;color:#68686e;font-size:12px;margin-bottom:42px}.close{background:transparent;color:#737379;padding:0;display:flex}.panel-name{font-size:27px;font-weight:650;letter-spacing:-.8px;line-height:1.14;margin:0 0 9px}.panel-date{font-size:14px;color:#68686e;margin-bottom:28px}.family-summary{font-size:14px;line-height:1.65;color:#45454b;margin:0 0 26px}.panelrule{height:1px;background:#e3e3e8;margin:24px 0}.sectiontitle{font-size:12px;font-weight:600;color:#68686e;margin:0 0 15px}.relative{display:flex;justify-content:space-between;align-items:baseline;margin:14px 0;font-size:13px;gap:5px}.relative .role{color:#737379;font-size:11px}.timeline{display:grid;grid-template-columns:40px 1fr;gap:12px;font-size:13px;line-height:1.5;margin:14px 0}.timeline .date{color:#737379;font-size:12px;font-variant-numeric:tabular-nums}.historybutton{background:#e9eef6;color:#005cc5;width:100%;border-radius:9px;font-size:13px;font-weight:550;padding:12px;margin-top:21px}.historybutton:hover{background:#dfe8f4}.footnote{font-size:11px;color:#68686e;line-height:1.5;margin:16px 2px 0}.handle{display:none}.listmode{display:none;position:absolute;inset:85px 24px 80px;background:#fff;overflow:auto}.listmode button{display:flex;justify-content:space-between;width:100%;padding:15px 5px;background:transparent;border-bottom:1px solid #eee;color:#1d1d1f;font-size:14px;text-align:left}.listmode small{color:#737379}.panel-hidden .workspace{grid-template-columns:1fr}.panel-hidden .person-panel{display:none}.notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);padding:13px 20px;border-radius:12px;color:#fff;background:#303036;font-size:13px;display:none;z-index:10;max-width:90vw}.mobile-info{display:none}
@media(min-width:1700px){.workspace{grid-template-columns:minmax(0,1fr) 330px}.canvas,.tree{min-height:740px;height:740px}.person-panel{padding:30px}.paneltitle{margin-bottom:48px}}
@media(max-width:1100px){header{padding:0 24px}.mainnav span{padding:9px}.sketch{display:none}main{padding:27px 24px}.workspace{grid-template-columns:minmax(0,1fr) 270px;gap:14px}.person-panel{padding:24px 20px}.panel-name{font-size:25px}}
@media(min-width:801px) and (max-width:1199px){.workspace{grid-template-columns:1fr}.person-panel{position:absolute;right:24px;top:238px;width:260px;z-index:3;box-shadow:0 12px 35px -16px #0003}.canvas,.tree{height:640px;min-height:640px}.person-panel .paneltitle{margin-bottom:22px}.person-panel .family-summary{margin-bottom:15px}.person-panel .panelrule{margin:18px 0}.person-panel .timeline,.person-panel .sectiontitle:last-of-type{display:none}}
@media(max-width:800px){header{height:60px;padding:0 20px}.brand{font-size:18px}.brand svg{width:24px}.mainnav{display:none}.mobile-info{display:block;font-size:12px;color:#737379}main{padding:24px 0 0}.heading{padding:0 20px;align-items:flex-start;margin-bottom:20px}h1{font-size:29px;margin-bottom:8px}.sub{font-size:12px}.search{width:40px;height:36px;padding:9px;background:#e9e9ee;justify-content:center}.search input{position:absolute;right:20px;top:160px;width:0;opacity:0;pointer-events:none}.search:focus-within{width:180px}.search:focus-within input{position:static;width:130px;opacity:1;pointer-events:auto}.workspace{display:block;position:relative}.canvas{border-radius:0;box-shadow:none;min-height:650px}.tree{height:650px}.canvasbar{top:17px;left:20px;right:20px}.canvaslabel{font-size:10px}.segments button{font-size:11px;padding:6px 12px}.person-panel{position:fixed;bottom:12px;left:12px;right:12px;z-index:4;padding:11px 20px 18px;background:#fbfbfd;border-radius:21px;box-shadow:0 -4px 30px -15px #0005;min-height:146px;max-height:45dvh;overflow:auto}.handle{display:block;margin:0 auto 17px;width:32px;height:4px;border-radius:4px;background:#d3d3d8}.paneltitle{display:none}.panel-name{font-size:21px;letter-spacing:-.5px;margin:0 0 6px;max-width:80%}.panel-name br{display:none}.panel-date{font-size:12px;margin:0}.family-summary,.panelrule,.sectiontitle,.relative,.timeline,.footnote{display:none}.historybutton{position:absolute;right:20px;top:40px;background:transparent;font-size:12px;padding:0;width:auto;margin:0}.legend{bottom:178px;left:20px;font-size:10px}.treecontrol{bottom:173px;right:20px}.scale{display:none}.treecontrol .fit{font-size:11px;padding:0 9px}.treecontrol button{min-width:32px;height:32px}.canvaslabel span{display:none}.person-panel .close{display:none}.notice{bottom:185px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

::selection{background:#cfe3ff;color:#102746}input{caret-color:#0068d9}a{color:#0068d9;text-underline-offset:3px}.mainnav a{padding:9px 12px;color:#606066;font-size:13px;font-weight:500;white-space:nowrap;text-decoration:none}.mainnav a.active{background:#e9e9ee;color:#202024;border-radius:8px}.brand{text-decoration:none;color:inherit}.person .name{font-size:16px;max-width:100%;overflow-wrap:anywhere}.person .year{font-size:12px}.person.repeat .year{color:#005cc5}.person-panel{max-height:660px;overflow:auto}.paneltitle{margin-bottom:24px}.panel-name{font-size:25px}.family-summary{margin:0 0 14px}.relative{width:100%;border:0;background:none;text-align:left;padding:7px 0;margin:0;min-height:42px;color:#1d1d1f;cursor:pointer}.relative .role{font-size:12px;text-align:right}.relationship{padding:10px 0;border-bottom:1px solid #e6e6ea;font-size:13px;line-height:1.6}.relationship small{display:block;color:#68686e}.full-details{font-size:14px;line-height:1.7}.repeat-jump{display:block;background:#e8f1fc;color:#005cc5;border-radius:8px;padding:10px 12px;font-size:13px;width:100%;margin:12px 0}.legend{font-size:12px}.minimap{position:absolute;bottom:76px;right:24px;width:164px;height:88px;background:#fafafd;border:1px solid #dddde4;border-radius:9px;cursor:pointer}.minimap rect.dot{fill:#a4b1c2}.minimap rect.viewport{fill:#007aff0a;stroke:#007aff;stroke-width:18}.familyline.uncertain{stroke:#9a782e;stroke-dasharray:3 5}.familyline.focused{stroke:#6b91bd;stroke-width:2}.familyline.versionline{stroke:#a36b29}.results{position:absolute;right:36px;top:151px;z-index:8;background:white;box-shadow:0 8px 24px -10px #0005;border-radius:12px;width:300px;max-height:320px;overflow:auto}.results:empty{display:none}.results button{display:block;padding:12px 16px;text-align:left;width:100%;background:none;border-bottom:1px solid #eee;font-size:14px}.results button:hover{background:#f2f6fc}.results small{display:block;color:#68686e;margin-top:4px}.empty-search{padding:16px;color:#68686e;font-size:14px}.article{max-width:760px;margin:30px auto;padding:36px;background:white;border-radius:20px}.article h1{font-size:32px}.article p{line-height:1.85;font-size:17px}.article .sub{font-size:14px}.entry{max-width:430px;margin:18vh auto;padding:32px}.entry h1{font-size:30px}.entry p{color:#68686e;line-height:1.7}.entry button{padding:12px 18px;background:#0068d9;color:white;border-radius:9px}.mobile-nav{display:none}.treecontrol button{min-height:40px;min-width:40px}.person-panel.expanded .family-summary,.person-panel.expanded .panelrule,.person-panel.expanded .sectiontitle,.person-panel.expanded .relative,.person-panel.expanded .footnote{display:block}.panel-hidden .minimap{display:block}button{touch-action:manipulation}a:focus-visible{outline:3px solid #007aff88;outline-offset:4px;border-radius:5px}button:disabled{cursor:default;opacity:.5}.canvaslabel{font-size:12px}.status-caption{fill:#7a5b23;font-size:12px}.isolated-caption{fill:#68686e;font-size:12px}
@media(max-width:800px){.mobile-nav{display:flex;gap:18px;overflow:auto;padding:13px 20px;border-bottom:1px solid #e5e5ea;scrollbar-width:none}.mobile-nav a{white-space:nowrap;font-size:13px;text-decoration:none;color:#606066;min-height:24px}.mobile-nav a.active{color:#0068d9}.heading{margin-bottom:20px}.search input{top:200px}.results{top:200px;right:20px;width:calc(100% - 40px)}.canvasbar{background:#ffffffee;padding:6px;border-radius:10px;top:10px;left:14px;right:14px}.segments button{font-size:12px;min-height:36px}.minimap{width:100px;height:60px;right:20px;bottom:228px}.treecontrol{bottom:178px}.legend{bottom:186px;font-size:11px;max-width:120px;line-height:1.4}.person-panel{max-height:72dvh;padding-bottom:max(18px,env(safe-area-inset-bottom));min-height:146px}.person-panel.expanded{padding-top:18px}.person-panel.expanded .panel-name{margin-top:8px;max-width:85%}.person-panel.expanded .panel-date{margin-bottom:22px}.person-panel.expanded .historybutton{position:static;width:100%;background:#e9eef6;padding:12px;margin-top:18px}.person-panel.expanded .close{display:flex;position:absolute;top:20px;right:20px;min-width:32px;min-height:32px}.article{margin:0;border-radius:0;padding:30px 20px}.article p{font-size:16px}.canvaslabel span{display:none}.tree{height:calc(100dvh - 240px);min-height:600px}.canvas{min-height:600px}.person-panel:not(.expanded) .relatives{display:none}.footnote{font-size:12px}.panel-hidden .legend,.panel-hidden .treecontrol{bottom:24px}.panel-hidden .minimap{bottom:76px}}

[hidden]{display:none!important}.person{margin:9px;padding:12px 16px}.person .name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.25;max-height:40px}.person-panel>.close{position:absolute;top:20px;right:20px;font-size:23px;min-width:30px;min-height:30px;justify-content:center}.minimap{aspect-ratio:6410/1420}.canvaslabel strong{font-weight:500}

@media(max-width:800px){.person-panel:not(.expanded) .panel-name{max-width:100%;padding-right:0}.person-panel:not(.expanded) .historybutton{position:static;display:block;text-align:left;margin-top:12px;width:auto}.person-panel{min-height:160px}.minimap{bottom:244px}.treecontrol{bottom:194px}.legend{bottom:202px}}

/* WebKit: relative positioning inside foreignObject breaks ancestor SVG transforms. */
.person{position:static}
.viewer-choice{position:relative;min-width:160px;max-width:235px;z-index:12}.viewer-choice summary{display:flex;align-items:center;justify-content:flex-end;gap:9px;list-style:none;cursor:pointer;min-height:44px;font-size:13px;color:#45454b}.viewer-choice summary::-webkit-details-marker{display:none}.viewer-choice summary svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.5;flex-shrink:0}.viewer-choice summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-menu{position:absolute;right:0;top:48px;width:310px;max-width:calc(100vw - 40px);padding:20px;background:#fff;border:1px solid #e3e5e8;border-radius:13px;box-shadow:0 10px 24px -12px #0005}.viewer-menu label{display:block;font-size:14px;font-weight:600;line-height:1.5;margin-bottom:12px}.viewer-menu select{width:100%;font:inherit;font-size:14px;min-height:44px;border:1px solid #c4c7cf;border-radius:7px;background:#fafafd;color:#1d1d1f;padding:8px}.viewer-menu p{font-size:12px;line-height:1.6;color:#606066;margin:12px 0 0}.kinship{display:none;font-size:12px;line-height:15px;color:#0059b8;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:3px}.has-viewer .person .kinship{display:block}.has-viewer .person .name{-webkit-line-clamp:1;max-height:20px}.has-viewer .person .year{margin-top:3px}.panel-relation{color:#0059b8;font-size:15px;font-weight:550;line-height:1.5;margin:-10px 0 16px}.kinship-explanation{font-size:12px;line-height:1.7;margin-bottom:18px;color:#606066}.kinship-explanation summary{cursor:pointer;min-height:30px}.kinship-path{white-space:pre-line;overflow-wrap:anywhere}.list-kinship{font-size:12px;color:#0059b8;margin-left:auto;margin-right:16px}.person[title]{cursor:pointer}@media(max-width:1100px){.viewer-choice{min-width:120px;max-width:180px}.mainnav a{padding:9px 8px}}@media(max-width:800px){.viewer-choice{min-width:0;max-width:200px}.viewer-choice summary{font-size:13px}.viewer-menu{top:45px}.panel-relation{margin:10px 0 0;font-size:14px}.kinship-explanation{display:none}.person-panel.expanded .kinship-explanation:not([hidden]){display:block;margin-top:10px}.listmode button{flex-wrap:wrap;gap:5px}.list-kinship{font-size:12px}.has-viewer .person{padding-top:10px;padding-bottom:10px}}

/* Родство только в открытом инспекторе. */
.has-viewer .person .name{-webkit-line-clamp:2;max-height:40px}.has-viewer .person .year{margin-top:6px}.has-viewer .person{padding:12px 16px}
.canvas-title{font-size:13px;color:#606066}.bridge-under{fill:none;stroke:#fff;stroke-width:7;stroke-linecap:butt;vector-effect:non-scaling-stroke;pointer-events:none}.bridge-line{pointer-events:none}.familyline.branch-muted{stroke:#e7e9ed;stroke-width:1.2}.person.branch-muted{background:#fafbfc;color:#707580;border-color:#e8ebef;box-shadow:none}.person.branch-muted .name,.person.branch-muted .year{color:#707580}.familyline.focused{stroke:#5986b5;stroke-width:2}.familyline.versionline.focused{stroke:#a36b29}.people-page{max-width:1000px;padding-top:40px}.people-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:36px}.people-search span{display:block;font-size:12px;color:#68686e;margin-bottom:8px}.people-search input{min-height:44px;width:250px;padding:10px 13px;border:1px solid #d5d8df;border-radius:9px;background:#fff;font:inherit;font-size:14px}.people-directory{background:#fff;border-radius:16px;padding:4px 24px}.directory-person{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:19px 0;text-decoration:none;color:#1d1d1f;border-bottom:1px solid #e9eaee;font-size:16px;min-height:58px}.directory-person:last-child{border-bottom:0}.directory-person:hover{color:#0068d9}.directory-date{font-size:13px;color:#68686e;white-space:nowrap}.people-directory a[hidden]{display:none!important}@media(max-width:1100px){.mainnav{gap:0}.mainnav a{font-size:12px;padding:9px 6px}}@media(max-width:800px){.people-page{padding:28px 20px}.people-heading{display:block;margin-bottom:24px}.people-search{display:block;margin-top:24px}.people-search input{width:100%}.people-directory{padding:0 16px}.directory-person{font-size:14px;gap:15px}.directory-date{font-size:12px}.canvas-title{font-size:12px}}
@font-face{font-family:'Family Condensed';src:url('/static/fonts/RobotoCondensed-variable.ttf') format('truetype');font-weight:100 900;font-style:normal;font-display:swap}.person .name{font-family:'Family Condensed',-apple-system,BlinkMacSystemFont,Arial,sans-serif;font-weight:550;font-size:18px;line-height:1.15;letter-spacing:0;max-height:42px}.has-viewer .person .name{max-height:42px}

/* Camera bounds follow the generated tree; keep the minimap viewport legible. */
.minimap rect.viewport{stroke-width:1.2;vector-effect:non-scaling-stroke}

.context-caption{font-size:12px;fill:#68686e}

.familyline.versionline.branch-muted{stroke:#a36b29}

/* Crossing bridges and actual family junctions share the existing palette. */
.family-junction{fill:#a4b1c2;stroke:none!important}.family-junction.focused{fill:#5986b5}.family-junction.branch-muted{fill:#e7e9ed}.family-junction.versionline{fill:#a36b29}.bridge-under{stroke:#fff;stroke-width:6;stroke-linecap:round}.bridge-line{fill:none}.family-junction{pointer-events:none}
