:root{--paper:#f8fafd;--ink:#101a38;--accent:#2859f2;--mint:#159e85;--line:#dbe3ef;--sans:"Manrope Variable", sans-serif;--muted:#5c6b87}.atlas-view{box-sizing:border-box;width:100%;min-width:0;height:100%;min-height:0;color:var(--ink);font-family:var(--sans), system-ui, sans-serif;background:0 0}.atlas-view *,.atlas-view :before,.atlas-view :after{box-sizing:border-box}.canvas-stage{width:100%;min-width:0;height:100%;min-height:0;position:relative;overflow:hidden}.tree-canvas,.fan-canvas{cursor:grab;overscroll-behavior:contain;touch-action:none;background:0 0;position:absolute;inset:0;overflow:hidden}.tree-canvas:active,.fan-canvas:active{cursor:grabbing}.tree-svg,.fan-svg{-webkit-user-select:none;user-select:none;width:100%;min-width:0;height:100%;min-height:0;display:block}.canvas-local-controls{z-index:5;border:1px solid var(--line);min-height:40px;color:var(--muted);white-space:nowrap;background:#fff;border-radius:14px;align-items:center;gap:4px;padding:4px 7px;font-size:11px;display:flex;position:absolute;top:16px;right:24px;box-shadow:0 4px 16px #172a5c0d}.canvas-local-controls label{color:var(--muted);padding-inline:4px}.canvas-local-controls select,.canvas-local-controls button{min-height:30px;color:var(--ink);cursor:pointer;font:700 11px/1 var(--sans), system-ui, sans-serif;background:0 0;border:1px solid #0000;border-radius:8px}.canvas-local-controls select{padding:0 5px}.canvas-local-controls button{min-width:30px;padding:0 8px;font-size:17px}.canvas-local-controls button:hover,.canvas-local-controls select:hover{border-color:var(--line);background:#f1f5ff}.canvas-local-controls span{min-width:39px;color:var(--ink);font-variant-numeric:tabular-nums;text-align:center}.canvas-local-controls .canvas-fit-button{color:var(--accent);padding-inline:9px;font-size:11px}.canvas-local-controls button:focus-visible,.canvas-local-controls select:focus-visible,.canvas-expand-control:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tree-link{fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;opacity:.62;vector-effect:non-scaling-stroke}.tree-node,.fan-person{cursor:pointer;outline:none}.tree-node-card{fill:#fff;stroke:#c5d2e4;stroke-width:1.25px}.tree-node:hover .tree-node-card,.tree-node:focus-visible .tree-node-card{stroke:var(--accent);stroke-width:1.8px}.tree-node.is-selected .tree-node-card{fill:var(--accent);stroke:var(--accent);stroke-width:1.5px}.tree-node-monogram{stroke:none}.tree-node-monogram--maternal{fill:#c9f1e5}.tree-node-monogram--paternal{fill:#d7e7ff}.tree-node-monogram-text{fill:var(--mint);font-family:var(--sans), system-ui, sans-serif;pointer-events:none;font-weight:800}.tree-node-monogram--paternal+.tree-node-monogram-text{fill:var(--accent)}.tree-node.is-selected .tree-node-monogram{fill:#d9e5ff}.tree-node.is-selected .tree-node-monogram-text{fill:var(--accent)}.tree-node-name{fill:var(--ink);font-family:var(--sans), system-ui, sans-serif;letter-spacing:-.02em;pointer-events:none;font-weight:800}.tree-node-meta{fill:#425577;font-family:var(--sans), system-ui, sans-serif;pointer-events:none;font-weight:600}.tree-node.is-selected .tree-node-name,.tree-node.is-selected .tree-node-meta,.tree-node.is-selected .tree-node-sex{fill:#fff}.tree-node-sex{pointer-events:none;font-family:Arial,sans-serif;font-weight:700}.sex-female{fill:var(--mint);color:var(--mint)}.sex-male{fill:var(--accent);color:var(--accent)}.tree-slot--empty rect{fill:#fff8;stroke:#b9c8dc;stroke-dasharray:4 5;stroke-width:1px}.canvas-expand-control{cursor:pointer;outline:none}.canvas-expand-control circle{fill:#fff;stroke:#a9bad3;stroke-width:1.2px;vector-effect:non-scaling-stroke}.canvas-expand-control text{fill:var(--accent);font-family:var(--sans), system-ui, sans-serif;pointer-events:none;font-weight:800}.canvas-expand-control:hover circle,.canvas-expand-control:focus-visible circle{fill:#eef3ff;stroke:var(--accent)}.fan-sector{stroke:var(--paper);stroke-width:1.25px;vector-effect:non-scaling-stroke}.fan-sector--maternal{fill:#c8f0e4}.fan-sector--paternal,.fan-sector--root{fill:#d6e6ff}.fan-sector--empty{fill:#fff7;stroke:#c5d2e4;stroke-dasharray:3 4}.fan-person:hover .fan-sector,.fan-person:focus-visible .fan-sector{stroke:var(--accent);stroke-width:1.8px}.fan-sector--selected{stroke:var(--accent);stroke-width:1.8px;fill:var(--accent)!important}.fan-sector-name,.fan-sector-date{pointer-events:none;fill:var(--ink);font-family:var(--sans), system-ui, sans-serif;font-variant-numeric:tabular-nums}.fan-sector-name{letter-spacing:-.02em;font-weight:800}.fan-sector-date{fill:#425577;font-weight:650}.fan-person.is-selected .fan-sector-name,.fan-person.is-selected .fan-sector-date,.fan-person.is-selected .fan-sector-sex{fill:#fff}.fan-sector-sex{pointer-events:none;font-family:Arial,sans-serif;font-weight:700}.tree-empty,.fan-empty,.timeline-empty{height:100%;min-height:300px;color:var(--ink);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:56px 24px;display:flex}.tree-empty strong,.fan-empty strong,.timeline-empty strong{font-size:1.15rem;font-weight:750}.tree-empty p,.fan-empty p,.timeline-empty p{max-width:330px;color:var(--muted);margin:8px 0 0;font-size:.75rem;line-height:1.55}.chart-heading{justify-content:space-between;align-items:flex-end;gap:24px;padding:22px 24px 16px;display:flex}.chart-heading p{color:var(--muted);margin:8px 0 0;font-size:.73rem}.chart-controls{color:var(--muted);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;font-size:.69rem;display:flex}.chart-controls select,.chart-control{border:1px solid var(--line);min-height:30px;color:var(--ink);font:600 .69rem/1 var(--sans), system-ui, sans-serif;background:#fff8;border-radius:8px}.chart-controls select{padding:0 24px 0 8px}.chart-control{cursor:pointer;min-width:30px;padding:0 8px}.chart-control-wide{padding-inline:11px}.chart-zoom{text-align:center;min-width:39px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:.65rem}.chart-canvas{background:0 0;border:0}.chart-note{max-width:900px;color:var(--muted);margin:10px 24px 20px;font-size:.69rem;line-height:1.55}.timeline-canvas{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;max-height:min(68svh,680px);position:relative;overflow:auto}.timeline-table{min-width:980px;position:relative}.timeline-header{z-index:5;background:var(--paper);border-bottom:1px solid var(--line);min-height:72px;display:grid;position:sticky;top:0}.timeline-index-header{z-index:7;color:var(--muted);background:var(--paper);border-right:1px solid var(--line);letter-spacing:.08em;text-transform:uppercase;align-items:flex-end;padding:0 20px 15px;font-size:.68rem;font-weight:700;display:flex;position:sticky;left:0}.timeline-axis-svg,.timeline-row-svg{min-width:0;height:100%;color:var(--ink);font-family:var(--sans), system-ui, sans-serif;display:block}.timeline-axis-svg{background:var(--paper)}.timeline-row{align-items:stretch;display:grid}.timeline-index-cell{z-index:2;background:var(--paper);border-right:1px solid var(--line);border-bottom:1px solid #dbe3ef99;grid-template-rows:1fr 1fr;grid-template-columns:24px minmax(0,1fr);align-content:center;min-height:62px;padding:10px 14px 9px 20px;display:grid;position:sticky;left:0;overflow:hidden}.timeline-row-svg{background:#fff5;border-bottom:1px solid #dbe3ef99}.timeline-row:hover .timeline-index-cell,.timeline-row:hover .timeline-row-svg{background:#fff9}.timeline-row.is-selected .timeline-index-cell,.timeline-row.is-selected .timeline-row-svg{background:#dce8ff99}.timeline-row:focus-visible .timeline-index-cell{outline:2px solid var(--accent);outline-offset:-2px}.timeline-axis>line:first-child{stroke:var(--ink);stroke-width:1px}.timeline-axis text{fill:var(--muted);font:600 10px/1 var(--sans), system-ui, sans-serif;font-variant-numeric:tabular-nums}.timeline-tick{stroke:#dbe3ef;stroke-width:1px}.timeline-row-highlight{fill:#0000;stroke:#0000;stroke-width:1px}.timeline-person{min-width:0;color:var(--ink);font:600 12px/1.25 var(--sans), system-ui, sans-serif;text-overflow:ellipsis;white-space:nowrap;grid-area:1/2;overflow:hidden}.timeline-relation{min-width:0;color:var(--muted);font:500 9px/1.25 var(--sans), system-ui, sans-serif;text-overflow:ellipsis;white-space:nowrap;grid-area:2/2;overflow:hidden}.timeline-sex{text-align:left;grid-area:1/1/span 2;align-self:center;font:700 17px/1 Arial,sans-serif}.timeline-row-rule{stroke:#dbe3ef;stroke-width:1px}.timeline-column-line{stroke:#dbe3ef;stroke-width:1px;vector-effect:non-scaling-stroke}.timeline-life{stroke:var(--accent);stroke-linecap:round;stroke-width:5px}.timeline-birth{fill:var(--paper);stroke:var(--mint);stroke-width:2px}.timeline-death{fill:var(--mint);stroke:var(--mint);stroke-width:1px}.timeline-living{fill:var(--paper);stroke:var(--accent);stroke-width:2px}.timeline-unknown,.timeline-no-axis{fill:var(--muted);font:500 9px/1 var(--sans), system-ui, sans-serif}.print-area .atlas-view{height:520px;min-height:360px}.print-area .canvas-stage,.print-area .tree-canvas,.print-area .fan-canvas{height:100%;max-height:none}.print-area .tree-svg,.print-area .fan-svg{width:100%;min-width:0!important}@media (width<=680px){.canvas-local-controls{max-width:calc(100% - 24px);top:12px;right:12px;overflow-x:auto}.tree-svg,.fan-svg{min-width:0}.chart-heading{flex-direction:column;align-items:flex-start;gap:14px;padding:18px 16px 14px}.chart-controls{justify-content:flex-start}.chart-note{margin-inline:16px}}@media print{.canvas-local-controls,.tree-view .chart-controls,.fan-view .chart-controls,.timeline-view .chart-controls{display:none!important}.tree-view .chart-canvas,.fan-view .chart-canvas,.timeline-view .chart-canvas{border:0;overflow:visible}.tree-view .tree-svg,.fan-view .fan-svg{width:100%;min-height:0;max-height:none;min-width:0!important}.timeline-view .timeline-svg{width:100%;min-width:0;height:auto}.timeline-view .timeline-canvas{max-height:none}.timeline-view .timeline-table{min-width:0;width:100%!important}.timeline-view .timeline-header,.timeline-view .timeline-index-header,.timeline-view .timeline-index-cell{position:static}.timeline-view .timeline-axis-svg,.timeline-view .timeline-row-svg{width:100%}}@media (prefers-reduced-motion:reduce){.atlas-view *,.atlas-view :before,.atlas-view :after{scroll-behavior:auto!important;transition-duration:.001ms!important}}
