:root{color-scheme:light;--bg: #fdf9f2;--panel: rgba(255, 255, 255, .88);--card: #ffffff;--ink: #2a2118;--ink-2: #57483b;--muted: #82705c;--line: #ebe1d2;--line-2: #d9cbb5;--accent: #ce4228;--accent-ink: #fff;--accent-soft: rgba(206, 66, 40, .11);--accent-2: #f5b301;--accent-2-soft: rgba(245, 179, 1, .16);--hl: #fff1b8;--hl-ring: #f5b301;--shadow: 0 1px 2px rgba(120, 70, 30, .06), 0 8px 22px -10px rgba(120, 70, 30, .22);--g0: #8a6a3c;--g1: #e23d3d;--g2: #f26a3a;--g3: #f8961e;--g4: #e9b820;--g5: #8fc31f;--g6: #2dbb7a;--g7: #14b3c4;--g8: #3b8cf0;--g9: #7b64f2;--g10: #c455cc;--g11: #f0569b;--font: "Be Vietnam Pro", "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--serif: var(--font);--node-w: 172px;--gap-y: 26px;--tap: 34px;--slot-w: calc(var(--node-w) + 14px);--male: #3b8cf0;--female: #f0569b;--neutral: #9a8c7c;--alive: #2dbb7a;--dead: #8a7a6a;--ok: #2dbb7a;--warn: #e9a21a;--danger: #e04343;--blob-1: rgba(242, 106, 58, .16);--blob-2: rgba(233, 184, 32, .16);--blob-3: rgba(20, 179, 196, .12);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1)}:root[data-theme=dark]{color-scheme:dark}:root[data-theme=dark],:root:not([data-theme=light]):not([data-theme=dark]).dark-auto{color-scheme:dark}:root[data-theme=dark]{--bg: #171410;--panel: rgba(28, 24, 20, .92);--card: #26201a;--ink: #f5ede0;--ink-2: #d9cdbb;--muted: #a3957f;--line: #3d3429;--line-2: #524636;--accent: #f07a5a;--accent-ink: #1a120e;--accent-soft: rgba(240, 122, 90, .18);--accent-2: #ffd86b;--accent-2-soft: rgba(255, 216, 107, .18);--hl: #4d3d0d;--hl-ring: #f5c542;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 22px -10px rgba(0, 0, 0, .7);--g0: #c9a86a;--g1: #f26b60;--g2: #f5905a;--g3: #f7ad50;--g4: #ebc94e;--g5: #b0d552;--g6: #63d9a2;--g7: #55d0dc;--g8: #74b0f5;--g9: #a196f7;--g10: #d885dc;--g11: #f38ab8;--male: #74b0f5;--female: #f38ab8;--neutral: #a3957f;--alive: #63d9a2;--dead: #ad9f8c;--blob-1: rgba(242, 107, 96, .14);--blob-2: rgba(235, 201, 78, .1);--blob-3: rgba(85, 208, 220, .1)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]){color-scheme:dark;--bg: #171410;--panel: rgba(28, 24, 20, .92);--card: #26201a;--ink: #f5ede0;--ink-2: #d9cdbb;--muted: #a3957f;--line: #3d3429;--line-2: #524636;--accent: #f07a5a;--accent-ink: #1a120e;--accent-soft: rgba(240, 122, 90, .18);--accent-2: #ffd86b;--accent-2-soft: rgba(255, 216, 107, .18);--hl: #4d3d0d;--hl-ring: #f5c542;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 22px -10px rgba(0, 0, 0, .7);--g0: #c9a86a;--g1: #f26b60;--g2: #f5905a;--g3: #f7ad50;--g4: #ebc94e;--g5: #b0d552;--g6: #63d9a2;--g7: #55d0dc;--g8: #74b0f5;--g9: #a196f7;--g10: #d885dc;--g11: #f38ab8;--male: #74b0f5;--female: #f38ab8;--neutral: #a3957f;--alive: #63d9a2;--dead: #ad9f8c;--blob-1: rgba(242, 107, 96, .14);--blob-2: rgba(235, 201, 78, .1);--blob-3: rgba(85, 208, 220, .1)}}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}html[data-shell=app],html[data-shell=app] body,html[data-shell=app] #root{height:100%}html[data-shell=app],html[data-shell=app] body{overflow:hidden;overscroll-behavior:none}html[data-shell=app],html[data-shell=app] body{touch-action:pan-x pan-y}body{font-family:var(--font);color:var(--ink);font-size:.875rem;background:var(--bg);background-image:radial-gradient(1100px 560px at 8% -12%,var(--blob-1),transparent 62%),radial-gradient(900px 520px at 108% 6%,var(--blob-2),transparent 60%),radial-gradient(800px 480px at 50% 112%,var(--blob-3),transparent 60%);background-attachment:fixed;transition:background-color .35s,color .35s;-webkit-text-size-adjust:100%}html[data-shell=app] body{overscroll-behavior:none}html[data-shell=app] #root,.app{display:flex;flex-direction:column;height:100vh;height:100dvh}.app{position:fixed;top:0;right:0;bottom:0;left:0;height:auto}.body{flex:1;min-height:0;display:flex;position:relative}button,input,select{font-family:inherit;-webkit-tap-highlight-color:transparent}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:none}header{position:relative;z-index:20;background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:10px 16px 8px;display:flex;flex-direction:column;gap:8px;padding-top:calc(10px + env(safe-area-inset-top))}.brand-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand .mark{flex:none;width:40px;height:40px;border-radius:50%;display:block;box-shadow:var(--shadow);transition:transform .3s var(--ease-spring)}.brand .mark img{width:100%;height:100%}.brand .mark:hover{transform:rotate(-6deg) scale(1.06)}.brand h1{margin:0;font-family:var(--serif);font-size:21px;color:var(--ink);line-height:1.1}.brand h1 small{display:block;font-family:var(--font);font-size:11.5px;color:var(--muted);font-weight:500;margin-top:3px}.stats{display:flex;gap:6px;flex-wrap:wrap}.stats .pill{animation:rise-in .4s var(--ease-out) both;transition:transform .2s var(--ease-out),border-color .2s;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:4px 10px 4px 6px;display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);box-shadow:var(--shadow);white-space:nowrap}.stats .pill:hover{transform:translateY(-1px);border-color:var(--line-2)}.stats .pill:nth-child(2){animation-delay:.05s}.stats .pill:nth-child(3){animation-delay:.1s}.stats .pill:nth-child(4){animation-delay:.15s}.stats .pill:nth-child(5){animation-delay:.2s}.stats .pill b{color:var(--ink);font-size:13px;background:var(--accent-soft);border-radius:999px;padding:1px 8px}.quick{margin-left:auto;display:flex;gap:6px}.controls{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.search{position:relative;flex:1 1 220px;max-width:320px}.search input{width:100%;height:var(--tap);padding:0 30px 0 32px;border:1px solid var(--line);border-radius:10px;font-size:13px;background:var(--card);color:var(--ink);outline:none;transition:border-color .15s,box-shadow .15s}.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search input::-webkit-search-cancel-button{-webkit-appearance:none}.search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--muted);pointer-events:none}.search .kbd{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 5px;pointer-events:none}.search-info{font-size:12px;color:var(--muted);min-width:56px;text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}.btn{height:var(--tap);padding:0 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);cursor:pointer;font-size:13px;font-weight:500;color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1;white-space:nowrap;text-decoration:none;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}.btn:hover{background:color-mix(in srgb,var(--ink) 4%,var(--card));border-color:var(--line-2);color:var(--ink)}.btn:active{transform:translateY(0) scale(.97)}.btn.primary:hover{background:color-mix(in srgb,var(--accent) 88%,black);border-color:color-mix(in srgb,var(--accent) 88%,black);color:var(--accent-ink)}.btn.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600;padding:0 18px}.btn svg{width:15px;height:15px}.btn.icon{width:var(--tap);padding:0;font-size:16px}select.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:26px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 14px) 55%,calc(100% - 9px) 55%;background-size:5px 5px;background-repeat:no-repeat}.group{display:inline-flex;flex:none;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}.group .btn{border:0;border-radius:0;border-right:1px solid var(--line)}.group .btn:last-child{border-right:0}.group .btn.active{box-shadow:inset 0 0 0 1px var(--accent)}.group.disabled{opacity:.45;pointer-events:none}.legend{background:var(--panel);border-bottom:1px solid var(--line);padding:6px 16px;display:flex;gap:8px;align-items:center;font-size:12px}.legend-scroll{display:flex;gap:4px;flex-wrap:wrap;min-width:0}.legend .gen{display:inline-flex;align-items:center;gap:6px;cursor:pointer;padding:4px 9px 4px 6px;border-radius:999px;border:1px solid transparent;background:none;color:var(--ink-2);font-size:12px;white-space:nowrap;transition:background .15s,border-color .15s}.legend .gen:hover{background:var(--accent-soft);border-color:var(--line)}.legend .dot{transition:transform .25s var(--ease-spring),box-shadow .25s}.legend .gen:hover .dot{transform:scale(1.35);box-shadow:0 0 0 4px color-mix(in srgb,var(--c) 30%,transparent)}.legend .dot{width:10px;height:10px;border-radius:50%;background:var(--c);box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 22%,transparent)}.legend .gen b{font-weight:600;color:var(--ink)}.legend .guide-link{margin-left:auto;flex:none;background:none;border:1px solid var(--line);border-radius:999px;padding:3px 9px;color:var(--muted);font-size:11.5px;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.legend .guide-link:hover{background:var(--accent-soft);color:var(--ink)}main{flex:1;min-width:0;overflow:auto;position:relative;-webkit-overflow-scrolling:touch}main.is-chart,main.is-mindmap{cursor:grab;touch-action:pan-x pan-y}main.dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.chart-wrap{padding:30px 60px 80px;display:inline-block;min-width:100%}.tree{--zoom: 1;--lw: max(2px, calc(1.5px / var(--zoom)));width:max-content;transform-origin:0 0}.tree-scale,.mm-scale{position:relative;margin:0 auto}.tree ul{display:flex;padding:var(--gap-y) 0 0;margin:0;position:relative;justify-content:center}.tree li>ul{animation:unfold .35s var(--ease-out) both;transform-origin:top center}.tree>ul{padding-top:0}.tree li{flex:none;list-style:none;position:relative;padding:var(--gap-y) 7px 0;display:flex;flex-direction:column;align-items:center}.tree>ul>li{padding-top:0}.tree li:before,.tree li:after{content:"";position:absolute;top:0;right:50%;width:50%;height:var(--gap-y);border-top:var(--lw) solid var(--pc, var(--line));opacity:.55}.tree li:after{right:auto;left:50%;border-left:var(--lw) solid var(--pc, var(--line))}.tree li:only-child:before,.tree li:only-child:after{display:none}.tree li:only-child>.node-group:before{content:"";position:absolute;left:50%;bottom:100%;height:var(--gap-y);border-left:var(--lw) solid var(--pc, var(--line));opacity:.55}.tree>ul>li:only-child>.node-group:before{display:none}.node-group{position:relative;display:flex;align-items:stretch}.node-group.joint .node{flex:none}.joint-bridge{position:relative;align-self:center;flex:none;width:34px;display:flex;align-items:center;justify-content:center}.joint-bridge:before{content:"";position:absolute;left:-2px;right:-2px;top:50%;border-top:var(--lw) dashed var(--gc);opacity:.6}.joint-bridge i{position:relative;z-index:1;font-style:normal;font-size:11px;font-weight:800;color:color-mix(in srgb,var(--gc) 45%,var(--ink));background:var(--card);border:1px solid color-mix(in srgb,var(--gc) 45%,var(--line));border-radius:999px;padding:1px 6px;line-height:16px}.node.root-entity{background:linear-gradient(160deg,color-mix(in srgb,var(--gc) 16%,var(--card)),var(--card));border-width:1.5px}.node.root-entity .name{font-family:var(--serif);font-size:15px;letter-spacing:.2px}.tree li:first-child:before,.tree li:last-child:after{border:0 none}.tree li:last-child:before{border-right:var(--lw) solid var(--pc, var(--line));border-radius:0 8px 0 0}.tree li:first-child:after{border-radius:8px 0 0}.tree ul ul:before{content:"";position:absolute;top:0;left:50%;height:var(--gap-y);border-left:var(--lw) solid var(--gc, var(--line));opacity:.55}.tree ul.tight>li.tight-leaf{position:absolute;top:var(--gap-y);left:50%;transform:translate(calc(var(--slot) * var(--slot-w) - 50%));z-index:1}.tree ul.tight>li:before{display:none}.tree ul.tight>li:after{left:50%;right:auto;width:0;border-top:0 none;border-radius:0;border-left:var(--lw) solid var(--pc, var(--line))}.tree ul.tight>li:first-child:after{width:8px;border-top:var(--lw) solid var(--pc, var(--line));border-radius:8px 0 0}.tree ul.tight>li:last-child:before{display:block;left:auto;right:50%;width:8px;border-right:var(--lw) solid var(--pc, var(--line));border-radius:0 8px 0 0}.tree ul.tight:after{content:"";position:absolute;top:var(--gap-y);left:50%;margin-left:calc(var(--from) * var(--slot-w));width:calc((var(--to) - var(--from)) * var(--slot-w));border-top:var(--lw) solid var(--gc, var(--line));opacity:.55}.tree>ul>li>.node-group{transform:translate(calc(var(--tight-mid, 0) * var(--slot-w)))}.tree>ul>li>ul.tight:before{margin-left:calc(var(--tight-mid) * var(--slot-w))}.node{position:relative;width:var(--node-w);border-radius:12px;padding:10px 10px 9px;text-align:center;background:var(--card);background:color-mix(in srgb,var(--gc) 9%,var(--card));border:1px solid color-mix(in srgb,var(--gc) 35%,var(--line));box-shadow:var(--shadow);transition:transform .2s var(--ease-out),box-shadow .2s,background .3s,border-color .3s;animation:rise-in .38s var(--ease-out) both}.node:after{content:"";position:absolute;z-index:1;left:12px;right:12px;top:-1px;height:3px;border-radius:0 0 3px 3px;background:var(--gc)}.node:hover{transform:translateY(-3px);box-shadow:0 2px 4px #00000014,0 12px 26px -10px color-mix(in srgb,var(--gc) 45%,transparent)}.node .gen-badge{position:absolute;z-index:2;top:-11px;left:10px;font-size:10px;letter-spacing:.3px;border-radius:999px;padding:2px 8px;font-weight:600;text-transform:uppercase}.node .id{position:absolute;z-index:2;top:-10px;right:10px;font-size:9.5px;color:var(--muted);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:1px 6px;font-variant-numeric:tabular-nums}.node .name{font-weight:700;font-size:13.5px;line-height:1.3;margin-top:4px;color:var(--ink);overflow-wrap:anywhere}.node .name a{color:inherit;text-decoration:none}.node .name a:hover{color:var(--gc)}.node .spouse{margin-top:5px;display:flex;flex-direction:column;gap:2px}.spouse-chip{font-size:11px;color:var(--ink-2);background:color-mix(in srgb,var(--gc) 8%,transparent);border-radius:6px;padding:2px 6px;display:inline-flex;align-items:center;justify-content:center;gap:5px}.spouse-chip svg{width:11px;height:11px;color:var(--gc);flex:none}.spouse-chip a{color:inherit;text-decoration:none}.spouse-chip a:hover{color:var(--gc)}.spouse-chip .unknown{opacity:.7}.node-group .toggle{position:absolute;z-index:3;left:50%;transform:translate(-50%);bottom:-13px;min-width:28px;height:24px;border-radius:999px;border:1px solid color-mix(in srgb,var(--gc) 45%,var(--line));background:var(--card);font-size:11px;font-weight:700;cursor:pointer;color:var(--gc);line-height:22px;padding:0 7px;box-shadow:var(--shadow);font-variant-numeric:tabular-nums}.node-group .toggle{color:color-mix(in srgb,var(--gc) 45%,var(--ink))}.node-group .toggle:hover{background:color-mix(in srgb,var(--gc) 34%,#17110a)}.node-group .toggle{transition:transform .2s var(--ease-spring),background .15s,color .15s}.node-group .toggle:hover{background:var(--gc);color:#fff;transform:translate(-50%) scale(1.12)}.node.hit{background:var(--hl);border-color:var(--hl-ring)}.node.hit-current{outline:3px solid var(--hl-ring);outline-offset:2px;animation:rise-in .38s var(--ease-out) both,hit-pop .5s var(--ease-spring) 1}.node.draggable{cursor:grab;user-select:none;-webkit-user-select:none}.tree.is-dragging .node{transition:box-shadow .2s,background .3s,border-color .3s}.tree.is-dragging .node:not(.dragging):hover{transform:none}.node.dragging{cursor:grabbing;pointer-events:none;z-index:9;opacity:.94;animation:none;transform:translate(var(--dx, 0px),var(--dy, 0px)) scale(1.04) rotate(-1deg);box-shadow:0 6px 10px #00000014,0 22px 44px -14px color-mix(in srgb,var(--gc) 65%,transparent)}.node.drop-before:before,.node.drop-after:before{content:"";position:absolute;z-index:4;top:-8px;bottom:-8px;width:4px;border-radius:3px;background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent);animation:fade-in .12s var(--ease-out) both}.node.drop-before:before{left:-9px}.node.drop-after:before{right:-9px}.node.drop-into{outline:3px dashed var(--accent);outline-offset:3px;background:var(--accent-soft)}.node .nudge{position:absolute;z-index:4;top:50%;transform:translateY(-50%);width:20px;height:26px;padding:0;line-height:24px;border-radius:7px;border:1px solid color-mix(in srgb,var(--gc) 45%,var(--line));background:var(--card);color:var(--gc);font-size:14px;font-weight:700;cursor:pointer;opacity:0;transition:opacity .15s,background .15s,color .15s;box-shadow:var(--shadow)}.node .nudge.left{left:-11px}.node .nudge.right{right:-11px}.node:hover .nudge,.node.selected .nudge,.node .nudge:focus-visible{opacity:1}.node .nudge:hover{background:var(--gc);color:#fff}.node.dragging .nudge{opacity:0}@media (hover: none){.node .nudge{opacity:0;pointer-events:none}.node.selected .nudge{opacity:1;pointer-events:auto}}.tree[data-lod=compact] .gen-badge,.tree[data-lod=compact] .id,.tree[data-lod=compact] .meta,.tree[data-lod=compact] .nudge,.tree[data-lod=compact] .dead{visibility:hidden}.tree[data-lod=compact] .spouse-chip{color:transparent}.tree[data-lod=compact] .spouse-chip svg{visibility:hidden}.tree[data-lod=compact] .node .name{transform:scale(1.25);transform-origin:50% 0}.tree[data-lod=compact] .node:after{height:5px}.tree[data-lod=compact] .node-group .toggle{min-width:40px;height:32px;line-height:30px;font-size:15px;bottom:-17px}.tree[data-lod=tiny] .node{background:var(--gc);border-color:var(--gc);box-shadow:none;animation:none}.tree[data-lod=tiny] .node>*,.tree[data-lod=tiny] .node-group .toggle,.tree[data-lod=tiny] .joint-bridge i{visibility:hidden}.tree[data-lod=tiny] .node:after{display:none}.tree[data-lod=tiny] .node.hit{outline:max(3px,calc(3px / var(--zoom))) solid var(--hl-ring);outline-offset:max(2px,calc(2px / var(--zoom)))}.tree[data-lod=tiny] .node.selected{outline:max(3px,calc(3px / var(--zoom))) solid var(--ink);outline-offset:max(2px,calc(2px / var(--zoom)))}.mm-wrap{padding:24px}.mm-float,.chart-float{position:sticky;top:10px;left:10px;z-index:6;display:inline-flex;margin-bottom:-26px;animation:drop-in .25s var(--ease-out) both}.mm-canvas{position:relative;display:block;transform-origin:0 0}.mm-edges{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible;pointer-events:none}.mm-edge{fill:none;stroke:var(--c);stroke-width:2;opacity:.45;stroke-linecap:round;transition:opacity .2s,stroke-width .2s}.mm-edge.lineage{opacity:.95;stroke-width:3.5}.mm-node{position:absolute;transform:translate(-50%,-50%);width:136px;padding:8px 10px 9px;border-radius:16px;text-align:center;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;background:color-mix(in srgb,var(--gc) 10%,var(--card));border:1.5px solid color-mix(in srgb,var(--gc) 55%,var(--line));box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;gap:3px;animation:pop-in .35s var(--ease-out) both;transition:box-shadow .2s,background .3s,border-color .3s}.mm-node:hover{box-shadow:0 2px 4px #0000000f,0 14px 30px -12px color-mix(in srgb,var(--gc) 55%,transparent);z-index:4}.mm-node.dragging{cursor:grabbing;z-index:7;transform:translate(-50%,-50%) scale(1.06) rotate(-1.5deg);box-shadow:0 6px 10px #00000014,0 22px 44px -14px color-mix(in srgb,var(--gc) 65%,transparent);animation:none}.mm-node.moved{border-style:dashed}.mm-node .gen-badge{font-size:9.5px;letter-spacing:.3px;border-radius:999px;padding:2px 8px;font-weight:600;text-transform:uppercase}.mm-node .name{font-weight:700;font-size:12.5px;line-height:1.25;color:var(--ink);overflow-wrap:anywhere}.mm-node .meta{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums;line-height:1.3}.mm-node .meta.spouses{color:var(--ink-2);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mm-node .toggle{position:absolute;z-index:3;left:50%;transform:translate(-50%);bottom:-12px;min-width:26px;height:22px;border-radius:999px;border:1px solid color-mix(in srgb,var(--gc) 45%,var(--line));background:var(--card);font-size:11px;font-weight:700;cursor:pointer;color:var(--gc);line-height:20px;padding:0 7px;box-shadow:var(--shadow);font-variant-numeric:tabular-nums;transition:transform .2s var(--ease-spring),background .15s,color .15s}.mm-node .toggle:hover{background:var(--gc);color:#fff;transform:translate(-50%) scale(1.12)}.mm-node.mm-root{width:168px;padding:12px 12px 13px;border-width:2px;background:color-mix(in srgb,var(--gc) 16%,var(--card))}.mm-node.mm-root .name{font-family:var(--serif);font-size:15px}.mm-node.hit{background:var(--hl);border-color:var(--hl-ring)}.mm-node.hit-current{outline:3px solid var(--hl-ring);outline-offset:2px}.mm-node.selected{outline:3px solid var(--accent);outline-offset:2px}.mm-node.lineage:not(.selected){box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 55%,transparent),var(--shadow)}.mm-node.dim{opacity:.28;filter:saturate(.3)}.mm-node.fav .name:after{content:" ♥";color:var(--accent);font-size:11px}@media (max-width: 760px){.mm-wrap{padding:16px}.mm-node{width:120px}.mm-node .name{font-size:11.5px}}.list-wrap{padding:14px 18px 80px;max-width:1100px}.lst ul{list-style:none;margin:0;padding-left:22px;border-left:1px dashed var(--line-2)}.lst>ul{padding-left:0;border-left:0}.lst li{margin:2px 0}.lst ul{animation:unfold .3s var(--ease-out) both;transform-origin:top left}.lst .row{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:8px;transition:background .12s,transform .15s var(--ease-out);flex-wrap:wrap;animation:rise-in .3s var(--ease-out) both}.lst .row:hover{transform:translate(2px)}.lst .row:hover{background:color-mix(in srgb,var(--gc) 8%,var(--card))}.lst .row .gb{font-size:10px;color:#fff;border-radius:999px;padding:2px 8px;font-weight:600;background:var(--gc);min-width:46px;text-align:center;text-transform:uppercase;letter-spacing:.3px}.lst .row .nm{font-weight:600}.lst .row .nm.alt{cursor:pointer}.lst .row .nm.alt:hover{color:var(--gc)}.lst .row .joint-and{font-weight:800;color:var(--gc);font-size:12px}.lst .row .sp{color:var(--ink-2);font-size:12px;display:inline-flex;gap:6px;flex-wrap:wrap}.lst .row .sp .spouse-chip{background:none;padding:0}.lst .row .cnt{color:var(--muted);font-size:11px}.lst .row a{color:inherit;text-decoration:none}.lst .row a:hover{color:var(--gc)}.lst .tg{flex:none;width:24px;height:24px;border:1px solid var(--line);border-radius:6px;background:var(--card);font-size:12px;line-height:22px;padding:0;cursor:pointer;color:var(--gc)}.lst .tg{transition:transform .2s var(--ease-spring),background .15s,color .15s}.lst .tg:hover{background:var(--gc);color:#fff;transform:scale(1.12)}.lst .tg.empty{visibility:hidden}.lst .row.hit{background:var(--hl)}.lst .row.hit-current{outline:2px solid var(--hl-ring)}footer{background:var(--panel);border-top:1px solid var(--line);padding:7px 16px;font-size:11.5px;color:var(--muted);line-height:1.5}footer .credits{color:var(--ink-2);font-weight:500}footer .linkish{font-size:inherit}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#28180c73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px;animation:fade-in .2s ease-out both}.modal{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:16px;width:min(640px,100%);max-height:min(86vh,86dvh);display:flex;flex-direction:column;box-shadow:0 30px 80px -20px #00000080;overflow:hidden;animation:pop-in .32s var(--ease-out) both}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 8px}.modal-head h2{margin:0;font-family:var(--serif);font-size:20px}.modal-intro{margin:0 0 10px;color:var(--ink-2);font-size:13px;line-height:1.5}.modal-body{overflow:auto;padding:0 20px 14px}.modal.wide{width:min(860px,100%)}.guide{list-style:none;margin:0;padding:4px 0 12px;display:flex;flex-direction:column;gap:10px}.guide li{display:flex;gap:12px;animation:rise-in .4s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 40ms)}.guide .num{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--g1),var(--g3))}.guide h3{margin:2px 0 3px;font-size:13.5px}.guide p{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.55}.guide-tips{margin:0 0 12px;padding-left:18px;font-size:12.5px;color:var(--ink-2);line-height:1.55}.guide-tips li{margin:2px 0}.modal-foot{padding:12px 20px 16px;border-top:1px solid var(--line);display:flex;justify-content:flex-end}@media (pointer: coarse){:root{--tap: 40px}.node-group .toggle{min-width:34px;height:28px;line-height:26px;bottom:-15px;font-size:12px}.lst .tg{width:32px;height:32px;line-height:30px}.legend .gen{padding:6px 10px 6px 7px}.node:hover{transform:none}}@media (max-width: 760px){body{font-size:13px}header{padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));gap:6px}.brand .mark{width:34px;height:34px}.brand h1{font-size:17px}.brand{flex:1 1 0}.brand h1{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand h1 small{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quick{flex:none}.stats{order:3;width:100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:5px;padding-bottom:2px}.stats::-webkit-scrollbar{display:none}.stats .pill{font-size:11px;padding:3px 8px 3px 4px}.controls{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:6px;margin:0 -12px;padding:2px 12px 4px;scroll-snap-type:x proximity}.controls::-webkit-scrollbar{display:none}.controls,.legend-scroll{-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 36px),transparent)}.controls>*{scroll-snap-align:start}.search{flex:0 0 min(62vw,260px);max-width:none}.search .kbd{display:none}.search-info{min-width:44px}.legend{padding:6px 12px}.legend-scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -12px;padding:0 12px}.legend-scroll::-webkit-scrollbar{display:none}.chart-wrap{padding:22px 24px 60px}:root{--node-w: 150px;--gap-y: 22px}.node .name{font-size:12.5px}.list-wrap{padding:8px 8px 90px}.lst ul{padding-left:14px}.lst .row{padding:6px;gap:6px 8px}.lst .row .sp{width:100%;padding-left:40px}.lst .row .cnt{display:none}.modal{border-radius:14px;max-height:min(92vh,92dvh)}.modal-head{padding:14px 16px 6px}.modal-intro,.guide{padding-left:16px;padding-right:16px}.guide-tips{padding-left:34px;padding-right:16px}.modal-foot{padding:10px 16px calc(12px + env(safe-area-inset-bottom))}.modal-foot .btn{width:100%}}@media (max-width: 400px){.brand h1 small{display:none}.search{flex-basis:70vw}}@media (min-width: 761px) and (max-width: 1024px){.stats{order:3;width:100%}.search{flex-basis:200px}.controls{gap:5px}.btn{padding:0 9px;font-size:12.5px}}.node{cursor:pointer}.node.selected{outline:3px solid var(--accent);outline-offset:2px;animation:rise-in .38s var(--ease-out) both,pulse-ring 1.4s var(--ease-out) 1}.node.lineage:not(.selected){box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 55%,transparent),var(--shadow)}.node.dim,.lst .row.dim{opacity:.28;filter:saturate(.3)}.node.fav .name:after,.lst .row.fav .nm:after{content:" ♥";color:var(--accent);font-size:11px}.node .meta{font-size:10.5px;color:var(--muted);margin-top:3px;font-variant-numeric:tabular-nums}.node .avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;margin:4px auto 0;display:block;border:2px solid var(--gc)}.dead{display:inline-flex;vertical-align:-2px;margin-right:3px;color:var(--muted)}.dead svg{width:11px;height:11px}.lst .row{cursor:pointer}.lst .row.selected{outline:2px solid var(--accent)}.lst .row .life{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.stats .pill.status{cursor:pointer}.stats .pill.status svg{width:12px;height:12px}.stats .pill.status.loading svg{animation:spin 1s linear infinite}.stats .pill.status.server{border-color:color-mix(in srgb,var(--ok) 50%,var(--line))}.stats .pill.status.cache,.stats .pill.status.snapshot{border-color:color-mix(in srgb,var(--warn) 60%,var(--line))}@keyframes spin{to{transform:rotate(360deg)}}.quick .btn.icon{text-decoration:none}.btn:disabled{opacity:.45;cursor:default}.btn.small{height:26px;padding:0 8px;font-size:12px;border-radius:7px}.btn.icon.small{width:26px}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}.btn.danger:hover{background:var(--danger);color:#fff}.search-wrap{position:relative;flex:1 1 220px;max-width:320px}.search-wrap .search{max-width:none}.search-results{position:absolute;z-index:40;top:calc(100% + 4px);left:0;right:0;margin:0;padding:4px;list-style:none;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 40px -16px #0006;max-height:320px;overflow:auto;animation:drop-in .2s var(--ease-out) both}.search-results button{width:100%;text-align:left;background:none;border:0;padding:6px 8px;border-radius:6px;cursor:pointer;color:var(--ink);display:flex;flex-direction:column;gap:1px;font-size:13px}.search-results button small{color:var(--muted);font-size:11px}.search-results button:hover,.search-results button.current{background:var(--accent-soft)}.search-results .more{color:var(--muted);font-size:11px;padding:4px 8px}.tools-anchor{position:relative;flex:none}.popover{position:absolute;z-index:45;top:calc(100% + 4px);min-width:220px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 50px -18px #00000073;padding:6px;animation:drop-in .22s var(--ease-out) both}.popover.right{right:0}.popover.left{left:0}.tools-menu{display:flex;flex-direction:column}.tools-menu button{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;background:none;border:0;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--ink);font-size:13px}.tools-menu button:hover{background:var(--accent-soft)}.tools-menu button.active{color:var(--accent);font-weight:600}.badge{background:var(--accent);color:var(--accent-ink);border-radius:999px;font-size:10.5px;padding:1px 6px;font-weight:700}.linkish{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;font:inherit;font-weight:600}.linkish:hover{color:color-mix(in srgb,var(--accent) 80%,var(--ink))}.legend .gen.plain{opacity:.75}.legend span.gen{cursor:default}.banner{display:flex;flex-wrap:wrap;gap:6px;padding:6px 16px;background:var(--panel);border-bottom:1px solid var(--line);font-size:12.5px}.banner-item{animation:drop-in .3s var(--ease-out) both}.banner-item{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:var(--card)}.banner-item.ann{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:var(--accent-soft)}.banner-item.err{border-color:color-mix(in srgb,var(--warn) 60%,var(--line))}.banner-item.new .linkish{text-decoration:none;font-weight:600}.banner-item.focus{border-color:color-mix(in srgb,var(--accent) 60%,var(--line))}.detail{flex:none;width:360px;max-width:100%;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:slide-left .32s var(--ease-out) both}.detail-head{animation:rise-in .4s var(--ease-out) both}.detail-body section{animation:rise-in .45s var(--ease-out) both}.detail-body section:nth-child(2){animation-delay:.04s}.detail-body section:nth-child(3){animation-delay:.08s}.detail-body section:nth-child(4){animation-delay:.12s}.detail-body section:nth-child(n+5){animation-delay:.16s}.detail-head{display:flex;gap:12px;padding:14px 14px 10px;border-bottom:1px solid var(--line);align-items:flex-start}.detail-avatar{transition:transform .3s var(--ease-spring)}.detail-avatar:hover{transform:scale(1.06) rotate(-3deg)}.detail-avatar{flex:none;width:56px;height:56px;border-radius:50%;background:color-mix(in srgb,var(--gc) 14%,var(--card));border:2px solid var(--gc);display:grid;place-items:center;color:var(--gc);overflow:hidden}.detail-avatar img{width:100%;height:100%;object-fit:cover}.detail-avatar svg{width:28px;height:28px}.detail-title{flex:1;min-width:0}.detail-title .gen-badge{font-size:10px;border-radius:999px;padding:2px 8px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.detail-title h2{margin:4px 0 2px;font-family:var(--serif);font-size:18px;line-height:1.2;overflow-wrap:anywhere}.detail-sub,.detail-life{font-size:12px;color:var(--muted)}.detail-actions{display:flex;gap:4px;flex:none}.detail-body{overflow:auto;padding:10px 14px 20px;display:flex;flex-direction:column;gap:14px}.detail-body section h3{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.detail-counts{margin:0;font-size:12.5px;color:var(--ink-2)}.crumbs{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px;align-items:center;font-size:12.5px}.crumbs li:after{content:"›";color:var(--muted);margin-left:4px}.crumbs li:last-child:after{content:none}.crumbs button{background:color-mix(in srgb,var(--c) 12%,transparent);border:1px solid color-mix(in srgb,var(--c) 40%,transparent);color:var(--ink);border-radius:6px;padding:2px 7px;cursor:pointer;font-size:12px}.crumbs .cur{font-weight:700}.crumbs .amp{font-weight:800;color:var(--muted);margin:0 2px}.crumbs li.joint{display:inline-flex;align-items:center;gap:2px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{background:var(--accent-soft);border-radius:999px;padding:3px 10px;font-size:12px;animation:pop-in .3s var(--ease-out) both}.chip.muted{background:none;border:1px dashed var(--line)}.people{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.people li{display:flex;align-items:center;gap:4px}.people li>button:first-child{transition:background .15s,transform .15s var(--ease-out)}.people li>button:first-child:hover{transform:translate(3px)}.people li>button:first-child{flex:1;text-align:left;background:none;border:0;padding:5px 8px;border-radius:6px;color:var(--ink);cursor:pointer;font-size:13px}.people li>button:first-child:hover{background:var(--accent-soft)}.people .n{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:2px}.people small{color:var(--muted)}.facts{margin:0;display:grid;gap:6px}.facts.two{grid-template-columns:1fr 1fr}.facts>div{display:grid;gap:1px}.facts dt{font-size:11px;color:var(--muted)}.facts dd{margin:0;font-size:13px;overflow-wrap:anywhere}.notes{white-space:pre-wrap;font-size:13px;line-height:1.5;margin:8px 0 0;color:var(--ink-2)}.muted{color:var(--muted)}.detail-buttons{display:flex;flex-wrap:wrap;gap:6px}.detail-buttons .btn{height:30px;font-size:12px;padding:0 9px;text-decoration:none}.empty{color:var(--muted);text-align:center;padding:24px 12px;font-style:italic}.main-wrap{flex:1;min-width:0;position:relative;display:flex}.main-wrap:fullscreen{background:var(--bg)}.app.is-fullscreen .main-wrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:25;background:var(--bg)}.fs-bar{position:absolute;top:12px;right:12px;z-index:31;display:flex;gap:8px;align-items:center;animation:drop-in .25s var(--ease-out) both}.fs-bar .group,.fs-bar>.btn{box-shadow:var(--shadow);background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@media (max-width: 760px){.fs-bar{top:auto;right:auto;bottom:14px;left:12px;z-index:29}}.minimap{animation:pop-in .3s var(--ease-out) both}.minimap{position:absolute;right:14px;bottom:14px;z-index:30;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);line-height:0}.minimap canvas{display:block;border-radius:10px;cursor:crosshair;touch-action:none}.minimap-close{position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--muted);font-size:12px;line-height:18px;padding:0;cursor:pointer}.minimap-toggle{transition:transform .2s var(--ease-spring)}.minimap-toggle:hover{transform:scale(1.08)}.minimap-toggle{position:absolute;right:14px;bottom:14px;z-index:30;width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--ink-2);cursor:pointer;font-size:16px;box-shadow:var(--shadow)}.filter-panel{display:flex;flex-direction:column;gap:8px}.filter-panel h3{margin:0 0 4px;font-size:14px;display:flex;justify-content:space-between;align-items:center}.filter-panel label{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:8px;font-size:13px}.filter-panel label.check{grid-template-columns:auto 1fr}.filter-panel select.btn,.filter-panel input.btn{width:100%}.filter-panel .pair{display:flex;gap:6px}.filter-panel .pair input{flex:1;min-width:0}.filter-foot{display:flex;justify-content:space-between;align-items:center;margin-top:6px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-bottom:12px}.stat{animation:rise-in .4s var(--ease-out) both;transition:transform .2s var(--ease-out),box-shadow .2s}.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}.stat b{font-size:20px;font-family:var(--serif)}.stat b small{font-size:11px;color:var(--muted);font-family:var(--font)}.stat span{font-size:11.5px;color:var(--muted)}.stat-note{font-size:11.5px;color:var(--muted);margin:-6px 0 6px}h3.sub{font-size:13px;margin:14px 0 6px;color:var(--ink-2)}.bars{display:flex;flex-direction:column;gap:4px}.bar-row{display:grid;grid-template-columns:70px 1fr 40px;align-items:center;gap:8px;font-size:12px}.bar-label{color:var(--ink-2)}.bar{height:12px;background:color-mix(in srgb,var(--c) 12%,transparent);border-radius:6px;overflow:hidden}.bar i{display:block;height:100%;background:var(--c);border-radius:6px;transform-origin:left center;animation:grow-x .7s var(--ease-out) both}.bar-row b{text-align:right;font-variant-numeric:tabular-nums}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl td{padding:6px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl .num{font-variant-numeric:tabular-nums;white-space:nowrap}.tbl .right{text-align:right;white-space:nowrap}.tbl tr.today td{background:var(--accent-soft)}.kbd-table{font-size:12.5px;border-collapse:collapse}.kbd-table td{padding:3px 10px 3px 0;vertical-align:top}kbd{font-family:ui-monospace,Menlo,monospace;font-size:11px;background:var(--card);border:1px solid var(--line);border-radius:4px;padding:1px 6px;white-space:nowrap}.picker{position:relative;margin-bottom:8px}.picker label{display:grid;gap:4px;font-size:12px;color:var(--muted)}.picker input{height:var(--tap);padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);font-size:13px;width:100%}.picker .picked{display:flex;align-items:center;gap:8px;height:var(--tap);padding:0 6px 0 10px;border:1px solid var(--line);border-radius:10px;background:var(--accent-soft);color:var(--ink);font-size:13px}.picker .picked b{flex:1}.picker-list{position:absolute;z-index:5;left:0;right:0;margin:4px 0 0;padding:4px;list-style:none;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);max-height:240px;overflow:auto}.picker-list button{width:100%;text-align:left;background:none;border:0;padding:6px 8px;border-radius:6px;cursor:pointer;color:var(--ink);font-size:13px;display:flex;flex-direction:column}.picker-list button small{color:var(--muted);font-size:11px}.picker-list button:hover{background:var(--accent-soft)}.center{text-align:center;margin:4px 0 8px}.relation-result{animation:pop-in .35s var(--ease-out) both}.relation-result{margin-top:12px;padding:12px;border-radius:10px;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));font-size:14px;line-height:1.5}.relation-result p{margin:0 0 8px}.timeline section{margin-bottom:14px}.timeline h3{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:0 0 4px;position:sticky;top:0;background:var(--bg);padding:4px 0}.tl-row{display:grid;grid-template-columns:minmax(160px,1fr) 3fr minmax(90px,auto);gap:10px;align-items:center;width:100%;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin:3px 0;cursor:pointer;text-align:left;color:var(--ink);font:inherit;font-size:13px}.tl-row:hover{background:color-mix(in srgb,var(--gc) 8%,var(--card))}.tl-row.selected{outline:2px solid var(--accent)}.tl-row .gb{font-size:10px;color:#fff;border-radius:999px;padding:2px 7px;font-weight:600;background:var(--gc);margin-right:4px}.tl-track{position:relative;height:10px;background:color-mix(in srgb,var(--line) 60%,transparent);border-radius:5px;overflow:hidden}.tl-track i{position:absolute;top:0;bottom:0;background:var(--gc);border-radius:5px;transform-origin:left center;animation:grow-x .6s var(--ease-out) both}.tl-row{animation:rise-in .35s var(--ease-out) both;transition:transform .15s var(--ease-out),background .15s}.tl-row:hover{transform:translate(2px)}.tl-years{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px}.form-grid .wide{grid-column:1 / -1}.field{display:grid;gap:3px;font-size:11.5px;color:var(--muted)}.field input,.field select,.field textarea{height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font-size:13px;width:100%;font-family:inherit}.field textarea{height:auto;padding:8px 10px;resize:vertical;line-height:1.45}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field .pair{display:flex;gap:6px}.field .pair input{flex:1}.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px}.export-grid .wide{grid-column:1 / -1}.export-grid fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;min-width:0}.export-grid legend{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:4px;padding:0}.export-grid .choice{display:flex;align-items:flex-start;gap:8px;font-size:13px;cursor:pointer;line-height:1.35}.export-grid .choice input{margin:3px 0 0;flex:none}.export-grid .choice small{display:block;color:var(--muted);font-size:11.5px}.export-grid .seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card);align-self:flex-start}.export-grid .seg .btn{border:0;border-radius:0;border-right:1px solid var(--line);min-width:52px}.export-grid .seg .btn:last-child{border-right:0}main.backdrop-dragon .tree{--dragon-line: #ffd86b}main.backdrop-dragon .tree li:before,main.backdrop-dragon .tree li:after,main.backdrop-dragon .tree li:only-child>.node-group:before,main.backdrop-dragon .tree ul ul:before,main.backdrop-dragon .tree ul.tight:after,main.backdrop-dragon .tree ul.tight>li:after,main.backdrop-dragon .tree ul.tight>li:first-child:after,main.backdrop-dragon .tree ul.tight>li:last-child:before{border-color:var(--dragon-line);opacity:.92}main.backdrop-dragon .tree li:first-child:before,main.backdrop-dragon .tree li:last-child:after{border-color:transparent}main.backdrop-dragon .tree{--lw: max(2.5px, calc(2px / var(--zoom)))}main.backdrop-dragon .joint-bridge:before{border-color:var(--dragon-line);opacity:.9}main.backdrop-dragon .node,main.backdrop-dragon .mm-node{border-color:#f4c440;box-shadow:0 2px 4px #00000040,0 10px 24px -8px #0000008c}main.backdrop-dragon .node .id{border-color:#f4c440}main.backdrop-dragon .mm-edge{stroke:#ffd86b;opacity:.85}main.backdrop-dragon .mm-edge.lineage{opacity:1}.export-grid .seg{flex-wrap:wrap}.export-grid .seg .btn{flex:1 1 auto}.export-grid .choice.range{flex-direction:column;align-items:stretch;gap:4px;color:var(--ink-2)}.export-grid .choice.range input{width:100%;margin:0}.export-preview{border:1px solid var(--line);border-radius:10px;background:repeating-conic-gradient(color-mix(in srgb,var(--line) 35%,transparent) 0 25%,transparent 0 50%) 0 0 / 16px 16px;display:grid;place-items:center;min-height:160px;max-height:280px;overflow:hidden}.export-preview img{max-width:100%;max-height:280px;object-fit:contain;display:block}.export-info{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--ink-2);align-items:center}.export-info .warn{color:var(--warn)}.contrib-intro{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));font-size:12.5px;line-height:1.5;color:var(--ink-2)}.contrib-section{margin-top:14px}.contrib-section h3{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.contrib-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.contrib-list li{animation:rise-in .35s var(--ease-out) both;transition:transform .15s var(--ease-out),box-shadow .15s}.contrib-list li:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.contrib-list li{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:10px 12px;display:flex;flex-direction:column;gap:4px;font-size:13px}.contrib-list .row1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.contrib-list .row1 b{flex:1;min-width:0}.contrib-list .note{font-size:12.5px;color:var(--ink-2);white-space:pre-wrap}.status-pill{font-size:11px;font-weight:600;border-radius:999px;padding:2px 9px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}.status-pill.pending{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 60%,var(--line))}.status-pill.approved{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 60%,var(--line))}.status-pill.rejected{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 60%,var(--line))}.kind-pill{font-size:11px;font-weight:600;border-radius:6px;padding:2px 7px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}.diff-table{width:100%;border-collapse:collapse;font-size:12.5px}.diff-table th,.diff-table td{text-align:left;padding:4px 6px;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}.diff-table th{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.diff-table td.before{color:var(--muted);text-decoration:line-through}.diff-table td.after{color:var(--ok);font-weight:600}.diff-table td.empty{color:var(--muted);font-style:italic;text-decoration:none}.toast{position:fixed;z-index:90;bottom:24px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--bg);padding:8px 16px;border-radius:999px;font-size:13px;box-shadow:0 10px 30px -10px #0009;animation:toast-in .35s var(--ease-spring)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,14px) scale(.96)}to{opacity:1;transform:translate(-50%) scale(1)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes drop-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes pop-in{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slide-left{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes unfold{0%{opacity:0;transform:translateY(-8px) scaleY(.94)}to{opacity:1;transform:translateY(0) scaleY(1)}}@keyframes grow-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes stripe-flow{to{background-position:-200% 0}}@keyframes pulse-ring{0%{box-shadow:0 0 color-mix(in srgb,var(--accent) 55%,transparent)}to{box-shadow:0 0 0 14px transparent}}@keyframes hit-pop{0%{transform:scale(1)}40%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes loading-bar{0%{left:-40%;width:40%}60%{left:30%;width:50%}to{left:100%;width:40%}}.sk{display:inline-block;border-radius:6px;height:12px;width:100%;vertical-align:middle;background:linear-gradient(90deg,color-mix(in srgb,var(--line) 70%,transparent) 25%,color-mix(in srgb,var(--line-2) 55%,var(--card)),color-mix(in srgb,var(--line) 70%,transparent) 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}.sk-pill{height:20px;border-radius:999px}.sk-block{height:80px;border-radius:10px}.sk-circle{border-radius:50%;width:32px;height:32px}.sk-lines{display:flex;flex-direction:column;gap:8px}.sk-cards li{gap:8px}.sk-cards .row1 .sk-text{flex:1}.sk-table td .sk{display:block}.spinner{display:inline-block;width:14px;height:14px;border-radius:50%;flex:none;vertical-align:-2px;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;animation:spin .7s linear infinite}.loading-bar{position:absolute;z-index:25;left:0;right:0;top:0;height:3px;overflow:hidden;pointer-events:none;background:color-mix(in srgb,var(--accent) 12%,transparent)}.loading-bar i{position:absolute;top:0;bottom:0;border-radius:3px;background:linear-gradient(90deg,var(--g2),var(--accent),var(--g4));animation:loading-bar 1.2s var(--ease-out) infinite}.contrib-list.is-refreshing li{opacity:.85}.page-sk{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;animation:fade-in .25s ease-out both}.page-sk-head{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--panel);border-bottom:1px solid var(--line)}.page-sk-title{display:flex;flex-direction:column;gap:6px}.page-sk-actions{margin-left:auto;display:flex;gap:6px}.page-sk-tabs{display:flex;gap:8px;padding:10px 16px 8px;background:var(--panel);border-bottom:1px solid var(--line)}.page-sk-body{padding:16px;display:flex;flex-direction:column;gap:12px;max-width:960px}.page-sk-body p{margin:0;font-size:13px}.page-sk-rows{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}.page-sk-row{display:flex;align-items:center;gap:14px;padding:11px 12px;border-bottom:1px solid var(--line)}.page-sk-row:last-child{border-bottom:0}.page-sk-row .sk-text{flex:none}.export-preview.is-loading{align-items:center}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.sk{animation:none;background:color-mix(in srgb,var(--line) 70%,transparent)}.spinner,.stats .pill.status.loading svg,.loading-bar i{animation-duration:1s!important;animation-iteration-count:infinite!important}}@media print{header,.legend,.banner,footer,.minimap,.minimap-toggle,.detail,.toast,.modal-backdrop{display:none!important}html,body{overflow:visible!important}#root,.app,.body,main{position:static!important;height:auto!important;overflow:visible!important;display:block!important}.chart-wrap{float:none!important;padding:0!important}.node{box-shadow:none!important;break-inside:avoid}body{background:#fff!important}}@media (max-width: 900px){.detail{position:absolute;inset:0 0 0 auto;width:min(420px,100%);z-index:35;box-shadow:-10px 0 40px -20px #00000080}}@media (max-width: 760px){.search-wrap{flex:0 0 min(62vw,260px);max-width:none}.filter-panel label{grid-template-columns:1fr;gap:3px}.export-grid,.form-grid,.facts.two{grid-template-columns:1fr}.bar-row{grid-template-columns:56px 1fr 34px}.tl-row{grid-template-columns:1fr;gap:4px}.tl-years{text-align:left}.minimap-toggle,.minimap{right:10px;bottom:10px}.detail-buttons .btn{flex:1 1 45%}.popover{position:fixed;left:12px;right:12px;top:auto;bottom:12px;max-height:70vh;overflow:auto}}.photo-field .photo-row{display:flex;gap:12px;align-items:flex-start}.photo-preview{flex:none;width:84px;height:84px;border-radius:50%;overflow:hidden;border:2px solid var(--line-2);background:var(--accent-soft);display:grid;place-items:center;font-size:34px;animation:pop-in .3s var(--ease-out) both}.photo-preview img{width:100%;height:100%;object-fit:cover}.photo-controls{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.photo-controls input{width:100%}.btn.file.disabled{opacity:.6;pointer-events:none}.drawer-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:8px;border:1px solid var(--line-2)}.table-avatar{width:26px;height:26px;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:6px;border:1px solid var(--line)}.table-avatar.empty{display:inline-block;background:var(--accent-soft)}.name-cell{white-space:nowrap}.detail-body .fold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px}.detail-body .fold>summary::-webkit-details-marker{display:none}.detail-body .fold>summary:before{content:"▸";font-size:10px;color:var(--muted);transition:transform .2s var(--ease-out)}.detail-body .fold[open]>summary:before{transform:rotate(90deg)}.detail-body .fold>summary h3{margin:0}.lifeline{list-style:none;margin:6px 0 0;padding:0 0 0 2px;display:flex;flex-direction:column;position:relative}.lifeline:before{content:"";position:absolute;left:62px;top:6px;bottom:6px;border-left:2px solid var(--line-2)}.lifeline .le{display:grid;grid-template-columns:52px 18px 1fr;align-items:baseline;gap:2px;font-size:12.5px;padding:3px 0}.lifeline .le-year{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:11.5px}.lifeline .le-dot{width:10px;height:10px;border-radius:50%;background:var(--gc, var(--accent));border:2px solid var(--card);box-shadow:0 0 0 2px var(--gc, var(--accent));justify-self:center;align-self:center}.lifeline .le-marriage .le-dot{background:var(--accent-2);box-shadow:0 0 0 2px var(--accent-2)}.lifeline .le-child .le-dot{background:var(--card)}.lifeline .le-death .le-dot,.lifeline .le-anniversary .le-dot{background:var(--muted);box-shadow:0 0 0 2px var(--muted)}.lifeline .le-text{color:var(--ink);overflow-wrap:anywhere}.lifeline .le-text small{color:var(--muted)}.lifeline .le-text button{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;font:inherit;font-weight:600}.lifeline .le-text button:hover{text-decoration:underline}.post-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.post-links li{display:flex;flex-direction:column;gap:1px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--card)}.post-links a{color:var(--ink);font-size:13px;font-weight:600;text-decoration:none}.post-links a:hover{color:var(--accent)}.post-links small{color:var(--muted);font-size:11px}.detail-posts .more{display:inline-block;margin-top:6px;font-size:12px;color:var(--accent);text-decoration:none}.with-spinner{display:inline-flex;align-items:center;gap:6px}@media (max-width: 900px){header{-webkit-backdrop-filter:none;backdrop-filter:none;z-index:36}header:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none}}@media (max-width: 760px){.controls:has(.popover){-webkit-mask-image:none;mask-image:none}}.modal-foot .export-info{margin-right:12px}.gen-badge{background:var(--gc);background:color-mix(in srgb,var(--gc) 34%,#17110a);color:#fff}html[data-shell=site]{font-size:calc(100% * var(--site-scale, 1))}.site{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;color:var(--ink);background:var(--bg)}.site a{color:inherit;text-decoration:none}.site .wrap{width:min(1200px,100% - 32px);margin:0 auto}.site .skip{position:absolute;left:-9999px;top:8px;z-index:200;background:var(--accent);color:var(--accent-ink);padding:8px 14px;border-radius:10px}.site .skip:focus{left:12px}.site .muted{color:var(--muted)}.site .tiny{font-size:.75rem}.site h1,.site h2,.site h3{letter-spacing:-.01em;line-height:1.2;margin:0}.site p{line-height:1.6}.site-main{flex:1;padding:28px 0 40px;overflow:visible}.sec{margin-top:40px}.hero-stat{animation:rise-in .5s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 60ms)}.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:32px;align-items:start;margin-top:40px}.home-grid.no-side{grid-template-columns:minmax(0,1fr)}.side{display:flex;flex-direction:column;gap:16px;position:sticky;top:80px}.post-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.post-grid.cols-2{grid-template-columns:repeat(2,1fr)}.post-grid.cols-4{grid-template-columns:repeat(4,1fr)}.post-grid>*{min-width:0}.post-card{animation:rise-in .45s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 40ms)}.post-card .thumb{aspect-ratio:16 / 10}.post-card.horizontal .thumb{width:40%;aspect-ratio:auto;min-height:150px}.post-grid.lead{grid-auto-rows:1fr}.post-card.featured-big{grid-column:span 2;grid-row:span 2}.post-card.featured-big .thumb{aspect-ratio:16 / 9}.post-card.compact{animation:none}.post-card.compact .thumb{width:72px;aspect-ratio:1;border-radius:8px}.post-card.sk-card{animation:none;pointer-events:none}.ann-body{font-size:.875rem;color:var(--ink-2)}.ann-body p{margin:0 0 4px}.ann-body a{color:var(--accent);font-weight:500}.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px;animation:rise-in .4s var(--ease-out) both}.page-head h1{font-size:clamp(1.625rem,3.6vw,2.375rem);font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:12px}.page-head h1 .cat-dot{width:12px;height:12px;border-radius:50%;background:var(--c, var(--accent));box-shadow:0 0 0 5px color-mix(in srgb,var(--c, var(--accent)) 18%,transparent)}.page-head p{margin:4px 0 0;color:var(--ink-2);max-width:720px}.page-head .count{margin-left:auto;color:var(--muted);font-size:.8125rem}.cat-cover{border-radius:16px;overflow:hidden;aspect-ratio:16 / 5;margin-bottom:22px;background:var(--line);border:1px solid var(--line)}.cat-cover img{width:100%;height:100%;object-fit:cover;display:block}.list-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.list-tools .spacer{flex:1}.empty-state{text-align:center;padding:60px 20px;color:var(--muted);animation:fade-in .4s both}.empty-state .ico{font-size:2.75rem;margin-bottom:8px}.post-page{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:40px;align-items:start}.post-article{min-width:0}.post-head{animation:rise-in .45s var(--ease-out) both}.post-head .cat{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--c, var(--accent))}.post-head h1{font-size:clamp(1.75rem,3.8vw,2.625rem);font-weight:700;letter-spacing:-.02em;margin:10px 0 14px;line-height:1.15}.post-head .lead{font-size:1.125rem;color:var(--ink-2);margin:0 0 16px;line-height:1.55}.post-meta{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.8125rem;color:var(--muted);align-items:center}.post-meta .avatar{width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;display:inline-grid;place-items:center;font-size:.6875rem;font-weight:700;margin-right:4px}.post-cover{margin:22px 0;border-radius:16px;overflow:hidden;border:1px solid var(--line);animation:rise-in .5s var(--ease-out) both;background:var(--line)}.post-cover img{width:100%;max-height:560px;object-fit:cover;display:block}.post-cover figcaption{font-size:.78125rem;color:var(--muted);padding:8px 12px;text-align:center;background:var(--card)}.post-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:18px 0;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.post-actions .btn.liked{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.post-actions .btn.liked svg{fill:currentColor;animation:hit-pop .4s var(--ease-spring)}.post-actions .spacer{flex:1}.font-ctl{display:inline-flex}.video-embed{position:relative;aspect-ratio:16 / 9;border-radius:16px;overflow:hidden;background:#000;margin:18px 0;border:1px solid var(--line)}.video-embed iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.rich{font-size:var(--rich-size, 1.0625rem);line-height:1.75;color:var(--ink);animation:fade-in .4s both;overflow-wrap:anywhere}.rich>:first-child{margin-top:0}.rich p{margin:0 0 1.1em}.rich h2,.rich h3,.rich h4{margin:1.6em 0 .6em;line-height:1.25;scroll-margin-top:80px;font-weight:700;letter-spacing:-.01em}.rich h2{font-size:1.5em}.rich h3{font-size:1.25em}.rich h4{font-size:1.1em}.rich img{max-width:100%;height:auto;border-radius:12px;display:block;margin:1.2em auto;border:1px solid var(--line);cursor:zoom-in}.rich figure{margin:1.2em 0}.rich figcaption{text-align:center;font-size:.85em;color:var(--muted);margin-top:-.6em}.rich a{color:var(--accent);font-weight:500}.rich a:hover{color:color-mix(in srgb,var(--accent) 80%,var(--ink))}.rich blockquote{margin:1.2em 0;padding:12px 18px;border-left:4px solid var(--accent);background:var(--accent-soft);border-radius:0 12px 12px 0;color:var(--ink-2)}.rich ul,.rich ol{padding-left:1.6em;margin:0 0 1.1em}.rich li{margin:.3em 0}.rich table{width:100%;border-collapse:collapse;margin:1.2em 0;font-size:.92em;display:block;overflow-x:auto}.rich th,.rich td{border:1px solid var(--line);padding:8px 10px;text-align:left}.rich th{background:color-mix(in srgb,var(--ink) 4%,var(--card))}.rich hr{border:0;border-top:1px solid var(--line);margin:2em 0}.rich iframe{max-width:100%;border-radius:12px}.rich mark{background:var(--hl);padding:0 3px;border-radius:3px}.rich code{background:color-mix(in srgb,var(--ink) 6%,var(--card));padding:1px 5px;border-radius:4px;font-size:.9em}.rich pre{background:#0b0e14;color:#f3f6f9;padding:14px;border-radius:12px;overflow-x:auto}.rich pre code{background:none;color:inherit}.rich ul[data-type=taskList]{list-style:none;padding-left:.4em}.rich ul[data-type=taskList] li{display:flex;gap:8px;align-items:flex-start}.rich .drop-cap:first-letter,.rich.drop-cap>p:first-of-type:first-letter{font-size:3.2em;line-height:.85;float:left;margin:.1em .12em 0 0;color:var(--accent);font-weight:700}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0}.gallery button{position:relative;padding:0;border:1px solid var(--line);background:var(--line);border-radius:12px;overflow:hidden;aspect-ratio:1;cursor:zoom-in;animation:pop-in .4s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 40ms)}.gallery button img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s var(--ease-out)}.gallery button:hover img{transform:scale(1.05)}.gallery button:nth-child(1):first-child:nth-last-child(n+5){grid-column:span 2;grid-row:span 2}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1400;background:#000000eb;display:flex;align-items:center;justify-content:center;animation:fade-in .2s both;touch-action:pan-y}.lightbox img{max-width:94vw;max-height:86vh;object-fit:contain;border-radius:8px;animation:pop-in .3s var(--ease-out) both;box-shadow:0 40px 100px #0009}.lightbox .cap{position:absolute;bottom:18px;left:50%;transform:translate(-50%);color:#eee;font-size:.8125rem;background:#00000080;padding:6px 12px;border-radius:999px;max-width:90vw;text-align:center}.lightbox .nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:0;background:#ffffff1f;color:#fff;font-size:1.5rem;cursor:pointer;transition:background .15s}.lightbox .nav:hover{background:#ffffff47}.lightbox .nav.prev{left:14px}.lightbox .nav.next{right:14px}.lightbox .x{position:absolute;top:14px;right:14px;width:42px;height:42px;border-radius:50%;border:0;background:#ffffff1f;color:#fff;font-size:1.25rem;cursor:pointer}.lightbox .counter{position:absolute;top:20px;left:20px;color:#ddd;font-size:.8125rem;font-variant-numeric:tabular-nums}.post-tags{display:flex;flex-wrap:wrap;gap:6px;margin:18px 0;align-items:center}.tag-chip{font-size:.78125rem;padding:4px 10px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);transition:background .15s,color .15s,border-color .15s}.tag-chip:hover,.tag-chip.active{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.tag-chip small{color:inherit;opacity:.7;margin-left:4px}.post-people{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0;align-items:center;font-size:.8125rem}.post-people a{padding:4px 10px;border-radius:8px;background:var(--accent-soft);color:var(--accent);font-weight:500}.post-people a:hover{background:var(--accent);color:var(--accent-ink)}.share-bar{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.share-bar .btn.icon{width:38px;height:38px;border-radius:50%}.share-bar .btn.fb{color:#1877f2}.share-bar .btn.zalo{color:#0068ff}.share-bar .btn.x{color:var(--ink)}.source-note{font-size:.78125rem;color:var(--muted);margin-top:12px}.source-note a{color:var(--accent);font-weight:500}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:28px 0}.post-nav a{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:var(--card);transition:border-color .2s,background .2s}.post-nav a:hover{border-color:var(--accent);background:var(--accent-soft)}.post-nav a small{color:var(--muted);font-size:.71875rem;text-transform:uppercase;letter-spacing:.5px}.post-nav a b{font-size:.875rem;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-nav a.next{text-align:right;align-items:flex-end}.comments{margin-top:32px}.comments h2{font-size:1.25rem;font-weight:700;margin-bottom:12px}.comment-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:10px}.comment{display:flex;gap:12px;padding:12px 14px;border-radius:12px;background:var(--card);border:1px solid var(--line);animation:rise-in .35s var(--ease-out) both}.comment.reply{margin-left:40px}.comment .avatar{flex:none;width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:700;font-size:.875rem}.comment .who{display:flex;gap:8px;align-items:baseline;font-size:.8125rem}.comment .who b{font-size:.875rem}.comment .who time{color:var(--muted);font-size:.75rem}.comment p{margin:4px 0 6px;font-size:.875rem;white-space:pre-wrap}.comment-form{display:grid;gap:10px;padding:16px;border-radius:12px;background:var(--card);border:1px solid var(--line)}.comment-form .field input,.comment-form .field textarea{height:40px;font-size:.875rem}.comment-form .field textarea{height:auto;min-height:90px}.comment-form .row-btns{justify-content:flex-end}.comment-form .ok{color:var(--ok);font-weight:600}.post-aside{display:flex;flex-direction:column;gap:16px;position:sticky;top:80px}.toc{font-size:.8125rem}.toc ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.toc a{display:block;padding:5px 10px;border-left:2px solid var(--line);color:var(--ink-2);transition:color .15s,border-color .15s}.toc a.l3{padding-left:20px;font-size:.78125rem}.toc a:hover,.toc a.active{color:var(--accent);border-color:var(--accent)}.reading-bar{position:fixed;left:0;top:0;height:3px;background:var(--accent);z-index:1200;width:var(--p, 0%);transition:width .1s linear;pointer-events:none}.search-box{display:flex;gap:8px;margin-bottom:20px}.search-box input{flex:1;height:46px;padding:0 16px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font-size:1rem}.search-box input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-box .btn{height:46px;padding:0 18px;border-radius:12px}.people-hits{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.people-hits a{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:10px;background:var(--card);border:1px solid var(--line);font-size:.84375rem;transition:border-color .15s,background .15s;animation:pop-in .3s var(--ease-out) both}.people-hits a:hover{border-color:var(--accent);background:var(--accent-soft)}.people-hits a .pid{font-size:.6875rem;color:var(--muted)}.sk-hero{height:300px;border-radius:22px}.sk-title{height:34px;width:60%}.sk-p{height:14px}.sk-img{aspect-ratio:16 / 9;border-radius:16px}@media (max-width: 1024px){.post-grid,.post-grid.cols-4{grid-template-columns:repeat(2,1fr)}.home-grid,.post-page{grid-template-columns:1fr}.side,.post-aside{position:static}.post-aside{order:2}}@media (max-width: 760px){.site .wrap{width:min(1200px,100% - 32px)}.site-main{padding-top:20px}.post-grid,.post-grid.cols-2,.post-grid.cols-4{grid-template-columns:1fr;gap:14px}.post-grid.lead{grid-auto-rows:auto}.post-card.featured-big{grid-column:auto;grid-row:auto}.post-card.horizontal{flex-direction:column}.post-card.horizontal .thumb{width:100%;aspect-ratio:16 / 10;min-height:0}.sec{margin-top:30px}.home-grid{margin-top:30px;gap:24px}.post-head h1{font-size:1.625rem}.post-head .lead{font-size:1rem}.rich{font-size:var(--rich-size, 1rem)}.gallery{grid-template-columns:repeat(2,1fr);gap:8px}.post-nav{grid-template-columns:1fr}.comment.reply{margin-left:18px}.post-cover{margin:14px -16px;border-radius:0;border-left:0;border-right:0}.post-cover img{max-height:340px}.page-head h1{font-size:1.5rem}.lightbox .nav{width:40px;height:40px}}@media (prefers-reduced-motion: reduce){.site *,.site *:before,.site *:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media print{.MuiAppBar-root,footer,.post-aside,.post-actions,.comments,.post-nav,.MuiFab-root,.reading-bar,.MuiAlert-root{display:none!important}.post-page{grid-template-columns:1fr}}.comment .staff-chip{display:inline-block;font-size:.65625rem;font-weight:700;letter-spacing:.3px;text-transform:uppercase;padding:1px 7px;border-radius:999px;background:var(--accent);color:var(--accent-ink, #fff);margin-left:6px;vertical-align:middle}@media (pointer: coarse){.site .widget a,.site .people-hits a,.site .search-hit .hit-title,.site .timeline .tl-months a,.site .post-tags .tag-chip,.site .post-people a,.site footer a{min-height:44px;display:flex;align-items:center}.site .search-hit .hit-title,.site .post-tags .tag-chip,.site .post-people a{display:inline-flex}.site .search-hit .hit-meta a,.site .post-head .cat,.site .toc a{min-height:44px;display:inline-flex;align-items:center}.site .post-actions .btn,.site .read-aloud .MuiButtonBase-root,.site .timeline .tl-head{min-height:44px}.site .post-actions .btn.icon{width:44px}.site .MuiButton-root,.site .MuiIconButton-root,.site .MuiToggleButton-root,.site .MuiChip-clickable,.MuiDrawer-root .MuiButtonBase-root{min-height:44px}.site .MuiChip-clickable .MuiChip-label{line-height:1.4}.site .MuiBreadcrumbs-li a,.site .MuiToolbar-root>a,.site .event-title a,.site a.skip{min-height:44px;display:inline-flex;align-items:center}.site .MuiIconButton-root,.site .MuiToggleButton-root{min-width:44px}.site .comment-form .btn,.site .comment-form .field input,.site .comment-form .field textarea{min-height:44px}}
