body:has(.viewer){overflow:hidden;height:100dvh}body:has(.viewer) main{display:flex;flex-direction:column;min-height:0}body:has(.viewer) .site-footer{display:none}.viewer{position:relative;flex:1;min-height:0;display:flex;overflow:hidden;-webkit-tap-highlight-color:transparent}.viewer .stage{position:relative;flex:1;overflow:hidden}.viewer svg#view-svg{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.viewer svg#view-svg:active{cursor:grabbing}.viewer .skeleton{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--ink-muted);font-style:italic}.viewer .skeleton span{animation:v-pulse 1.2s ease-in-out infinite}@keyframes v-pulse{50%{opacity:.45}}.viewer .notice{position:absolute;top:6px;left:50%;transform:translate(-50%);margin:0;padding:.2rem .8rem;color:var(--crimson);font-size:.8rem;font-style:italic;background:color-mix(in srgb,var(--parch-light) 80%,transparent);border-radius:var(--radius);pointer-events:none;max-width:92%;text-align:center}.viewer .tools{position:absolute;display:flex;gap:.45rem;z-index:20}.viewer .tools-tl{top:10px;left:10px;flex-direction:column;align-items:flex-start}.viewer .tools-br{bottom:calc(10px + env(safe-area-inset-bottom));right:10px;flex-direction:column;align-items:flex-end}.viewer .tools-bl{bottom:calc(10px + env(safe-area-inset-bottom));left:10px;flex-direction:column-reverse;align-items:flex-start}.viewer .tool{min-height:44px;min-width:44px;padding:.4rem .7rem;font-family:var(--font-display);font-size:.82rem;color:var(--ink);background:color-mix(in srgb,var(--parch-light) 88%,transparent);border:1px solid var(--gilt-deep);border-radius:var(--radius);box-shadow:0 1px 4px #43331d2e;cursor:pointer}.viewer .tool:hover{border-color:var(--gilt)}.viewer .stepper{display:flex;align-items:center;gap:.3rem;background:color-mix(in srgb,var(--parch-light) 88%,transparent);border:1px solid var(--gilt-deep);border-radius:var(--radius);padding:.1rem}.viewer .stepper .tool{border:none;box-shadow:none;background:none;font-size:1.1rem}.viewer .stepper span{font-size:.8rem;color:var(--ink-muted);min-width:3.6rem;text-align:center}.viewer .pop{background:var(--parch-light);border:1px solid var(--gilt);border-radius:var(--radius);box-shadow:0 6px 24px #43331d47;padding:.7rem .9rem;max-width:min(78vw,21rem)}.viewer .pop-row{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--ink-muted);margin-bottom:.5rem}.viewer .pop-row input[type=range]{flex:1;accent-color:var(--gilt-deep)}.viewer .pop-row select{flex:1;font-family:var(--font-body);font-size:16px;color:var(--ink);background:var(--parch);border:1px solid var(--gilt-deep);border-radius:var(--radius);padding:.35rem .4rem;min-height:40px}.viewer .pop-check{display:flex;align-items:center;gap:.45rem;font-size:.9rem;padding:.3rem 0;min-height:32px}.viewer .pop-check input{width:18px;height:18px;accent-color:var(--crimson)}.viewer .legend{max-height:46dvh;overflow-y:auto;font-size:.84rem}.viewer .legend .leg-h{font-family:var(--font-display);font-size:.8rem;margin:.3rem 0;color:var(--ink-muted)}.viewer .legend .item{display:flex;align-items:center;gap:.45rem;padding:.13rem 0}.viewer .legend .sw{width:12px;height:12px;border-radius:50%;flex:none;box-shadow:0 0 0 1px var(--gilt-deep)}.viewer .legend .ln{width:22px;flex:none}.viewer .tip{position:fixed;z-index:50;pointer-events:none;max-width:17rem;background:var(--parch-light);border:1px solid var(--gilt);border-radius:var(--radius);box-shadow:0 4px 16px #43331d4d;padding:.45rem .6rem;font-size:.82rem;line-height:1.35;opacity:0;transition:opacity .12s ease}.viewer .tip b{font-family:var(--font-display)}.viewer .tip .tmeta{color:var(--ink-muted)}.viewer .link{fill:none}.viewer .link.descent{stroke:var(--descent);stroke-width:1.6}.viewer .link.descent.uncertain{stroke-dasharray:2 5;opacity:.7}.viewer .link.descent.illegit{stroke-dasharray:8 4}.viewer .link.descent.illegit-inferred{stroke-dasharray:8 4;opacity:.6}.viewer .link.union{stroke:var(--crimson);stroke-width:1.8}.viewer .link.union.u-concubinage{stroke-dasharray:6 4}.viewer .link.union.u-liaison{stroke-dasharray:2 5}.viewer .link.foster{stroke:var(--teal);stroke-width:1.8;stroke-dasharray:3 5}.viewer .nlabel{font-family:var(--font-display);font-size:var(--fs-name);fill:var(--ink);text-anchor:middle;paint-order:stroke;stroke:var(--parch-light);stroke-width:3px}.viewer .ndate{font-family:var(--font-body);font-size:var(--fs-date);fill:var(--ink-muted);text-anchor:middle;paint-order:stroke;stroke:var(--parch-light);stroke-width:3px}.viewer .wlabel{font-family:var(--font-display);font-size:var(--fs-wlabel);fill:var(--ink-muted);font-style:italic;paint-order:stroke;stroke:var(--parch-light);stroke-width:3px}.viewer .hlabel{font-family:var(--font-display);font-size:var(--fs-house);fill:var(--ink);paint-order:stroke;stroke:var(--parch-light);stroke-width:3px}.viewer g.node{cursor:pointer;outline:none}.viewer .scrim{position:fixed;inset:0;z-index:60;background:#43331d59;opacity:0;pointer-events:none;transition:opacity .18s ease}.sheet-panel{z-index:70;background:var(--panel);border-top:2px solid var(--gilt);display:flex;flex-direction:column}.sheet-handle{width:44px;height:4px;border-radius:2px;background:var(--gilt-deep);margin:.5rem auto .1rem;flex:none}.sheet-close{position:absolute;top:.5rem;right:.6rem;min-width:44px;min-height:44px;background:none;border:none;color:var(--ink-muted);font-size:1rem;cursor:pointer}.sheet-body{padding:.4rem 1rem 1.4rem;overflow-y:auto;overscroll-behavior:contain}.sheet-body h2{margin:.3rem 0 0;font-size:1.25rem}.sheet-body .pat{font-family:var(--font-display);color:var(--ink-muted);margin:0 0 .5rem}.sheet-body .row{display:flex;gap:.7rem;padding:.18rem 0;font-size:.92rem}.sheet-body .row .k{color:var(--ink-muted);flex:none;min-width:4.6rem;font-size:.85rem}.sheet-body a{color:var(--crimson);text-decoration:none;border-bottom:1px dotted var(--gilt-deep)}.sheet-body .sheet-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}.sheet-body .kinpath{margin-top:.7rem;padding-top:.6rem;border-top:1px solid var(--line);font-size:.88rem;line-height:1.8}.sheet-body .kinpath .term{color:var(--gilt-deep);font-weight:600}.sheet-body .kinpath .rel{color:var(--ink-faint);font-style:italic}@media(max-width:767px){.sheet-panel{position:fixed;left:0;right:0;bottom:0;max-height:72dvh;border-radius:10px 10px 0 0;transform:translateY(105%);transition:transform .22s ease;box-shadow:0 -8px 30px #2c262059;padding-bottom:env(safe-area-inset-bottom)}.viewer.sheet-open .sheet-panel{transform:translateY(0)}.viewer.sheet-open .scrim{opacity:1;pointer-events:auto}}@media(min-width:768px){.sheet-panel{position:relative;width:var(--aside-w);border-top:none;border-left:2px solid var(--gilt);display:none}.viewer.sheet-open .sheet-panel{display:flex}.sheet-handle{display:none}}@media(prefers-reduced-motion:reduce){.sheet-panel,.scrim,.viewer .tip{transition:none}}
