@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-display:"Fraunces Variable", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--font-body:"Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--text-xs:.75rem;--text-sm:.8125rem;--text-md:.9375rem;--text-lg:1.125rem;--text-xl:1.5rem;--text-2xl:2rem;--bg:#f4efe6;--bg-dot:#d9cfbf;--surface:#fffdf9;--surface-2:#f8f3ea;--surface-3:#efe7da;--overlay:#2b241c52;--ink:#2a241e;--ink-2:#5c5248;--ink-3:#8c8174;--line:#e2d8c9;--line-strong:#cbbda8;--edge:#b4a48d;--edge-highlight:#b5654a;--edge-dim:#b4a48d59;--accent:#b5654a;--accent-ink:#fff;--accent-soft:#f3dfd6;--accent-2:#5f7f63;--accent-2-soft:#dde8dc;--gold:#b08d57;--danger:#b4423a;--danger-soft:#f6dcd8;--male:#5a7d9a;--female:#b0697a;--other:#8a7aa8;--unknown:#9a8f80;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--radius-xl:24px;--shadow-sm:0 1px 2px #3c2d1e0f, 0 1px 3px #3c2d1e14;--shadow-md:0 4px 12px #3c2d1e14, 0 2px 4px #3c2d1e0f;--shadow-lg:0 18px 48px #3c2d1e29, 0 4px 12px #3c2d1e14;--ring:0 0 0 3px #b5654a59;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-fast:.14s;--dur-med:.26s;--dur-slow:.52s;--header-h:60px;--panel-w:420px}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#171512;--bg-dot:#2e2a24;--surface:#221f1b;--surface-2:#1c1a16;--surface-3:#2c2823;--overlay:#00000080;--ink:#f1eadf;--ink-2:#c3b8a9;--ink-3:#8d8376;--line:#36312a;--line-strong:#4a4339;--edge:#6b6052;--edge-highlight:#e08a6b;--edge-dim:#6b605259;--accent:#e08a6b;--accent-ink:#1a1512;--accent-soft:#3a2a23;--accent-2:#8fb592;--accent-2-soft:#26322a;--gold:#d4b07a;--danger:#e57367;--danger-soft:#3b2220;--male:#7fa3c2;--female:#d18c9c;--other:#ab9cc9;--unknown:#a39887;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 14px #00000059;--shadow-lg:0 18px 48px #00000080;--ring:0 0 0 3px #e08a6b66}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#171512;--bg-dot:#2e2a24;--surface:#221f1b;--surface-2:#1c1a16;--surface-3:#2c2823;--overlay:#00000080;--ink:#f1eadf;--ink-2:#c3b8a9;--ink-3:#8d8376;--line:#36312a;--line-strong:#4a4339;--edge:#6b6052;--edge-highlight:#e08a6b;--edge-dim:#6b605259;--accent:#e08a6b;--accent-ink:#1a1512;--accent-soft:#3a2a23;--accent-2:#8fb592;--accent-2-soft:#26322a;--gold:#d4b07a;--danger:#e57367;--danger-soft:#3b2220;--male:#7fa3c2;--female:#d18c9c;--other:#ab9cc9;--unknown:#a39887;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 14px #00000059;--shadow-lg:0 18px 48px #00000080;--ring:0 0 0 3px #e08a6b66}}@media (width<=720px){:root{--header-h:56px;--panel-w:100vw}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:var(--text-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{box-shadow:var(--ring);outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-border-default:1px solid #bbb;--xy-node-border-selected-default:1px solid #555;--xy-handle-background-color-default:#333;--xy-selection-background-color-default:#9696b41a;--xy-selection-border-default:1px dotted #9b9b9bcc;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));min-width:5px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{justify-content:center;align-items:center;width:26px;height:26px;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border:var(--xy-node-border,var(--xy-node-border-default));color:var(--xy-node-color,var(--xy-node-color-default))}.react-flow__node-input.selected,.react-flow__node-input:focus,.react-flow__node-input:focus-visible,.react-flow__node-default.selected,.react-flow__node-default:focus,.react-flow__node-default:focus-visible,.react-flow__node-output.selected,.react-flow__node-output:focus,.react-flow__node-output:focus-visible,.react-flow__node-group.selected,.react-flow__node-group:focus,.react-flow__node-group:focus-visible{border:var(--xy-node-border-selected,var(--xy-node-border-selected-default));outline:none}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.avatar{--avatar-tint:var(--unknown);background:color-mix(in srgb, var(--avatar-tint) 22%, var(--surface));color:color-mix(in srgb, var(--avatar-tint) 80%, var(--ink));-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative;overflow:hidden}.avatar--circle{border-radius:50%}.avatar--rounded{border-radius:22%}.avatar--male{--avatar-tint:var(--male)}.avatar--female{--avatar-tint:var(--female)}.avatar--other{--avatar-tint:var(--other)}.avatar--ring{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px color-mix(in srgb, var(--avatar-tint) 70%, transparent)}.avatar img{object-fit:cover;object-position:center 30%;width:100%;height:100%;display:block}.avatar--deceased img{filter:saturate(.55)sepia(.15)}.avatar__initials{font-family:var(--font-display);letter-spacing:.02em;font-weight:600;line-height:1}.pnode{--tint:var(--unknown);--card-bg:var(--surface);--ring-w:2.5px;--ui-scale:1;width:100%;height:100%;transform:scale(var(--appear,1));transform-origin:50%;position:relative}.pnode--male{--tint:var(--male)}.pnode--female{--tint:var(--female)}.pnode--other{--tint:var(--other)}.pnode.is-deceased{--card-bg:color-mix(in srgb, var(--surface-2) 70%, var(--surface))}.pnode[data-zoom=medium]{--ring-w:3.5px;--ui-scale:1.45}.pnode[data-zoom=compact]{--ring-w:6px;--ui-scale:2.3}.pnode[data-zoom=minimal]{--ring-w:11px;--ui-scale:3.4}.pn-card:after{content:"";z-index:4;border-radius:inherit;background:var(--bg);opacity:0;pointer-events:none;transition:opacity .32s var(--ease-out);position:absolute;inset:0}.pnode.is-dimmed .pn-card:after{opacity:.6}.pnode.is-dimmed:not(:hover) .pn-card{box-shadow:none;border-color:color-mix(in srgb, var(--line) 60%, transparent)}.pnode.has-kids:after{content:"";height:calc(14px + 22px * var(--ui-scale));pointer-events:auto;position:absolute;top:100%;left:32%;right:32%}.pn-card{border-radius:var(--radius-lg);background:linear-gradient(180deg, color-mix(in srgb, var(--tint) 15%, var(--card-bg)) 0%, var(--card-bg) 64px);border:1px solid color-mix(in srgb, var(--tint) 16%, var(--line));box-shadow:var(--shadow-sm);color:var(--ink);cursor:pointer;pointer-events:all;transition:transform .22s var(--ease-out), box-shadow .22s var(--ease-out), border-color .22s ease;outline:none;position:absolute;inset:0;overflow:hidden}@media (hover:hover){.pnode:hover .pn-card{box-shadow:0 0 0 1px color-mix(in srgb, var(--tint) 30%, transparent), var(--shadow-md);transform:translateY(-3px)}}.pnode.is-selected .pn-card{box-shadow:0 0 0 var(--ring-w) var(--accent), var(--shadow-lg);border-color:#0000;transform:translateY(-4px)}.pn-card:focus-visible{box-shadow:0 0 0 var(--ring-w) color-mix(in srgb, var(--accent) 50%, transparent), var(--shadow-md)}.pnode.is-selected .pn-card:focus-visible{box-shadow:0 0 0 var(--ring-w) var(--accent), 0 0 0 calc(var(--ring-w) * 2.2) color-mix(in srgb, var(--accent) 28%, transparent), var(--shadow-lg)}.pnode.is-home .pn-card:before{content:"";z-index:5;border-radius:calc(var(--radius-lg) - 1px);box-shadow:inset 0 0 0 calc(var(--ring-w) * .5 - 1px) var(--gold);opacity:0;pointer-events:none;transition:opacity var(--morph) var(--lod-ease);position:absolute;inset:0}.pnode.is-home[data-lod=minimal] .pn-card:before,.pnode.is-home[data-lod=compact] .pn-card:before{opacity:1}.pnode.is-home[data-lod=minimal] .pn-card,.pnode.is-home[data-lod=compact] .pn-card{border-color:var(--gold)}.pnode[data-lod=minimal] .pn-card{box-shadow:none;transition:transform .22s var(--ease-out);border-color:#0000}.pnode[data-lod=minimal].is-selected .pn-card{box-shadow:0 0 0 var(--ring-w) var(--accent)}.pnode{--lod-ease:cubic-bezier(.33, 1, .68, 1);--lod-k:var(--lod-slow,1);--morph:calc(.48s * var(--lod-k));--fade-in:calc(.24s * var(--lod-k));--fade-out:calc(.12s * var(--lod-k));--in-delay:calc(30ms * var(--lod-k));--stagger:calc(40ms * var(--lod-k));--hold:calc(.26s * var(--lod-k))}.pn-content{--nh-full:18.6px;--nh-medium:22.42px;--life-dy:calc(20px + var(--nh-medium) - var(--nh-full));z-index:1;position:absolute;inset:0}.pn-photo{z-index:2;transform-origin:50%;width:84px;height:84px;transition:transform var(--morph) var(--lod-ease);line-height:0;position:absolute;top:18px;left:calc(50% - 42px);transform:translateY(0)scale(1)}.pnode[data-lod=medium] .pn-photo{transform:translateY(10px)scale(1.19048)}.pnode[data-lod=compact] .pn-photo{transform:translateY(26px)scale(1.52381)}.pnode[data-lod=minimal] .pn-photo{transform:translateY(45px)scale(1.57143)}.pn-photo:before{content:"";box-shadow:0 0 0 3px var(--card-bg), 0 0 0 5px color-mix(in srgb, var(--tint) 62%, transparent);border-radius:50%;position:absolute;inset:0}.pn-photo:after{content:"";background:color-mix(in srgb, var(--tint) 34%, var(--surface));opacity:0;pointer-events:none;transition:opacity calc(.3s * var(--lod-k)) var(--lod-ease);position:absolute;inset:-84px -64px -164px}.pnode[data-lod=minimal] .pn-photo:after{opacity:1}.pn-photo .avatar{z-index:1}.pn-text{z-index:1;text-align:center;flex-direction:column;align-items:center;display:flex;position:absolute;left:12px;right:12px}.pn-text--full{top:115px}.pn-text--medium{top:134px}.pn-text--compact{top:162px}.pn-name,.pn-life,.pn-sub,.pn-badge{--i:0;opacity:0;visibility:hidden;transform-origin:50% 0;transition:transform var(--morph) var(--lod-ease), opacity var(--fade-out) ease-out, visibility 0s linear var(--fade-out)}.pnode[data-lod=full] :is(.pn-text--full>*,.pn-badge),.pnode[data-lod=medium] .pn-text--medium>*,.pnode:is([data-lod=compact],[data-lod=minimal]) .pn-text--compact>*{opacity:1;visibility:visible;transition:transform var(--morph) var(--lod-ease), opacity var(--fade-in) ease-out calc(var(--in-delay) + var(--stagger) * var(--i)), visibility 0s;transform:translateY(0)scale(1)}.pnode[data-lod=medium] .pn-text--full .pn-life,.pnode[data-lod=full] .pn-text--medium .pn-life,.pnode[data-lod=medium] .same-fm .pn-text--full .pn-name,.pnode[data-lod=full] .same-fm .pn-text--medium .pn-name,.pnode[data-lod=compact] .same-mc .pn-text--medium .pn-name,.pnode[data-lod=medium] .same-mc .pn-text--compact .pn-name{opacity:.001;transition:transform var(--morph) var(--lod-ease), opacity var(--fade-out) ease-out var(--hold), visibility 0s linear calc(var(--hold) + var(--fade-out))}.pn-name{--i:1}.pn-life{--i:2}.pn-sub{--i:3}.pn-badge{--i:3.5}.pn-text--full .pn-name{transform:translateY(19px)scale(1.22581)}.pn-text--medium .pn-name{transform:translateY(28px)scale(1.42105)}.pnode[data-lod=full] .pn-text--medium .pn-name{transform:translateY(-19px)scale(.815789)}.pn-text--compact .pn-name{transform:translateY(-28px)scale(.703704)}.pn-text--full .pn-life{transform:translateY(var(--life-dy)) scale(1.2)}.pn-text--medium .pn-life{transform:translateY(calc(30px + var(--nh-medium) * .42)) scale(1.18)}.pnode[data-lod=full] .pn-text--medium .pn-life{transform:translateY(calc(var(--life-dy) * -1)) scale(.833333)}.pn-text--full .pn-sub{transform:translateY(calc(var(--life-dy) + 8px)) scale(1.12)}.pn-badge{transform-origin:100% 0;transform:translateY(0)scale(.55)}.pn-name{max-width:100%;font-family:var(--font-display);letter-spacing:-.005em;color:var(--ink);text-wrap:balance;overflow-wrap:anywhere;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:15.5px;font-weight:600;line-height:1.2;display:-webkit-box;overflow:hidden}.pn-life{color:var(--ink-2);font-variant-numeric:tabular-nums;letter-spacing:.01em;white-space:nowrap;margin-top:4px;font-size:12.5px;line-height:1.3}.is-deceased .pn-life{color:var(--ink-3)}.pn-sub{max-width:100%;color:var(--ink-3);align-items:center;gap:4px;margin-top:5px;font-size:11.5px;line-height:1.3;display:inline-flex}.pn-sub svg{opacity:.85;flex:none}.pn-sub span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pn-text--medium .pn-name{font-size:19px;line-height:1.18}.pn-text--medium .pn-life{margin-top:5px;font-size:15px}.pn-text--compact .pn-name{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:27px;line-height:1.15;display:block}.pn-badge{z-index:3;font-variant-numeric:tabular-nums;letter-spacing:.01em;border-radius:999px;padding:0 7px;font-size:10.5px;font-weight:600;line-height:18px;position:absolute;top:10px;right:10px}.pn-badge--age{background:var(--accent-2-soft);color:var(--accent-2)}.pn-badge--dead{background:color-mix(in srgb, var(--surface-3) 70%, transparent);color:var(--ink-3)}.pnode[data-zoom=minimal] :is(.pn-name,.pn-life,.pn-sub,.pn-badge){transition:none!important}@media (prefers-reduced-motion:reduce){.pn-content *,.pn-content :before,.pn-content :after,.pn-card:before{transition:none!important}}.pn-home{z-index:2;background:var(--gold);width:22px;height:22px;color:var(--surface);box-shadow:0 0 0 2px var(--surface);transform:scale(var(--ui-scale));transform-origin:0 0;transition:transform .24s var(--ease-out);border-radius:50%;place-items:center;display:grid;position:absolute;top:9px;left:9px}.pnode[data-zoom=compact] .pn-home{transform:scale(1.7)}.pnode[data-zoom=minimal] .pn-home{transform:scale(2.6)}.pn-collapse{--pill-shift:0px;z-index:2;border:1px solid var(--line-strong);background:var(--surface);min-width:30px;height:22px;color:var(--ink-2);box-shadow:var(--shadow-sm);font:600 11.5px/1 var(--font-body);font-variant-numeric:tabular-nums;cursor:pointer;opacity:0;pointer-events:none;transform:translateX(-50%) translateY(var(--pill-shift)) scale(var(--ui-scale));transform-origin:50% 0;transition:opacity .18s ease, transform .22s var(--ease-out), color .14s ease, border-color .14s ease, background-color .14s ease;border-radius:999px;justify-content:center;align-items:center;gap:2px;padding:0 8px;display:inline-flex;position:absolute;top:calc(100% + 9px);left:50%}.pnode:hover .pn-collapse,.pnode.is-selected .pn-collapse,.pnode.is-collapsed .pn-collapse{opacity:1;pointer-events:auto}.pnode:has(:focus-visible) .pn-collapse{opacity:1;pointer-events:auto}.pnode.is-collapsed .pn-collapse{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, var(--line));background:color-mix(in srgb, var(--accent-soft) 55%, var(--surface))}.pn-collapse:hover{color:var(--accent);border-color:var(--accent)}.pn-collapse:focus-visible{box-shadow:var(--ring)}.pnode.can-edit:hover .pn-collapse,.pnode.can-edit.is-selected .pn-collapse{--pill-shift:12px}.pnode.is-dimmed:not(:hover) .pn-collapse{opacity:0;pointer-events:none}.pnode.is-dimmed.is-collapsed .pn-collapse{opacity:.6;pointer-events:auto}.pn-add{z-index:3;border:1.5px solid color-mix(in srgb, var(--accent) 50%, var(--line));background:var(--surface);width:26px;height:26px;color:var(--accent);box-shadow:var(--shadow-md);cursor:pointer;opacity:0;pointer-events:none;transform:scale(calc(var(--ui-scale) * .55));transition:opacity .16s ease, transform .22s var(--ease-out), background-color .14s ease, color .14s ease;border-radius:50%;place-items:center;margin:-13px 0 0 -13px;padding:0;display:grid;position:absolute}.pn-add--parent{top:0;left:50%}.pn-add--child{top:100%;left:88%}.pn-add--partner{top:30%;left:100%}.pn-add--sibling{top:30%;left:0}.pnode:hover .pn-add,.pnode.is-selected .pn-add{opacity:1;pointer-events:auto;transform:scale(var(--ui-scale))}.pnode:has(:focus-visible) .pn-add{opacity:1;pointer-events:auto;transform:scale(var(--ui-scale))}.pnode .pn-add:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.pn-add:focus-visible{box-shadow:var(--ring)}.pnode[data-zoom=minimal] .pn-add{display:none}.pn-add:after{content:attr(data-tip);background:var(--ink);color:var(--surface);font:600 11px/1 var(--font-body);letter-spacing:.01em;white-space:nowrap;box-shadow:var(--shadow-md);opacity:0;pointer-events:none;border-radius:8px;padding:6px 9px;transition:opacity .12s;position:absolute}.pn-add:hover:after,.pn-add:focus-visible:after{opacity:1;transition-delay:.22s}.pn-add--parent:after{bottom:calc(100% + 7px);left:50%;transform:translate(-50%)}.pn-add--child:after{top:calc(100% + 7px);left:50%;transform:translate(-50%)}.pn-add--partner:after{top:50%;left:calc(100% + 7px);transform:translateY(-50%)}.pn-add--sibling:after{top:50%;right:calc(100% + 7px);transform:translateY(-50%)}.react-flow__node.is-leaving .pn-card,.react-flow__node.is-leaving button,.react-flow__node.is-leaving .pnode.has-kids:after{pointer-events:none}.react-flow__node:has(>.pnode.is-selected){z-index:8!important}.react-flow__node:hover{z-index:9!important}.react-flow__node:has(:focus-visible){z-index:9!important}.tree-canvas{background:var(--bg);position:absolute;inset:0;overflow:hidden}.tc-root{position:absolute;inset:0}.tree-canvas .react-flow{--xy-background-color:var(--bg);--xy-minimap-background-color:var(--surface);--xy-minimap-mask-background-color:color-mix(in srgb, var(--bg) 62%, transparent);--xy-minimap-mask-stroke-color:color-mix(in srgb, var(--accent) 70%, transparent);--xy-minimap-mask-stroke-width:2;--xy-minimap-node-background-color:var(--unknown);--xy-minimap-node-stroke-color:transparent;background:var(--bg);font-family:var(--font-body);color:var(--ink)}.tree-canvas .react-flow__pane{cursor:grab}.tree-canvas .react-flow__pane.dragging{cursor:grabbing}.tree-canvas .react-flow__node{cursor:default;outline:none}.tree-canvas .react-flow__renderer{-webkit-font-smoothing:antialiased}.tc-dots{z-index:-1;pointer-events:none;--dot-gap:24px;--dot-gap-coarse:96px;--dot-fine:100%;--dot-x:0px;--dot-y:0px;--dot-r:1.15px;background-image:radial-gradient(circle at center, var(--bg-dot) 0 var(--dot-r), transparent calc(var(--dot-r) + .6px)), radial-gradient(circle at center, color-mix(in srgb, var(--bg-dot) var(--dot-fine), transparent) 0 var(--dot-r), transparent calc(var(--dot-r) + .6px));background-size:var(--dot-gap-coarse) var(--dot-gap-coarse), var(--dot-gap) var(--dot-gap);background-position:calc(var(--dot-x) - var(--dot-gap-coarse) / 2) calc(var(--dot-y) - var(--dot-gap-coarse) / 2), calc(var(--dot-x) - var(--dot-gap) / 2) calc(var(--dot-y) - var(--dot-gap) / 2);position:absolute;inset:0}.tc-svg{--sw:1.75px;--mk:1;pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.tc-svg[data-zoom=medium]{--sw:2.25px;--mk:1.25}.tc-svg[data-zoom=compact]{--sw:3.25px;--mk:1.75}.tc-svg[data-zoom=minimal]{--sw:6px;--mk:2.3}.tc-base{transition:opacity .32s var(--ease-out)}.tc-svg.has-lineage .tc-base{opacity:.5}.tc-line,.tc-link,.tc-hl{fill:none;stroke-linecap:round;stroke-linejoin:round}.tc-line,.tc-link{stroke:var(--edge);stroke-width:var(--sw);transition:stroke-width .24s}.tc-line--dashed{stroke-dasharray:calc(var(--sw) * 2.8) calc(var(--sw) * 2.8)}.tc-link--dashed{stroke-dasharray:calc(var(--sw) * 1.1) calc(var(--sw) * 2.9)}.tc-hl--hover{stroke:color-mix(in srgb, var(--edge-highlight) 55%, var(--edge));stroke-width:calc(var(--sw) * 1.3)}.tc-hl--lineage{stroke:var(--edge-highlight);stroke-width:calc(var(--sw) * 1.6)}.tc-hl.tc-line--dashed{stroke-dasharray:calc(var(--sw) * 3.2) calc(var(--sw) * 2.6)}.tc-hl.tc-link--dashed{stroke-dasharray:calc(var(--sw) * 1.1) calc(var(--sw) * 3.2)}.tc-union{pointer-events:all;cursor:default}.tc-union__inner{transform:scale(var(--mk));transition:transform .2s var(--ease-out)}.tc-union.is-hover .tc-union__inner{transform:scale(calc(var(--mk) * 1.22))}.tc-union__hit{fill:#0000;stroke:none}.tc-union__bg{fill:var(--surface);stroke:var(--line-strong);stroke-width:1px;transition:stroke .26s,stroke-width .26s,fill .26s}.tc-ring{fill:none;stroke:var(--gold);stroke-width:1.6px;transition:stroke .26s}.tc-gem,.tc-dot{fill:var(--gold);stroke:none;transition:fill .26s}.tc-union.is-muted .tc-ring{stroke:var(--ink-3)}.tc-union.is-muted .tc-union__bg{fill:var(--surface-2);stroke-dasharray:2 2.5}.tc-union.is-related .tc-union__bg{stroke:color-mix(in srgb, var(--edge-highlight) 55%, var(--edge));stroke-width:1.5px}.tc-union.is-hl .tc-union__bg{stroke:var(--edge-highlight);stroke-width:2px;fill:color-mix(in srgb, var(--accent-soft) 50%, var(--surface))}.tc-union.is-hover .tc-union__bg{stroke:var(--gold);stroke-width:1.75px}.tc-svg.has-lineage .tc-union:not(.is-hl){opacity:.55;transition:opacity .32s var(--ease-out)}.tc-tooltip{z-index:6;background:var(--ink);color:var(--surface);box-shadow:var(--shadow-lg);pointer-events:none;white-space:nowrap;text-align:center;animation:tc-tooltip-in .16s var(--ease-out) both;border-radius:10px;padding:8px 11px 9px;position:absolute;transform:translate(-50%,-100%)}.tc-tooltip:after{content:"";background:inherit;border-radius:2px;width:10px;height:10px;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)rotate(45deg)}.tc-tooltip__names{font-family:var(--font-display);font-size:var(--text-md);font-weight:600;line-height:1.25}.tc-tooltip__detail{font-size:var(--text-xs);color:color-mix(in srgb, var(--surface) 72%, transparent);margin-top:2px;line-height:1.3}@keyframes tc-tooltip-in{0%{opacity:0;transform:translate(-50%,calc(4px - 100%))}}.tree-canvas .tc-minimap{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);width:200px;box-shadow:var(--shadow-md);margin:16px;overflow:hidden}.tree-canvas .tc-minimap svg{border-radius:inherit;display:block}.tc-mm-node{fill:var(--unknown)}.tc-mm--male{fill:color-mix(in srgb, var(--male) 75%, var(--surface))}.tc-mm--female{fill:color-mix(in srgb, var(--female) 75%, var(--surface))}.tc-mm--other{fill:color-mix(in srgb, var(--other) 75%, var(--surface))}.tc-mm--unknown{fill:color-mix(in srgb, var(--unknown) 75%, var(--surface))}.tc-mm-node.is-transient{opacity:.4}@media (width<=720px){.tree-canvas .tc-minimap{display:none}}.user-avatar{--tint:var(--accent);background:color-mix(in srgb, var(--tint) 20%, var(--surface));color:color-mix(in srgb, var(--tint) 78%, var(--ink));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--tint) 30%, transparent);font-family:var(--font-display);letter-spacing:.02em;-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:650;line-height:1;display:inline-flex}.account-btn.icon-btn{--size:40px;border-radius:50%;padding:0}.account-btn .user-avatar{transition:box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out)}.account-btn:hover .user-avatar,.account-btn[aria-expanded=true] .user-avatar{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px color-mix(in srgb, var(--tint) 55%, transparent)}.account-btn.icon-btn:hover:not(:disabled),.account-btn.icon-btn.is-active{background:0 0}.role-badge{--role:var(--accent-2);background:color-mix(in srgb, var(--role) 15%, var(--surface));height:22px;color:color-mix(in srgb, var(--role) 80%, var(--ink));letter-spacing:.01em;white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:0 8px 0 7px;font-size:11.5px;font-weight:650;display:inline-flex}.role-badge--editor{--role:var(--accent)}.role-badge--admin{--role:var(--gold)}.account-menu__head{align-items:center;gap:12px;padding:8px 8px 10px;display:flex}.account-menu__who{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.account-menu__name{font-family:var(--font-display);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:1.0625rem;font-weight:600;display:block;overflow:hidden}.account-menu__meta{font-size:var(--text-xs);color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;margin-top:3px;display:flex;overflow:hidden}.role-option{flex-direction:column;line-height:1.3;display:flex}.role-option small{font-size:var(--text-xs);color:var(--ink-3)}.newpw__input{font-variant-ligatures:none;letter-spacing:.01em}.input-wrap.has-trailing .newpw__input{padding-right:80px}.newpw__tools{align-items:center;gap:2px;display:flex}.password-form__reveal.is-copied{color:var(--accent-2)}.password-form__reveal:disabled{opacity:.35;cursor:default}.newpw__below{justify-content:space-between;align-items:flex-start;gap:10px;margin-top:-2px;display:flex}.newpw__hint{flex:1;min-width:0;padding-top:7px}.newpw__gen.btn--sm{--btn-h:30px;color:var(--accent);flex:none;margin-right:-6px;padding:0 10px}.newpw__gen.btn--sm:hover:not(:disabled){color:color-mix(in srgb, var(--accent) 80%, var(--ink))}.pw-hint{align-items:center;gap:4px;display:inline-flex}.pw-hint--ok{color:var(--accent-2);font-weight:550}.pw-hint--warn{color:color-mix(in srgb, var(--gold) 75%, var(--ink));font-weight:500}.account-form{flex-direction:column;gap:16px;display:flex}.account-form__note{color:var(--ink-3);font-size:var(--text-sm);margin:0;line-height:1.5}.account-form__error{background:var(--danger-soft);color:var(--danger);font-size:var(--text-sm);border-radius:12px;margin:0;padding:10px 12px;font-weight:500}.confirm-word{background:var(--danger-soft);color:var(--danger);letter-spacing:.06em;border-radius:6px;padding:0 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;font-weight:700;display:inline-block}.reset-input .input{letter-spacing:.12em;text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.reset-input .input::placeholder{text-transform:none;letter-spacing:.02em;font-family:var(--font-body)}.reset-input .input.is-match{border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--danger) 25%, transparent)}.reset-facts{grid-template-columns:repeat(2,1fr);gap:8px;margin:0;display:grid}.reset-fact{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;flex-direction:column;padding:10px 12px;display:flex}.reset-fact strong{font-family:var(--font-display);color:var(--ink);font-size:1.5rem;font-weight:600;line-height:1.1}.reset-fact span{font-size:var(--text-xs);color:var(--ink-3)}.access{flex-direction:column;gap:14px;display:flex}.access__toolbar{justify-content:space-between;align-items:center;gap:12px;min-height:40px;display:flex}.access__count{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:11.5px;font-weight:650}.access__list{border:1px solid var(--line);background:var(--surface);border-radius:16px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}.access-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;min-height:64px;padding:10px 10px 10px 14px;display:flex}.access-row:last-child{border-bottom:0}.access-row.is-me{background:color-mix(in srgb, var(--accent-soft) 35%, var(--surface))}.access-row__who{flex-direction:column;flex:1;min-width:0;line-height:1.3;display:flex}.access-row__name{min-width:0;color:var(--ink);align-items:center;gap:8px;font-weight:600;display:flex}.access-row__name-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.access-row__you{background:var(--accent-soft);color:var(--accent);letter-spacing:.06em;text-transform:uppercase;border-radius:999px;flex:none;padding:1px 7px;font-size:10.5px;font-weight:700}.access-row__meta{font-size:var(--text-xs);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=520px){.access-row{grid-template-columns:40px minmax(0,1fr) auto;grid-template-areas:"avatar who more""avatar role more";gap:4px 12px;padding:12px 8px 10px 12px;display:grid}.access-row>.user-avatar{grid-area:avatar;align-self:start;margin-top:2px}.access-row__who{grid-area:who}.access-row>.role-select{grid-area:role;justify-self:start;margin-left:-5px}.access-row>.icon-btn{grid-area:more}}.role-select{height:34px;color:var(--ink-3);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:2px;padding:0 6px 0 4px;display:inline-flex}.role-select:hover,.role-select[aria-expanded=true]{background:var(--surface-2);border-color:var(--line)}.role-select:disabled{cursor:progress;opacity:.6}.access-legend{grid-template-columns:repeat(3,1fr);gap:8px;margin:2px 0 0;display:grid}.access-legend__item{background:var(--surface-2);border:1px solid color-mix(in srgb, var(--line) 70%, transparent);border-radius:12px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.access-legend__item .role-badge{align-self:flex-start}.access-legend__item p{font-size:var(--text-xs);color:var(--ink-3);margin:0;line-height:1.4}@media (width<=640px){.access-legend{grid-template-columns:1fr}.access-legend__item{flex-direction:row;align-items:center;gap:10px}.access-legend__item .role-badge{flex:none;min-width:78px}}.access-add{background:var(--surface-2);border:1px solid var(--line);border-radius:16px;flex-direction:column;gap:14px;padding:16px;display:flex;overflow:hidden}.access-add__title{font-family:var(--font-display);align-items:center;gap:8px;margin:0;font-size:1.125rem;font-weight:600;display:flex}.access-add__grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=520px){.access-add__grid{grid-template-columns:1fr}}.access-add .input{background:var(--surface)}.access-add__actions{justify-content:flex-end;gap:8px;display:flex}.input-prefix{color:var(--ink-3);font-weight:600}.access-created{background:color-mix(in srgb, var(--accent-2-soft) 70%, var(--surface));border:1px solid color-mix(in srgb, var(--accent-2) 30%, transparent);border-radius:16px;gap:14px;padding:16px;display:flex;overflow:hidden}.access-created__icon{background:color-mix(in srgb, var(--accent-2) 18%, var(--surface));width:38px;height:38px;color:var(--accent-2);border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex}.access-created__body{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.access-created h4{font-family:var(--font-display);color:var(--ink);margin:0;font-size:1.0625rem;font-weight:600}.access-created p{font-size:var(--text-sm);color:var(--ink-2);margin:0;line-height:1.5}.creds{background:var(--surface);border:1px solid var(--line);border-radius:12px;grid-template-columns:auto 1fr;gap:6px 14px;margin:2px 0;padding:10px 12px;display:grid}.creds dt{font-size:var(--text-xs);color:var(--ink-3);align-self:center;font-weight:600}.creds dd{min-width:0;margin:0}.creds code{color:var(--ink);overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875rem}.access-created__actions{flex-wrap:wrap;gap:8px;display:flex}.access-state{color:var(--ink-3);text-align:center;flex-direction:column;align-items:center;gap:10px;padding:28px 12px;display:flex}.app-header{top:calc(var(--gutter) + var(--safe-top));left:calc(var(--gutter) + var(--safe-left));right:calc(var(--gutter) + var(--safe-right));z-index:var(--z-header);height:var(--header-h);border-radius:var(--radius-lg);transition:box-shadow var(--dur-med) var(--ease-out);align-items:center;gap:12px;padding:0 10px 0 12px;display:flex;position:absolute}.app-header:after{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);opacity:0;height:2px;transition:opacity var(--dur-med) var(--ease-out), transform var(--dur-slow) var(--ease-out);border-radius:2px;position:absolute;bottom:-1px;left:18px;right:18px;transform:scaleX(.4)}.app-header.is-editing:after{opacity:.9;transform:scaleX(1)}.app-header__brand{flex:0 auto;align-items:center;gap:11px;min-width:0;display:flex}.app-header__brand .logo{box-shadow:0 2px 6px -2px color-mix(in srgb, var(--accent) 60%, transparent);border-radius:10px;flex:none}.tree-title{flex-direction:column;justify-content:center;min-width:0;line-height:1.15;display:flex}.tree-title__text{max-width:100%;font-family:var(--font-display);letter-spacing:-.012em;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;text-align:left;font-variation-settings:"SOFT" 50, "opsz" 32;background:0 0;border:0;align-items:center;gap:6px;margin:0;padding:0;font-size:1.1875rem;font-weight:600;display:inline-flex;overflow:hidden}.tree-title__sub{font-size:var(--text-xs);color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;text-align:left;background:0 0;border:0;margin:1px 0 0;padding:0;overflow:hidden}.tree-title__sub--empty{font-style:italic}.tree-title .is-editable{cursor:text;text-underline-offset:4px;transition:text-decoration-color var(--dur-fast);border-radius:6px;-webkit-text-decoration:underline dashed #0000;text-decoration:underline dashed #0000}.tree-title .is-editable:hover{-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong)}.tree-title__pencil{color:var(--ink-3);opacity:0;transition:opacity var(--dur-fast);flex:none}.tree-title__text:hover .tree-title__pencil,.tree-title__text:focus-visible .tree-title__pencil{opacity:1}.tree-title__input{border:1px solid var(--accent);background:var(--surface);width:min(320px,40vw);height:34px;box-shadow:var(--ring);font-family:var(--font-display);color:var(--ink);border-radius:8px;outline:none;margin-left:-6px;padding:0 6px;font-size:1.1875rem;font-weight:600}.tree-title__input--sub{font-family:var(--font-body);font-size:var(--text-sm);font-weight:450}.search-trigger{border:1px solid var(--line);background:color-mix(in srgb, var(--surface-2) 85%, transparent);max-width:400px;height:40px;color:var(--ink-3);font-size:var(--text-md);cursor:pointer;text-align:left;transition:border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);border-radius:12px;flex:320px;align-items:center;gap:10px;margin:0 auto;padding:0 8px 0 14px;display:flex}.search-trigger:hover{border-color:var(--line-strong);background:var(--surface);color:var(--ink-2);box-shadow:var(--shadow-sm)}.search-trigger__text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.search-trigger__kbd{flex:none;gap:3px;display:flex}.search-trigger--icon{width:40px;color:var(--ink-2);background:0 0;border-color:#0000;flex:none;justify-content:center;margin:0 0 0 auto;padding:0}.app-header__controls{flex:none;align-items:center;gap:4px;display:flex}.app-header__brand+.app-header__controls{margin-left:auto}.app-header__divider{background:var(--line);width:1px;height:22px;margin:0 6px}.app-header .segmented{margin:0 4px}.edit-toggle{min-width:78px;margin-left:2px}.edit-toggle__icon{display:inline-flex}@media (width<=720px){.app-header{gap:6px;padding:0 6px 0 10px}.app-header__brand{flex:auto;gap:9px}.app-header__brand .logo{width:30px;height:30px}.tree-title__text{font-size:1.0625rem}.search-trigger--icon{margin:0}}.person-panel{top:calc(var(--chrome-top) + var(--gutter));right:calc(var(--gutter) + var(--safe-right));bottom:calc(var(--gutter) + var(--safe-bottom));z-index:var(--z-panel);width:calc(var(--panel-w) - var(--gutter));border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:absolute;overflow:hidden}.person-panel__close{z-index:3;position:absolute;top:10px;right:10px}.person-panel__bar{z-index:2;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--surface) 86%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.4);align-items:center;gap:10px;height:58px;padding:0 56px 0 18px;display:flex;position:absolute;top:0;left:0;right:0}.person-panel__bar--sheet{border-radius:var(--radius-xl) var(--radius-xl) 0 0;height:66px;padding:12px 56px 0 16px}.person-panel__bar-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--font-display);color:var(--ink);font-size:1.0625rem;font-weight:600;overflow:hidden}.person-panel__bar-years{font-size:var(--text-sm);color:var(--ink-3);font-variant-numeric:tabular-nums;flex:none}.icon-btn--glass{background:color-mix(in srgb, var(--surface) 72%, transparent);-webkit-backdrop-filter:blur(10px);color:var(--ink-2)}.icon-btn--glass:hover:not(:disabled){background:var(--surface)}.person-panel__scroll{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex:1;min-height:0;overflow-y:auto}.person-panel__content{min-height:100%}.person-sheet{z-index:var(--z-sheet);border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:var(--surface);border:1px solid var(--line);box-shadow:0 -10px 40px #1e140a2e, var(--shadow-lg);will-change:transform;border-bottom:0;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.person-sheet__grab{z-index:4;cursor:grab;touch-action:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0;outline:none;justify-content:center;height:30px;padding-top:9px;display:flex;position:absolute;top:0;left:0;right:0}.person-sheet__grab:active{cursor:grabbing}.person-sheet__handle{background:var(--line-strong);border-radius:3px;width:40px;height:5px}.person-sheet__grab:focus-visible .person-sheet__handle{background:var(--accent)}.person-sheet__close{z-index:5;position:absolute;top:10px;right:10px}.person-sheet__scroll{overscroll-behavior:contain;touch-action:pan-y;border-radius:inherit;flex:1;min-height:0;overflow-y:auto}.pd{padding-bottom:8px}.pd-hero{--hero-tint:var(--unknown);background:linear-gradient(180deg, color-mix(in srgb, var(--hero-tint) 16%, var(--surface)) 0%, var(--surface) 100%);padding:36px 24px 18px;position:relative;overflow:hidden}.pd-hero--male{--hero-tint:var(--male)}.pd-hero--female{--hero-tint:var(--female)}.pd-hero--other{--hero-tint:var(--other)}.pd-hero__backdrop{filter:blur(36px)saturate(1.3);opacity:.38;pointer-events:none;background-position:50% 30%;background-size:cover;position:absolute;inset:-40px;transform:scale(1.1);-webkit-mask-image:linear-gradient(#000 0%,#000000a6 50%,#0000 92%);mask-image:linear-gradient(#000 0%,#000000a6 50%,#0000 92%)}.pd--deceased .pd-hero__backdrop{filter:blur(36px)saturate(.6)sepia(.2)}.pd-hero__inner{text-align:center;flex-direction:column;align-items:center;gap:16px;display:flex;position:relative}.pd-photo{flex:none;position:relative}.pd-photo__button{cursor:zoom-in;background:0 0;border:0;border-radius:32px;width:100%;height:100%;padding:0;display:block}.pd-photo__img{object-fit:cover;object-position:center 30%;width:100%;height:100%;box-shadow:0 0 0 4px var(--surface), 0 14px 30px -10px #28190a73;display:block}.pd--deceased .pd-photo__img{filter:saturate(.55)sepia(.15)}.pd-photo>.avatar,.pd-photo__add .avatar{box-shadow:0 0 0 4px var(--surface), 0 12px 26px -12px #28190a59;font-size:2.6rem!important}.pd-photo__add{cursor:pointer;position:relative}.pd-photo__badge{background:var(--accent);width:32px;height:32px;color:var(--accent-ink);box-shadow:0 0 0 3px var(--surface);transition:transform var(--dur-fast) var(--ease-out);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;bottom:-4px;right:-4px}.pd-photo__add:hover .pd-photo__badge{transform:scale(1.1)}.pd-hero__text{flex-direction:column;align-items:center;gap:4px;min-width:0;max-width:100%;display:flex}.pd-name{font-family:var(--font-display);letter-spacing:-.018em;color:var(--ink);text-wrap:balance;font-variation-settings:"SOFT" 60, "opsz" 72;margin:0;font-size:1.75rem;font-weight:600;line-height:1.12}.pd-aka{font-family:var(--font-display);color:var(--ink-2);margin:0;font-size:1rem;font-style:italic}.pd-status{background:color-mix(in srgb, var(--surface) 70%, transparent);border:1px solid color-mix(in srgb, var(--line) 80%, transparent);font-size:var(--text-sm);color:var(--ink-2);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:8px;margin:6px 0 0;padding:4px 12px 4px 10px;font-weight:550;display:inline-flex}.pd-status__dot{border-radius:50%;flex:none;width:8px;height:8px}.pd-status.is-living .pd-status__dot{background:var(--accent-2);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent-2) 22%, transparent)}.pd-status.is-deceased .pd-status__dot{background:var(--ink-3)}.pd-badge{letter-spacing:.04em;text-transform:uppercase;border-radius:999px;align-items:center;gap:5px;margin-bottom:4px;padding:3px 9px;font-size:11px;font-weight:650;display:inline-flex}.pd-badge--home{background:color-mix(in srgb, var(--gold) 18%, var(--surface));color:color-mix(in srgb, var(--gold) 75%, var(--ink));border:1px solid color-mix(in srgb, var(--gold) 35%, transparent)}.pd-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:18px;display:flex;position:relative}.pd-actions__spacer{width:4px}.pd-section{border-top:1px solid var(--line);padding:16px 24px}.pd-section__head{justify-content:space-between;align-items:center;min-height:28px;margin-bottom:8px;display:flex}.pd-section__title{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:8px;margin:0 0 8px;font-size:11.5px;font-weight:650;display:flex}.pd-section__head .pd-section__title{margin:0}.pd-section__count{background:var(--surface-3);letter-spacing:0;min-width:20px;height:18px;color:var(--ink-2);border-radius:999px;justify-content:center;align-items:center;padding:0 6px;font-size:11px;display:inline-flex}.pd-section__add{margin-right:-8px;color:var(--accent)!important}.pd-facts{gap:12px;margin:0;display:grid}.pd-fact{grid-template-rows:auto auto;grid-template-columns:34px 1fr;align-items:center;column-gap:12px;display:grid}.pd-fact__icon{background:var(--surface-2);border:1px solid var(--line);width:34px;height:34px;color:var(--ink-2);border-radius:11px;grid-row:span 2;justify-content:center;align-items:center;display:flex}.pd-fact--born .pd-fact__icon{color:var(--accent);background:var(--accent-soft);border-color:#0000}.pd-fact--died .pd-fact__icon{color:var(--ink-2)}.pd-fact--job .pd-fact__icon{color:var(--accent-2);background:var(--accent-2-soft);border-color:#0000}.pd-fact__label{font-size:var(--text-xs);color:var(--ink-3);font-weight:600;line-height:1.3}.pd-fact__value{font-size:var(--text-md);color:var(--ink);flex-wrap:wrap;column-gap:6px;margin:0;font-weight:550;line-height:1.35;display:flex}.pd-fact__sub{color:var(--ink-2);font-weight:450}.pd-fact__sub:before{content:"·";color:var(--ink-3);margin-right:6px}.pd-bio{font-family:var(--font-display);color:var(--ink);font-variation-settings:"SOFT" 100, "opsz" 14;text-wrap:pretty;-webkit-hyphens:auto;hyphens:auto;font-size:1.03rem;line-height:1.68}.pd-bio p{margin:0 0 .8em}.pd-bio p:last-child{margin-bottom:0}.pd-bio p:first-child:first-letter{float:left;color:var(--accent);margin:.08em .06em 0 0;font-size:3.1em;font-weight:600;line-height:.82}.pd-rows{flex-direction:column;gap:2px;margin:0 -10px;display:flex}.pd-row-wrap{border-radius:14px}.pd-row{width:100%;min-height:56px;color:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-fast) var(--ease-out);background:0 0;border:0;border-radius:14px;align-items:center;gap:12px;padding:8px 10px;display:flex}.pd-row:hover{background:var(--surface-2)}.pd-row:active{background:var(--surface-3)}.pd-row__text{flex-direction:column;flex:1;min-width:0;display:flex}.pd-row__name{color:var(--ink);overflow-wrap:anywhere;font-weight:600;line-height:1.3}.pd-row__meta{font-size:var(--text-sm);color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums;overflow:hidden}.pd-row__label{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);border-radius:999px;flex:none;padding:2px 8px;font-size:11.5px;font-weight:550}.pd-row__chev{color:var(--ink-3);opacity:0;transition:opacity var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);flex:none;margin-left:-4px;transform:translate(-4px)}.pd-row:hover .pd-row__chev,.pd-row:focus-visible .pd-row__chev{opacity:1;transform:none}@media (pointer:coarse){.pd-row__chev{opacity:.6;transform:none}}.pd-subgroup+.pd-subgroup{margin-top:8px}.pd-subgroup__title{font-family:var(--font-display);font-style:italic;font-size:var(--text-sm);color:var(--ink-2);padding:2px 10px}.pd-union{margin:-6px 10px 6px 62px}.pd-union.is-editing{margin-left:10px}.pd-union__summary{min-height:30px;font-size:var(--text-sm);color:var(--ink-2);align-items:flex-start;gap:8px;display:flex}.pd-union__status{border:2px solid var(--gold);border-radius:50%;flex:none;width:14px;height:14px;margin-top:3px}.pd-union__status--married{box-shadow:5px 0 0 -2px var(--surface), 5px 0 0 0 var(--gold);width:12px;height:12px}.pd-union__status--divorced,.pd-union__status--separated{border-style:dashed;border-color:var(--ink-3)}.pd-union__status--partners,.pd-union__status--engaged{border-color:var(--accent)}.pd-union__text{flex:1;min-width:0}.pd-union__end{color:var(--ink-3)}.pd-union__edit{opacity:.7;flex:none;margin-top:-6px}.pd-union__edit:hover{opacity:1}.union-editor{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:12px;margin:4px 0 6px;padding:14px;display:flex}.union-editor__grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.union-editor__actions{align-items:center;gap:6px;display:flex}.union-editor__unlink{margin-left:-6px;color:var(--danger)!important}.pd-empty-add{border:1.5px dashed var(--line-strong);width:100%;min-height:48px;color:var(--ink-3);font-size:var(--text-sm);text-align:left;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);background:0 0;border-radius:14px;align-items:center;gap:10px;padding:10px 14px;display:flex}.pd-empty-add:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent-soft) 45%, transparent)}.pd-empty-add:disabled{cursor:default}.pd-footer{border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--ink-3);padding:14px 24px 18px}.pd-footer:empty{display:none}.pd--compact .pd-hero{padding:34px 18px 14px}.pd--compact .pd-hero__inner{text-align:left;flex-direction:row;align-items:center;gap:16px;padding-right:34px}.pd--compact .pd-hero__text{align-items:flex-start}.pd--compact .pd-name{font-size:1.45rem}.pd--compact .pd-status{margin-top:4px}.pd--compact .pd-photo__button{border-radius:24px}.pd--compact .pd-photo>.avatar,.pd--compact .pd-photo__add .avatar{font-size:1.9rem!important}.pd--compact .pd-actions{justify-content:flex-start;margin-top:14px}.pd--compact .pd-section{padding:14px 18px}.pd--compact .pd-footer{padding:12px 18px}.lightbox{z-index:var(--z-lightbox);padding:max(24px, var(--safe-top)) 24px max(24px, var(--safe-bottom));flex-direction:column;justify-content:center;align-items:center;gap:18px;display:flex;position:fixed;inset:0}.lightbox__backdrop{-webkit-backdrop-filter:blur(8px);background:#0a0806db;position:absolute;inset:0}.lightbox__img{object-fit:contain;cursor:zoom-out;width:auto;max-width:min(88vw,900px);height:auto;max-height:calc(100dvh - 160px);display:block;position:relative;box-shadow:0 30px 80px #00000080}.lightbox__caption{text-align:center;color:#ffffffeb;position:relative}.lightbox__name{font-family:var(--font-display);margin:0;font-size:1.4rem;font-weight:600}.lightbox__meta{font-size:var(--text-sm);opacity:.7;margin:2px 0 0}.lightbox__close{top:max(16px, var(--safe-top));right:16px;color:#ffffffeb!important;background:#ffffff1a!important;position:absolute!important}.lightbox__close:hover{background:#fff3!important}.dialog-badge{background:var(--accent-soft);width:42px;height:42px;color:var(--accent);border-radius:13px;justify-content:center;align-items:center;display:flex}.editor{grid-template-columns:148px 1fr;align-items:start;gap:24px;display:grid}.editor__photo{position:sticky;top:0}@media (width<=640px){.editor{grid-template-columns:1fr;gap:18px}.editor__photo{justify-content:center;display:flex;position:static}}.pf{flex-direction:column;gap:16px;display:flex}.pf-grid{grid-template-columns:1fr 1fr;gap:14px 12px;display:grid}.pf-span-2{grid-column:span 2}@media (width<=420px){.pf-grid{grid-template-columns:1fr}.pf-span-2{grid-column:auto}}.pf-fieldset{border:0;min-width:0;margin:0;padding:0}.pf-reveal{overflow:hidden}.pf-legend{letter-spacing:.08em;text-transform:uppercase;width:100%;color:var(--ink-3);align-items:center;gap:10px;margin:0 0 10px;padding:0;font-size:11.5px;font-weight:650;display:flex}.pf-legend:after{content:"";background:var(--line);flex:1;height:1px}.pf-reveal .pf-legend{padding-top:2px}.photo-field{flex-direction:column;align-items:center;gap:10px;display:flex}.photo-drop{background:var(--surface-2);cursor:pointer;isolation:isolate;box-shadow:0 0 0 1px var(--line), 0 10px 24px -14px #28190a66;transition:box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);border:0;border-radius:28px;padding:0;display:block;position:relative;overflow:hidden}.photo-field--compact .photo-drop{border-radius:22px}.photo-drop:hover{transform:translateY(-1px)}.photo-drop.is-over{box-shadow:0 0 0 3px var(--accent), 0 12px 30px -10px color-mix(in srgb, var(--accent) 50%, transparent);transform:scale(1.03)}.photo-drop__img,.photo-drop__ph,.photo-drop__ph .avatar{position:absolute;inset:0;border-radius:0!important;width:100%!important;height:100%!important}.photo-drop__img{object-fit:cover;object-position:center 30%}.photo-drop__ph .avatar{font-size:2.4rem!important}.photo-field--compact .photo-drop__ph .avatar{font-size:1.6rem!important}.photo-drop__overlay{z-index:2;background:color-mix(in srgb, var(--ink) 52%, transparent);color:var(--surface);font-size:var(--text-xs);opacity:0;transition:opacity var(--dur-fast) var(--ease-out);flex-direction:column;justify-content:center;align-items:center;gap:4px;font-weight:600;display:flex;position:absolute;inset:0}.photo-drop:not(.has-photo) .photo-drop__overlay{background:color-mix(in srgb, var(--ink) 38%, transparent)}.photo-drop:hover .photo-drop__overlay,.photo-drop:focus-visible .photo-drop__overlay,.photo-drop.is-over .photo-drop__overlay{opacity:1}.photo-drop:not(.has-photo):after{content:"";z-index:1;border:1.5px dashed color-mix(in srgb, var(--ink-3) 55%, transparent);pointer-events:none;border-radius:22px;position:absolute;inset:6px}.photo-field--compact .photo-drop:not(.has-photo):after{border-radius:17px;inset:5px}.photo-drop__busy{z-index:3;background:color-mix(in srgb, var(--surface) 55%, transparent);color:var(--accent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.photo-field__actions{flex-wrap:wrap;justify-content:center;gap:2px;display:flex}.photo-field__remove:hover{color:var(--danger)!important}.photo-field__hint{text-align:center;width:100%;font-size:var(--text-xs);color:var(--ink-3)}@media (pointer:coarse){.photo-drop__overlay{opacity:0}}.cropper{flex-direction:column;gap:16px;display:flex}.cropper__view{aspect-ratio:1;background:repeating-conic-gradient(var(--surface-3) 0% 25%, var(--surface-2) 0% 50%) 50% / 20px 20px;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:20px;width:100%;position:relative;overflow:hidden}.cropper__view:active{cursor:grabbing}.cropper__img{transform-origin:0 0;pointer-events:none;max-width:none;position:absolute;top:0;left:0}.cropper__frame{border-radius:inherit;pointer-events:none;background:linear-gradient(#ffffff38,#ffffff38) 33.33% 0/1px 100% no-repeat,linear-gradient(#ffffff38,#ffffff38) 66.66% 0/1px 100% no-repeat,linear-gradient(#ffffff38,#ffffff38) 0 33.33%/100% 1px no-repeat,linear-gradient(#ffffff38,#ffffff38) 0 66.66%/100% 1px no-repeat;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #ffffff59}.cropper__loading{color:var(--ink-3);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.cropper__zoom{align-items:center;gap:10px;display:flex}.cropper__zoom-btn{width:32px;height:32px;color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;display:flex}.cropper__zoom-btn:hover{background:var(--surface-3)}.cropper__actions{align-items:center;gap:6px;display:flex}.cropper--fallback p{color:var(--ink-2);margin:0 0 8px}.range{appearance:none;cursor:pointer;background:0 0;flex:1;height:24px;margin:0}.range::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--accent) var(--fill,0%), var(--line-strong) var(--fill,0%));border-radius:4px;height:4px}.range::-moz-range-track{background:linear-gradient(90deg, var(--accent) var(--fill,0%), var(--line-strong) var(--fill,0%));border-radius:4px;height:4px}.range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--surface);width:20px;height:20px;box-shadow:0 0 0 1px var(--line-strong), 0 2px 6px #0003;border:0;border-radius:50%;margin-top:-8px}.range::-moz-range-thumb{background:var(--surface);width:20px;height:20px;box-shadow:0 0 0 1px var(--line-strong), 0 2px 6px #0003;border:0;border-radius:50%}.range:focus-visible{box-shadow:none}.range:focus-visible::-webkit-slider-thumb{box-shadow:var(--ring)}.add-rel .dialog__header{align-items:center}.add-rel__name{color:var(--accent)}.add-rel__kinds{flex:none;padding:10px 24px 4px}.dialog-root--sheet .add-rel__kinds{padding:8px 18px 2px}.add-rel__body{flex-direction:column;gap:18px;display:flex}.add-rel__options{flex-direction:column;gap:14px;display:flex}.add-rel__tabs .segmented{border-color:#0000;border-bottom:1px solid var(--line);background:0 0;border-radius:0;padding:0}.add-rel__tabs .segmented__item{border-radius:0;height:40px}.add-rel__tabs .segmented__pill{background:var(--accent);height:2px;box-shadow:none;border-radius:2px;inset:auto 18% -1px}.add-rel__tabs .segmented__item.is-checked{color:var(--accent)}.add-rel__new{grid-template-columns:84px 1fr;align-items:start;gap:18px;display:grid}@media (width<=480px){.add-rel__new{grid-template-columns:1fr}.add-rel__photo{justify-content:center;display:flex}}.add-rel__union{flex-direction:column;gap:14px;display:flex}.choices{flex-wrap:wrap;gap:6px;display:flex}.choice{border:1px solid var(--line-strong);background:var(--surface);min-height:34px;color:var(--ink-2);font-size:var(--text-sm);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-weight:550;display:inline-flex}.choice:hover{border-color:var(--ink-3);color:var(--ink)}.choice.is-checked{background:var(--accent-soft);border-color:var(--accent);color:color-mix(in srgb, var(--accent) 75%, var(--ink))}@media (pointer:coarse){.choice{min-height:40px}}.choices--card{flex-flow:column}.choices--card .choice{text-align:left;border-radius:14px;gap:12px;width:100%;min-height:52px;padding:8px 14px 8px 12px;display:flex}.choice__radio{border:2px solid var(--line-strong);width:18px;height:18px;transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);border-radius:50%;flex:none}.choice.is-checked .choice__radio{border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--surface), inset 0 0 0 9px var(--accent)}.choice__icon{flex:none;display:flex}.choice__text{flex-direction:column;min-width:0;display:flex}.choice__label{color:var(--ink);font-weight:600}.choice__desc{font-size:var(--text-xs);color:var(--ink-3);font-weight:450}.choice__unknown{border:1.5px dashed var(--line-strong);width:30px;height:30px;color:var(--ink-3);font-family:var(--font-display);border-radius:50%;justify-content:center;align-items:center;font-weight:600;display:flex}.note{background:color-mix(in srgb, var(--gold) 12%, var(--surface));border:1px solid color-mix(in srgb, var(--gold) 28%, transparent);color:var(--ink-2);font-size:var(--text-sm);border-radius:14px;gap:10px;padding:12px 14px;line-height:1.5;display:flex}.note p{margin:0}.note__icon{color:var(--gold);flex:none;margin-top:1px}.picker{flex-direction:column;gap:10px;display:flex}.picker__list{overscroll-behavior:contain;flex-direction:column;gap:2px;max-height:320px;margin:0 -6px;padding:2px 6px;display:flex;overflow-y:auto}.picker__opt{cursor:pointer;min-height:50px;transition:background-color var(--dur-fast) var(--ease-out);border-radius:12px;align-items:center;gap:12px;padding:6px 10px;display:flex}.picker__opt.is-active{background:var(--surface-2)}.picker__opt.is-selected{background:var(--accent-soft)}.picker__opt.is-disabled{cursor:not-allowed;opacity:.5}.picker__text{flex-direction:column;flex:1;min-width:0;display:flex}.picker__name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.picker__name mark,.search-result__name mark{color:var(--accent);background:0 0;font-weight:700}.picker__meta{font-size:var(--text-sm);color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.picker__check{background:var(--accent);width:26px;height:26px;color:var(--accent-ink);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.picker__empty{text-align:center;color:var(--ink-3);margin:0;padding:18px 10px}@media (pointer:coarse){.cropper__zoom-btn{width:40px;height:40px}}.palette-root{z-index:var(--z-dialog);justify-content:center;align-items:flex-start;padding:min(14vh,120px) 20px 20px;display:flex;position:fixed;inset:0}.palette-backdrop{background:var(--overlay);-webkit-backdrop-filter:blur(3px);position:absolute;inset:0}.palette{border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--line);width:min(620px,100%);max-height:min(560px,100dvh - 2*min(14vh,120px));box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:relative;overflow:hidden}.palette__input-row{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;height:62px;padding:0 16px 0 20px;display:flex}.palette__search-icon{color:var(--accent);flex:none}.palette__input{min-width:0;height:100%;color:var(--ink);background:0 0;border:0;outline:none;flex:1;font-size:1.125rem}.palette__input:focus-visible{box-shadow:none}.palette__input::placeholder{color:var(--ink-3)}.palette__clear{background:var(--surface-3);width:28px;height:28px;color:var(--ink-2);cursor:pointer;border:0;border-radius:50%;justify-content:center;align-items:center;display:flex}.palette__cancel{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:8px 2px 8px 6px;font-weight:600}.palette__body{overscroll-behavior:contain;flex:1;min-height:0;padding:8px;overflow-y:auto}.palette__heading{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:6px;padding:8px 12px 6px;font-size:11.5px;font-weight:650;display:flex}.palette__count{letter-spacing:0;margin-left:auto;font-weight:550}.search-result{cursor:pointer;border-radius:14px;align-items:center;gap:14px;min-height:60px;padding:8px 12px;scroll-margin:8px;display:flex}.search-result.is-active{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line)}.search-result__text{flex:1;min-width:0}.search-result__name{font-weight:600;font-size:var(--text-md);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.search-result__aka{font-family:var(--font-display);color:var(--ink-2);font-style:italic;font-weight:450}.search-result__meta{font-size:var(--text-sm);color:var(--ink-3);white-space:nowrap;align-items:center;gap:10px;margin-top:1px;display:flex;overflow:hidden}.search-result__years{font-variant-numeric:tabular-nums}.search-result__place{text-overflow:ellipsis;min-width:0;overflow:hidden}.search-result__place svg{vertical-align:-1px;margin-right:4px}.search-result__enter{color:var(--ink-3);opacity:0;transition:opacity var(--dur-fast);flex:none}.search-result.is-active .search-result__enter{opacity:1}.palette__empty{text-align:center;color:var(--ink-3);padding:36px 20px 40px}.palette__empty p{margin:0}.palette__empty-title{font-family:var(--font-display);color:var(--ink-2);font-size:1.15rem;margin-bottom:4px!important}.palette__footer{border-top:1px solid var(--line);background:var(--surface-2);font-size:var(--text-xs);color:var(--ink-3);flex:none;align-items:center;gap:16px;padding:10px 18px;display:flex}.palette__footer span{align-items:center;gap:4px;display:inline-flex}.palette__footer .kbd{min-width:18px;height:18px;padding:0 3px}.palette__footer-end{margin-left:auto}.palette-root--mobile{padding:0}.palette-root--mobile .palette{width:100%;height:100%;max-height:none;box-shadow:none;padding-top:var(--safe-top);border:0;border-radius:0}.palette-root--mobile .palette__input-row{padding:0 12px 0 16px}.palette-root--mobile .palette__body{padding-bottom:calc(8px + var(--safe-bottom))}@media (pointer:coarse){.palette__clear{width:40px;height:40px}.palette__cancel{min-height:44px}}.screen.screen--signin{isolation:isolate;background:radial-gradient(900px 520px at 50% 46%, color-mix(in srgb, var(--surface) 70%, transparent), transparent 72%), radial-gradient(1400px 700px at 50% -20%, color-mix(in srgb, var(--accent-soft) 75%, transparent), transparent 70%), radial-gradient(1000px 600px at 50% 120%, color-mix(in srgb, var(--accent-2-soft) 60%, transparent), transparent 70%), var(--bg);overflow:hidden auto}.signin-backdrop{z-index:-1;pointer-events:none;opacity:.6;position:fixed;inset:0;-webkit-mask-image:radial-gradient(40% 58%,#0000 42%,#00000073 68%,#000 100%);mask-image:radial-gradient(40% 58%,#0000 42%,#00000073 68%,#000 100%)}:root[data-theme=dark] .signin-backdrop{opacity:.5}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .signin-backdrop{opacity:.5}}.signin-backdrop svg{width:100%;height:100%;display:block}.signin-backdrop__lineage{fill:none;stroke:var(--edge-highlight);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:0 1;opacity:0}@media (prefers-reduced-motion:no-preference){.signin-backdrop__lineage{animation:signin-lineage 8s var(--ease-in-out) infinite}.signin-backdrop__drift{animation:28s ease-in-out infinite alternate signin-drift}}@keyframes signin-lineage{0%{stroke-dasharray:0 1;stroke-dashoffset:0;opacity:0}8%{opacity:.9}55%{stroke-dasharray:1 1;stroke-dashoffset:0;opacity:.9}80%,to{stroke-dasharray:1 1;stroke-dashoffset:-1px;opacity:0}}@keyframes signin-drift{0%{transform:translate(0,0)}to{transform:translate(-18px,-14px)}}.signin-card{background:color-mix(in srgb, var(--surface) 94%, transparent);width:min(410px,100%);box-shadow:0 1px 0 #ffffff80 inset, 0 30px 80px -24px color-mix(in srgb, var(--ink) 34%, transparent), var(--shadow-lg);-webkit-backdrop-filter:blur(10px)saturate(1.3);gap:20px;padding:34px 32px 26px;position:relative}.signin-card:before{content:"";background:linear-gradient(90deg, transparent, var(--accent), var(--gold), var(--accent-2), transparent);opacity:.75;border-radius:0 0 3px 3px;height:3px;position:absolute;top:-1px;left:28px;right:28px}.signin-card__logo{filter:drop-shadow(0 12px 22px color-mix(in srgb, var(--accent) 38%, transparent));margin-bottom:-2px;display:flex}.signin-card__logo .logo{border-radius:18px}.signin-card__title{font-variation-settings:"SOFT" 80, "WONK" 1, "opsz" 96;font-size:2.375rem}.signin-card__lede{text-wrap:balance;max-width:32ch}.signin-card__help{border-top:1px solid var(--line);width:100%;font-size:var(--text-sm);color:var(--ink-3);text-wrap:balance;margin:-4px 0 0;padding-top:16px;line-height:1.5}.signin-form{text-align:left;flex-direction:column;width:100%;display:flex}.signin-form__fields{flex-direction:column;gap:14px;display:flex}.signin-form__error{margin:8px 2px 10px}.signin-form .btn--lg{border-radius:14px}.signin-form__arrow{transition:transform var(--dur-fast) var(--ease-out)}.signin-form .btn:hover:not(:disabled) .signin-form__arrow{transform:translate(3px)}@media (width<=480px){.screen.screen--signin{padding:max(16px, var(--safe-top)) 16px max(16px, var(--safe-bottom))}.signin-backdrop{-webkit-mask-image:linear-gradient(#000 0%,#0000 24% 76%,#000 100%);mask-image:linear-gradient(#000 0%,#0000 24% 76%,#000 100%)}.signin-card{gap:18px;padding:28px 20px 20px}.signin-card__title{font-size:2rem}}.screen--lock{padding:max(24px, var(--safe-top)) 20px max(24px, var(--safe-bottom));overflow-y:auto}.lock-card{background:var(--surface);border:1px solid var(--line);width:min(420px,100%);box-shadow:var(--shadow-lg);text-align:center;border-radius:28px;flex-direction:column;align-items:center;gap:22px;margin:auto;padding:34px 32px 30px;display:flex}.lock-art{width:220px;height:auto;margin-bottom:-4px}.lock-card__text{flex-direction:column;align-items:center;gap:10px;display:flex}.lock-card__eyebrow{background:var(--accent-soft);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.lock-card .password-form{width:100%}@media (width<=480px){.lock-card{border-radius:24px;padding:28px 20px 22px}}.password-form{text-align:left;flex-direction:column;gap:4px;display:flex}.password-form__reveal{width:34px;height:34px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;display:flex}.password-form__reveal:hover{color:var(--ink);background:var(--surface-3)}.password-form__error{min-height:20px;font-size:var(--text-sm);color:var(--danger);margin:2px 2px 6px;font-weight:500}.password-form__actions{justify-content:flex-end;gap:8px;display:flex}.empty-card__sprout{background:var(--accent-2-soft);width:76px;height:76px;color:var(--accent-2);box-shadow:0 0 0 8px color-mix(in srgb, var(--accent-2-soft) 45%, transparent);border-radius:24px;justify-content:center;align-items:center;display:flex}.shortcuts{flex-direction:column;gap:18px;display:flex}.shortcuts__title{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:0 0 6px;font-size:11.5px;font-weight:650}.shortcuts__list{margin:0}.shortcuts__row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:36px;display:flex}.shortcuts__row:last-child{border-bottom:0}.shortcuts__row dt{color:var(--ink)}.shortcuts__row dd{gap:4px;margin:0;display:flex}@media (pointer:coarse){.password-form__reveal{width:40px;height:40px}}.btn{--btn-h:40px;height:var(--btn-h);border-radius:var(--radius-md);font-size:var(--text-md);letter-spacing:-.005em;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:550;line-height:1;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{cursor:not-allowed;opacity:.55}.btn.is-loading{opacity:.85;cursor:progress}.btn svg{flex:none}.btn__label{text-overflow:ellipsis;overflow:hidden}.btn--sm{--btn-h:34px;font-size:var(--text-sm);border-radius:10px;gap:6px;padding:0 12px}.btn--lg{--btn-h:48px;border-radius:var(--radius-md);padding:0 22px;font-size:1rem}.btn--block{width:100%;display:flex}.btn--primary{background:var(--accent);color:var(--accent-ink);box-shadow:inset 0 1px 0 #ffffff29, 0 1px 2px color-mix(in srgb, var(--accent) 35%, transparent), 0 4px 12px -4px color-mix(in srgb, var(--accent) 45%, transparent)}.btn--primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 90%, var(--ink))}.btn--secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong);box-shadow:var(--shadow-sm)}.btn--secondary:hover:not(:disabled){background:var(--surface-3)}.btn--ghost{color:var(--ink-2);background:0 0}.btn--ghost:hover:not(:disabled){background:color-mix(in srgb, var(--surface-3) 80%, transparent);color:var(--ink)}.btn--soft{background:var(--accent-soft);color:color-mix(in srgb, var(--accent) 80%, var(--ink))}.btn--soft:hover:not(:disabled){background:color-mix(in srgb, var(--accent-soft) 80%, var(--accent))}.btn--danger{background:var(--danger);color:var(--accent-ink);box-shadow:0 4px 12px -4px color-mix(in srgb, var(--danger) 50%, transparent)}.btn--danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 88%, var(--ink))}.icon-btn{--size:38px;width:var(--size);height:var(--size);color:var(--ink-2);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);background:0 0;border:1px solid #0000;border-radius:11px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover:not(:disabled){background:color-mix(in srgb, var(--surface-3) 85%, transparent);color:var(--ink)}.icon-btn:active:not(:disabled){transform:scale(.92)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn.is-active{background:var(--accent-soft);color:var(--accent)}.icon-btn--sm{--size:32px;border-radius:9px}.icon-btn--lg{--size:44px;border-radius:13px}.icon-btn--secondary{background:var(--surface);border-color:var(--line);box-shadow:var(--shadow-sm)}.icon-btn--primary{background:var(--accent);color:var(--accent-ink)}.icon-btn--primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 90%, var(--ink));color:var(--accent-ink)}@media (pointer:coarse){.icon-btn{--size:42px}.icon-btn--sm{--size:40px}.btn--sm{--btn-h:40px}}.spinner{flex:none;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.kbd{border:1px solid var(--line-strong);background:var(--surface);min-width:20px;height:20px;color:var(--ink-2);font-family:var(--font-body);border-bottom-width:2px;border-radius:6px;justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.kbd--inverse{background:color-mix(in srgb, var(--surface) 16%, transparent);border-color:color-mix(in srgb, var(--surface) 30%, transparent);color:inherit;min-width:18px;height:18px;margin-left:8px}.tooltip{z-index:var(--z-tooltip);background:var(--ink);max-width:280px;color:var(--surface);pointer-events:none;box-shadow:var(--shadow-md);white-space:nowrap;border-radius:8px;align-items:center;padding:6px 10px;font-size:12.5px;font-weight:500;line-height:1.3;display:inline-flex;position:fixed}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field__label{font-size:var(--text-sm);color:var(--ink-2);align-items:baseline;gap:8px;font-weight:600;display:flex}.field__optional{font-weight:450;font-size:var(--text-xs);color:var(--ink-3)}.field__hint,.field__error{font-size:var(--text-xs);color:var(--ink-3);margin:0;line-height:1.4}.field__error{color:var(--danger);font-weight:500}.date-preview{color:var(--accent-2);align-items:center;gap:4px;font-weight:550;display:inline-flex}.input{border:1px solid var(--line);background:var(--surface-2);width:100%;min-width:0;height:40px;color:var(--ink);font-size:var(--text-md);transition:border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);border-radius:10px;outline:none;padding:0 12px}.input::placeholder{color:var(--ink-3);opacity:1}.input:hover{border-color:var(--line-strong)}.input:focus,.input:focus-visible{border-color:var(--accent);background:var(--surface);box-shadow:var(--ring)}.input.is-invalid{border-color:var(--danger)}.input.is-invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb, var(--danger) 30%, transparent)}@media (pointer:coarse){.input{height:44px;font-size:16px}}.textarea{resize:vertical;height:auto;min-height:84px;padding:10px 12px;line-height:1.55}.input-wrap{align-items:center;display:flex;position:relative}.input-wrap.has-icon .input{padding-left:38px}.input-wrap.has-trailing .input{padding-right:44px}.input-wrap__icon{color:var(--ink-3);pointer-events:none;display:flex;position:absolute;left:12px}.input-wrap__trailing{display:flex;position:absolute;right:4px}.select-wrap{align-items:center;display:flex;position:relative}.select{appearance:none;cursor:pointer;padding-right:34px}.select-wrap__chevron{color:var(--ink-3);pointer-events:none;position:absolute;right:12px}.switch{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;align-items:center;gap:10px;padding:0;display:inline-flex}.switch__track{background:var(--line-strong);width:40px;height:24px;transition:background-color var(--dur-med) var(--ease-out);border-radius:999px;align-items:center;padding:2px;display:flex;position:relative}.switch.is-on .switch__track{background:var(--accent-2);justify-content:flex-end}.switch__thumb{background:var(--surface);border-radius:50%;width:20px;height:20px;box-shadow:0 1px 3px #00000040}.switch__label{font-size:var(--text-md);color:var(--ink)}.switch:disabled{opacity:.5;cursor:not-allowed}.segmented{background:color-mix(in srgb, var(--surface-3) 75%, transparent);border:1px solid color-mix(in srgb, var(--line) 70%, transparent);border-radius:12px;align-items:center;gap:2px;padding:3px;display:inline-flex}.segmented--block{width:100%;display:flex}.segmented--block .segmented__item{flex:1}.segmented__item{min-width:34px;height:32px;color:var(--ink-2);font-size:var(--text-sm);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:color var(--dur-fast) var(--ease-out);background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;padding:0 12px;font-weight:550;display:inline-flex;position:relative}.segmented--sm .segmented__item{height:30px;padding:0 10px}.segmented__item:hover:not(:disabled):not(.is-checked),.segmented__item.is-checked{color:var(--ink)}.segmented__item:disabled{opacity:.4;cursor:not-allowed}.segmented__pill{background:var(--surface);box-shadow:0 1px 2px #3c2d1e1f, 0 0 0 1px color-mix(in srgb, var(--line) 80%, transparent);border-radius:9px;position:absolute;inset:0}.segmented__content{align-items:center;gap:6px;display:inline-flex;position:relative}@media (pointer:coarse){.segmented__item{height:40px}}.menu{z-index:var(--z-menu);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg);overscroll-behavior:contain;border-radius:14px;flex-direction:column;padding:6px;display:flex;position:fixed;overflow:auto}.menu__item{width:100%;min-height:38px;color:var(--ink);font-size:var(--text-md);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:9px;outline:none;align-items:center;gap:10px;padding:6px 10px;display:flex}.menu__item:hover,.menu__item:focus-visible,.menu__item:focus{background:var(--surface-3);box-shadow:none}.menu__item.is-disabled{opacity:.45;cursor:not-allowed}.menu__item--danger{color:var(--danger)}.menu__item--danger:hover,.menu__item--danger:focus{background:var(--danger-soft)}.menu__icon{width:18px;color:var(--ink-3);flex:none;justify-content:center;display:flex}.menu__item--danger .menu__icon{color:inherit}.menu__icon:empty{display:none}.menu__text{flex:1;min-width:0}.menu__hint{font-size:var(--text-xs);color:var(--ink-3);flex:none}.menu__check{width:16px;color:var(--accent);flex:none;display:flex}.menu__label{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding:10px 10px 4px;font-size:11px;font-weight:650}.menu__label:first-child{padding-top:6px}.menu__note{font-size:var(--text-xs);color:var(--ink-3);margin:2px 10px 6px;line-height:1.45}.menu__sep{background:var(--line);flex:none;height:1px;margin:6px 4px}@media (pointer:coarse){.menu__item{min-height:44px}}.dialog-root{z-index:var(--z-dialog);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog-backdrop{background:var(--overlay);-webkit-backdrop-filter:blur(3px);position:absolute;inset:0}.dialog{border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--line);width:min(520px,100%);max-height:min(860px,100dvh - 48px);box-shadow:var(--shadow-lg);outline:none;flex-direction:column;display:flex;position:relative;overflow:hidden}.dialog:focus-visible{box-shadow:var(--shadow-lg)}.dialog--sm{width:min(420px,100%)}.dialog--lg{width:min(680px,100%)}.dialog__form{flex-direction:column;flex:1;min-height:0;display:flex}.dialog__header{flex:none;align-items:flex-start;gap:14px;padding:22px 22px 6px 24px;display:flex}.dialog__icon{flex:none;display:flex}.dialog__titles{flex:1;min-width:0;padding-top:2px}.dialog__title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-variation-settings:"SOFT" 50, "opsz" 40;margin:0;font-size:1.375rem;font-weight:600;line-height:1.25}.dialog__desc{color:var(--ink-2);font-size:var(--text-md);margin:4px 0 0}.dialog__close{margin:-4px -4px 0 0}.dialog__body{overscroll-behavior:contain;flex:1;min-height:0;padding:14px 24px 22px;overflow:auto}.dialog__footer{border-top:1px solid var(--line);background:var(--surface-2);flex:none;justify-content:flex-end;align-items:center;gap:8px;padding:14px 20px;display:flex}.dialog__footer-start{color:var(--ink-3);font-size:var(--text-xs);align-items:center;gap:6px;margin-right:auto;display:flex}@media (width<=720px),(pointer:coarse){.dialog__footer-start{display:none}}.dialog-root--sheet{padding:0;padding-top:max(24px, env(safe-area-inset-top));align-items:flex-end}.dialog-root--sheet .dialog{width:100%;max-height:calc(100dvh - max(24px, env(safe-area-inset-top)));border-radius:var(--radius-xl) var(--radius-xl) 0 0;border-bottom:0}.dialog-root--sheet .dialog--full-mobile{height:calc(100dvh - max(24px, env(safe-area-inset-top)))}.dialog-root--sheet .dialog__header{padding:18px 16px 4px 18px}.dialog-root--sheet .dialog__body{padding:12px 18px 20px}.dialog-root--sheet .dialog__footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}.dialog-root--sheet .dialog__title{font-size:1.25rem}.confirm-icon{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);border-radius:12px;justify-content:center;align-items:center;display:flex}.confirm-icon--danger{background:var(--danger-soft);color:var(--danger)}.confirm-message{color:var(--ink-2);font-size:var(--text-md);line-height:1.55}.confirm-message p{margin:0 0 10px}.confirm-message p:last-child{margin-bottom:0}.confirm-message__muted{color:var(--ink-3);font-size:var(--text-sm)}.confirm-message strong{color:var(--ink);font-weight:600}:root{--z-canvas:0;--z-float:20;--z-panel:25;--z-header:30;--z-sheet:40;--z-dialog:100;--z-lightbox:150;--z-menu:200;--z-tooltip:300;--z-toast:400;--gutter:12px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--chrome-top:calc(var(--gutter) + var(--safe-top) + var(--header-h));--minimap-space:226px}@media (width<=720px){:root{--gutter:8px;--minimap-space:0px}}::selection{background:color-mix(in srgb, var(--accent) 28%, transparent)}.app{background:var(--bg);position:fixed;inset:0;overflow:hidden}.app__canvas{z-index:var(--z-canvas);position:absolute;inset:0}.glass{background:color-mix(in srgb, var(--surface) 80%, transparent);border:1px solid color-mix(in srgb, var(--line) 85%, transparent);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(18px)saturate(1.6)}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.glass{background:var(--surface)}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.zoom-controls{left:calc(max(var(--gutter), var(--minimap-space)) + var(--safe-left));bottom:calc(16px + var(--safe-bottom));z-index:var(--z-float);border-radius:14px;flex-direction:column;gap:2px;padding:4px;display:flex;position:absolute}.zoom-controls__sep{background:var(--line);height:1px;margin:2px 6px}.edit-hint{left:calc(var(--minimap-space) + var(--safe-left) + 60px);bottom:calc(16px + var(--safe-bottom));z-index:var(--z-float);height:36px;font-size:var(--text-sm);color:var(--ink-2);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:0 14px 0 10px;display:flex;position:absolute;overflow:hidden}.edit-hint__dot{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent);animation:pulse-dot 2.4s var(--ease-in-out) infinite;border-radius:50%;flex:none}@keyframes pulse-dot{50%{box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 0%, transparent)}}@media (width<=720px){.edit-hint{display:none}}.focus-banner-wrap{top:calc(var(--chrome-top) + 10px);z-index:var(--z-float);pointer-events:none;padding:0 var(--gutter);justify-content:center;display:flex;position:absolute;left:0;right:0}.app.has-panel .focus-banner-wrap{right:var(--panel-w)}.focus-banner{pointer-events:auto;max-width:100%;height:44px;font-size:var(--text-sm);color:var(--ink-2);border-radius:999px;align-items:center;gap:10px;padding:0 6px;display:flex}.focus-banner__icon{background:var(--accent-soft);width:32px;height:32px;color:var(--accent);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.focus-banner__text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.focus-banner__name{font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0;font-weight:650}.focus-banner__name:hover{text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong)}.focus-banner .btn{border-radius:999px;flex:none}@media (width<=720px){.focus-banner-wrap{top:calc(var(--chrome-top) + 8px)}.focus-banner__prefix{display:none}}.toasts{left:50%;bottom:calc(20px + var(--safe-bottom));z-index:var(--z-toast);pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(440px,100vw - 24px);display:flex;position:fixed;transform:translate(-50%)}.toasts--top{bottom:auto;top:calc(16px + var(--safe-top));flex-direction:column-reverse}.toast{pointer-events:auto;background:var(--ink);max-width:100%;min-height:46px;color:var(--surface);box-shadow:var(--shadow-lg);font-size:var(--text-md);border-radius:14px;align-items:center;gap:10px;padding:8px 8px 8px 14px;font-weight:500;display:flex}.toast__icon{flex:none;display:flex}.toast--success .toast__icon{color:color-mix(in srgb, var(--accent-2) 70%, var(--surface))}.toast--info .toast__icon{color:color-mix(in srgb, var(--gold) 80%, var(--surface))}.toast--error{background:var(--danger);color:var(--accent-ink)}.toast__msg{flex:1;min-width:0;line-height:1.35}.toast__close{width:30px;height:30px;color:inherit;opacity:.65;cursor:pointer;background:0 0;border:0;border-radius:9px;flex:none;justify-content:center;align-items:center;display:flex}.toast__close:hover{opacity:1;background:color-mix(in srgb, var(--surface) 14%, transparent)}.screen{background:radial-gradient(1200px 600px at 50% -10%, color-mix(in srgb, var(--accent-soft) 70%, transparent), transparent 70%), radial-gradient(var(--bg-dot) 1px, transparent 1.4px) 0 0 / 22px 22px, var(--bg);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.screen__stack{text-align:center;flex-direction:column;align-items:center;gap:18px;max-width:420px;display:flex}.screen__title{text-wrap:balance;font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.015em;font-variation-settings:"SOFT" 50, "opsz" 72;margin:0;font-weight:600;line-height:1.15}.screen__text{color:var(--ink-2);font-size:var(--text-md);margin:0;line-height:1.6}.screen__error-detail{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--text-xs);color:var(--ink-3);background:var(--surface-2);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:8px;max-width:100%;padding:6px 10px}.loading-logo{filter:drop-shadow(0 10px 24px color-mix(in srgb, var(--accent) 35%, transparent));display:flex;position:relative}.loading-bar{background:var(--line);border-radius:3px;width:140px;height:3px;position:relative;overflow:hidden}.loading-bar:after{content:"";border-radius:inherit;background:var(--accent);width:40%;animation:loading-slide 1.3s var(--ease-in-out) infinite;position:absolute;inset:0}@keyframes loading-slide{0%{transform:translate(-100%)}to{transform:translate(250%)}}.loading-text{font-family:var(--font-display);color:var(--ink-3);font-style:italic;font-size:var(--text-md);margin:0}.empty-state{z-index:var(--z-float);padding:calc(var(--chrome-top) + 16px) 20px 20px;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.empty-card{pointer-events:auto;text-align:center;border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--line);width:min(440px,100%);box-shadow:var(--shadow-lg);flex-direction:column;align-items:center;gap:14px;padding:36px 32px 30px;display:flex}.empty-card__art{margin-bottom:4px}.empty-card h2{font-family:var(--font-display);letter-spacing:-.015em;font-variation-settings:"SOFT" 60, "opsz" 60;margin:0;font-size:1.75rem;font-weight:600;line-height:1.15}.empty-card p{color:var(--ink-2);margin:0;line-height:1.6}.empty-card .btn{margin-top:8px}.empty-card__note{font-size:var(--text-sm);color:var(--ink-3)!important}@media (pointer:coarse){.toast__close{width:40px;height:40px}}
