:root{--bg: #efe7db;--canvas: #f4efe6;--surface: #ffffff;--surface-soft: #faf6f0;--surface-tint: #fbf8f2;--pill: #f6ede3;--ink: #2a2320;--ink-soft: #5a5148;--muted: #6f665c;--muted-2: #9c9184;--muted-3: #b09a82;--accent: #8a4a20;--accent-2: #b4632f;--border: #ece4da;--border-2: #f0e9df;--border-3: #e6ddd0;--dash: #c6bbac;--green: #3f7d54;--red: #b05a4a;--tree-line: #a66a3f;--tree-line-strong: #7f3f18;--serif: "Lora", Georgia, serif;--sans: "Be Vietnam Pro", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#d8cdbf;border-radius:8px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}@keyframes gpPanelIn{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes gpFade{0%{opacity:0}to{opacity:1}}.serif{font-family:var(--serif)}.center{height:100%;display:grid;place-items:center;padding:24px}.login-card{width:400px;max-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:34px 32px;box-shadow:0 24px 60px -30px #3c2d1e59}.login-card .brand-kicker{font:600 10px var(--sans);letter-spacing:.16em;color:var(--accent-2);text-transform:uppercase;text-align:center}.login-card .brand-name{font:600 22px var(--serif);margin-top:6px;text-align:center;margin-bottom:22px}.field-label{font-size:11.5px;color:var(--muted);margin-bottom:5px}.field{width:100%;height:44px;border:1px solid var(--border-3);border-radius:10px;background:var(--surface-tint);padding:0 13px;font-size:13px;color:var(--ink);font-family:inherit;margin-bottom:12px}.field:focus{outline:none;border-color:var(--accent)}.btn-primary{display:block;width:100%;text-align:center;padding:13px;border:none;border-radius:10px;background:var(--accent);color:#fff;font-weight:600;font-size:13.5px;cursor:pointer;font-family:inherit}.btn-primary:hover{background:#7a3f18}.btn-primary:disabled{opacity:.6;cursor:default}.login-note{font-size:11px;color:var(--muted-3);text-align:center;margin-top:12px;line-height:1.5}.error{color:var(--red);font-size:12.5px;margin:2px 0 6px}.app{height:100vh;width:100%;display:flex;overflow:hidden;background:var(--surface-soft)}.sidebar{width:238px;flex:none;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column}.sb-head{padding:24px 21px 20px;border-bottom:1px solid var(--border-2)}.sb-kicker{font:600 10px var(--sans);letter-spacing:.16em;color:var(--accent-2);text-transform:uppercase}.sb-title{font:600 21px Georgia,serif;color:var(--ink);margin-top:7px;line-height:1.15}.sb-sub{font:11px/1.55 Arial,Helvetica Neue,sans-serif;color:var(--muted-2);margin-top:4px}.sb-nav{padding:14px 11px;display:flex;flex-direction:column;gap:3px}.nav-item{all:unset;cursor:pointer;display:flex;align-items:center;gap:12px;height:43px;padding:0 13px;border-radius:10px;font:400 12px Arial,Helvetica Neue,sans-serif;color:var(--muted);transition:background .12s,color .12s}.nav-item:hover{background:#f6ede3}.nav-item.active{background:var(--pill);color:var(--accent);font-weight:700}.nav-item .badge{margin-left:auto;font:600 10px var(--sans);background:var(--accent-2);color:#fff;padding:2px 7px;border-radius:20px}.nav-item .lock{margin-left:auto;color:var(--dash)}.sb-foot{margin-top:auto;padding:16px 17px;border-top:1px solid var(--border-2);display:flex;align-items:center;gap:10px}.avatar-sm{width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;flex:none}.sb-foot .who{line-height:1.3;min-width:0;flex:1}.sb-foot .who .n{font-weight:600;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-foot .who .r{font-size:11px;color:var(--muted-2)}.icon-btn{all:unset;cursor:pointer;width:28px;height:28px;flex:none;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--muted-3);background:#f6f1ea}.main{flex:1;display:flex;flex-direction:column;min-width:0}main.main:not(.screen-tree),.m-body:not(.screen-tree){position:relative;isolation:isolate;background-color:#faf6f0}main.main:not(.screen-tree):before,.m-body:not(.screen-tree):before{content:"";position:absolute;z-index:-1;left:50%;top:52%;width:min(82vw,900px);aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;opacity:.14;filter:contrast(1.2) saturate(.78);mix-blend-mode:multiply;background:url(/dong-son-drum.png) center / contain no-repeat;animation:bronze-drum-spin 150s linear infinite}main.main:not(.screen-tree)>:not(.topbar),.m-body:not(.screen-tree)>*{position:relative;z-index:1;background-color:transparent}@media (prefers-reduced-motion: reduce){main.main:not(.screen-tree):before,.m-body:not(.screen-tree):before{animation:none}}.topbar{height:64px;flex:none;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 26px}.topbar .t{font:600 16px var(--serif)}.topbar .s{font-size:11.5px;color:var(--muted-2);margin-top:1px}.scope-pill{margin-left:auto;display:flex;align-items:center;gap:8px;height:38px;padding:0 13px;border-radius:10px;background:var(--pill);color:var(--accent);font-weight:600;font-size:12px}.tree-wrap{flex:1;display:flex;min-height:0}.tree-col{flex:1;display:flex;flex-direction:column;min-width:0}.tree-toolbar{flex:none;display:flex;align-items:center;gap:14px;padding:11px 26px;background:var(--surface-tint);border-bottom:1px solid var(--border-2);font-size:11.5px;color:var(--muted);flex-wrap:wrap}.tree-legend,.tree-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tree-actions{width:100%;gap:8px}.tree-legend .sw{width:24px;height:14px;border-radius:4px;display:inline-block;vertical-align:middle;margin-right:7px}.tree-legend .sw.full{background:#fff;border:1px solid #d8cdbf}.tree-legend .sw.skel{background:#f1ece3;border:1px dashed var(--dash)}.tree-select{height:32px;padding:0 10px;border:1px solid var(--border-3);border-radius:8px;background:#fff;font:11.5px var(--sans);color:var(--muted)}.view-switch{display:flex;gap:2px;padding:3px;border-radius:9px;background:#f2ece3}.view-switch button{all:unset;cursor:pointer;padding:5px 10px;border-radius:7px;color:#8a7c6d;font-size:11.5px;font-weight:600}.view-switch button.active{color:var(--accent);background:#fff;box-shadow:0 1px 3px #3c2d1e14}.view-switch button:disabled{opacity:.4;cursor:default}.mini-btn{cursor:pointer;padding:6px 12px;border:1px solid var(--border-3);border-radius:8px;background:#fff;font-size:11.5px;color:var(--muted);font-family:inherit}.tree-canvas{flex:1;min-height:0;overflow:auto;background:var(--canvas);background-image:radial-gradient(#e2d9ca 1px,transparent 1px);background-size:24px 24px}.tree-canvas.pannable{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.tree-canvas.pannable.panning{cursor:grabbing}.tree-canvas.pannable [data-member-card]{cursor:pointer;-webkit-user-select:text;user-select:text}.tree-inner{min-width:min-content;padding:40px 48px}.tree-chart{will-change:transform;transition:transform .04s linear}.tree-canvas.panning .tree-chart{transition:none}.tree-search{position:relative;width:280px;z-index:15}.tree-search>input{width:100%;height:38px;border:1px solid var(--border);border-radius:9px;padding:0 13px;background:#fdfbf8;color:var(--ink);font:400 13px var(--sans);outline:none}.tree-search>input:focus{border-color:#c9a679;box-shadow:0 0 0 3px #8a4a2014}.tree-search-results{position:absolute;top:44px;right:0;width:350px;max-height:340px;overflow:auto;padding:6px;display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid var(--border);border-radius:11px;box-shadow:0 20px 40px -18px #3c281459}.tree-search-results button{all:unset;cursor:pointer;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px}.tree-search-results button:hover{background:var(--pill)}.tree-search-results button>span:last-child{min-width:0;line-height:1.25}.tree-search-results b,.tree-search-results small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-search-results b{font-size:13px;font-weight:500}.tree-search-results small{margin-top:2px;font-size:10.5px;color:var(--muted-2)}.sr-avatar{width:27px;height:27px;flex:none;border-radius:50%;display:grid;place-items:center;background:#f4ede4;color:var(--accent);font:600 11px var(--serif)}.sr-note{padding:6px 10px;color:var(--muted-3);font-size:10.5px}.lineage-crumbs{position:relative;flex:none;min-height:52px;display:flex;align-items:center;gap:9px;padding:7px 20px;background:#fdfbf8;border-bottom:1px solid var(--border-2)}.lineage-path{min-width:0;flex:1;display:flex;align-items:center;gap:9px;overflow-x:auto}.crumb{flex:none;display:flex;align-items:center;gap:9px}.crumb i{color:#d3c7b6;font-style:normal}.crumb button{all:unset;cursor:pointer;white-space:nowrap;color:var(--muted);font-size:12.5px}.crumb button:hover{color:var(--accent)}.crumb.current b{white-space:nowrap;color:var(--accent);font-size:12.5px}.crumb.current small{white-space:nowrap;color:var(--muted-2);font-size:11px}.compact-toolbar{padding-top:7px;padding-bottom:7px}.focus-window{min-width:100%;padding:30px 40px 76px;display:inline-flex;flex-direction:column;align-items:center}.focus-row{position:relative;display:flex;align-items:center}.peer-row{gap:0;align-items:stretch}.peer-member{position:relative;width:280px;flex:none;padding:24px 9px 0;display:flex;flex-direction:column;align-items:center}.peer-more{align-self:center}.peer-connector{position:absolute;z-index:0;top:0;left:-1px;right:-1px;height:2px;background:var(--tree-line)}.peer-connector.first{left:50%}.peer-connector.last{right:50%}.peer-drop{position:absolute;z-index:0;top:-1px;left:50%;width:2px;height:26px;background:var(--tree-line);transform:translate(-1px)}.peer-outgoing{position:absolute;z-index:0;left:50%;bottom:-27px;width:2px;height:28px;background:var(--tree-line);transform:translate(-1px)}.row-outgoing{z-index:0;width:2px;min-height:0;flex:1;background:var(--tree-line)}.peer-gap{width:1px;height:26px;flex:none}.child-link{position:relative;width:100%;height:40px;flex:none}.child-link-vertical{position:absolute;top:-1px;bottom:-1px;left:50%;width:2px;margin-left:-1px;background:var(--tree-line)}.peer-row .focus-card,.peer-row .focus-card.main,.peer-row .focus-card.outside{width:262px}.focus-vline{width:2px;height:26px;flex:none;background:var(--tree-line)}.focus-vline.short{height:20px}.focus-card{position:relative;z-index:2;width:262px;flex:none;padding:7px 7px 6px;display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 2px 6px -4px #3c28144d}.focus-card.main{width:286px;background:#fffaf4;border:1.5px solid var(--accent);box-shadow:0 10px 24px -14px #8a4a20b3}.focus-card.outside{width:218px;opacity:.82}.focus-person{all:unset;cursor:pointer;box-sizing:border-box;width:100%;display:flex;align-items:center;gap:8px;padding:6px 7px;color:#2a2320;-webkit-text-fill-color:currentColor;border:1px solid transparent;border-radius:8px}.focus-person:hover{background:#f7f1e8}.focus-person.selected{background:#f4e6d6;border-color:#d8b48a}.focus-person.skeleton{background:#fbf7f1}.focus-avatar{width:30px;height:30px;flex:none;border-radius:50%;display:grid;place-items:center;font:600 11px var(--serif)}.focus-person-info{min-width:0;flex:1;line-height:1.22}.focus-person-info>span{display:flex;align-items:baseline;gap:6px}.focus-person-info em{flex:none;color:#bda88f;font:normal 600 8px var(--sans);letter-spacing:.1em}.focus-person-info b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 12.5px var(--serif)}.focus-person-info small{display:block;margin-top:1px;color:#a2988c;font-size:9.5px;white-space:nowrap}.focus-spouse{border-top:1px dashed #eee3d4}.focus-card-foot{margin-top:2px;padding-top:4px;border-top:1px solid #f2ebe1;color:#a2988c;font-size:9.5px;text-align:center;white-space:nowrap}.tree-chip{all:unset;cursor:pointer;box-sizing:border-box;flex:none;padding:8px 13px;border:1px dashed #d8cdbf;border-radius:20px;background:#fff;color:var(--accent);font-size:12px;font-weight:600;white-space:nowrap}.tree-chip:hover{background:var(--pill)}.generation-shift{display:flex;justify-content:center;flex:none}.generation-shift.previous{margin-bottom:10px}.generation-shift.next{margin-top:12px}.generation-shift .tree-chip{background:#fdf6ee;border-color:#c9a074}.tree-chip.up{position:absolute;left:100%;margin-left:12px;border-color:#c9a074;background:#fdf6ee}.tree-chip.sibling{position:absolute;right:100%;margin-right:12px}.tree-chip.more{margin-top:7px;padding:6px 11px;font-size:10.5px}.generation-label{padding:5px 10px;background:var(--canvas);color:var(--muted-3);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.focus-children{display:flex;align-items:flex-start}.focus-child{position:relative;flex:none;padding:24px 11px 0;display:flex;flex-direction:column;align-items:center}.child-connector{position:absolute;z-index:0;top:0;left:-1px;right:-1px;height:2px;background:var(--tree-line)}.child-connector.first{left:50%}.child-connector.last{right:50%}.child-drop{position:absolute;z-index:0;top:-1px;left:50%;width:2px;height:26px;background:var(--tree-line);transform:translate(-1px)}.more-child{justify-content:center;min-width:150px;padding-top:26px}.no-descendants{margin-top:14px;color:#c4b6a4;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.mass-tree-foot{position:absolute;left:0;right:0;bottom:0;z-index:5;height:34px;display:flex;align-items:center;gap:16px;padding:0 20px;background:#fff;border-top:1px solid var(--border);color:var(--muted-2);font-size:11px;pointer-events:none}.mass-tree-foot span:last-child{margin-left:auto}.tree-outline{min-width:100%;padding:26px 22px 60px}.tree-pivot{position:relative;min-width:100%;min-height:100%;padding:38px;display:grid;place-items:center}.outline-list{display:flex;flex-direction:column;gap:5px;width:min(760px,100%);margin:0 auto}.outline-row{display:flex;align-items:center;transition:opacity .15s}.outline-toggle{all:unset;cursor:pointer;width:22px;height:22px;flex:none;border-radius:6px;display:grid;place-items:center;color:var(--accent);font-size:17px;transition:transform .12s}.outline-toggle.open{transform:rotate(90deg)}.outline-dot{width:22px;flex:none;position:relative}.outline-dot:after{content:"";position:absolute;left:9px;top:-2px;width:5px;height:5px;border-radius:50%;background:#cdbfad}.outline-card{all:unset;cursor:pointer;box-sizing:border-box;flex:1;min-width:0;display:flex;align-items:center;gap:11px;padding:8px 12px;border-radius:10px;background:#fff;border:1px solid var(--border);box-shadow:0 1px 3px -2px #3c2d1e33}.outline-card:hover{border-color:#c9a679}.outline-card.skeleton{background:#f1ece3;border-style:dashed;border-color:#cabfb0}.outline-card.selected{color:#fff;background:var(--accent);border-color:var(--accent);box-shadow:0 8px 18px -10px #8a4a2099}.outline-avatar{width:32px;height:32px;flex:none;border-radius:50%;display:grid;place-items:center;font:600 12px var(--serif)}.outline-info{min-width:0;flex:1;display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:0 8px}.outline-name{font:600 14px var(--serif)}.outline-spouse{font-size:10.5px;color:#7a7062;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.outline-meta{grid-column:1 / -1;margin-top:1px;font-size:10.5px;color:var(--muted-2)}.outline-card.selected .outline-spouse,.outline-card.selected .outline-meta{color:#ffffffb8}.outline-count{flex:none;font-size:10.5px;padding:2px 8px;border-radius:20px;background:var(--canvas);color:var(--muted-3)}.outline-card.selected .outline-count{color:#fff;background:#ffffff29}.pivot-stage{min-width:min-content;display:flex;flex-direction:column;align-items:center;padding:24px}.pivot-level{display:flex;justify-content:center;align-items:center;gap:16px}.pivot-level.siblings{gap:12px}.pivot-level.children-level{align-items:flex-start;flex-wrap:wrap;max-width:1000px}.pivot-line{width:2px;height:28px;background:#d8cdbf}.pivot-couple{display:flex;align-items:center;gap:10px}.pivot-couple>*+*:before{content:"⚭";position:absolute;left:-14px;color:var(--muted-3)}.pivot-card{all:unset;cursor:pointer;box-sizing:border-box;width:172px;min-height:58px;display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff;border:1px solid #e2d7c8;border-radius:14px;box-shadow:0 4px 12px -7px #3c2d1e66;position:relative}.pivot-card:hover{border-color:#c9a679}.pivot-card.main{width:232px;min-height:76px;color:#fff;background:var(--accent);border-color:var(--accent);box-shadow:0 14px 30px -14px #8a4a20b3}.pivot-card.small{width:150px}.pivot-card.skeleton:not(.main){background:#f1ece3;border-style:dashed;border-color:var(--dash)}.pivot-avatar{width:36px;height:36px;flex:none;border-radius:50%;display:grid;place-items:center;font:600 12px var(--serif)}.pivot-card.main .pivot-avatar{width:48px;height:48px;font-size:16px}.pivot-card b{display:block;font:600 13.5px var(--serif);line-height:1.2}.pivot-card.main b{font-size:16px}.pivot-card small{display:block;margin-top:3px;color:var(--muted-2);font-size:9.5px}.pivot-card.main small{color:#ffffffb8}.pivot-hint{margin-top:24px;color:var(--muted-3);font-size:10.5px}.branch{margin:.2rem 0}.persons{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.children{margin-left:20px;padding-left:18px;border-left:2px solid #e2d9ca}.person{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:9px;padding:8px 12px;border-radius:12px;background:#fff;border:1px solid #d8cdbf;box-shadow:0 1px #3c2d1e08}.person:hover{border-color:var(--accent)}.person.skel{background:#f1ece3;border-style:dashed;border-color:var(--dash);color:#8f887c}.person.sel{border-color:var(--accent);box-shadow:0 0 0 2px #8a4a2026}.person.hit{box-shadow:0 0 0 2px #d9a441}.person .av{width:30px;height:30px;flex:none;border-radius:9px;display:flex;align-items:center;justify-content:center;font:600 13px var(--serif)}.person .info{line-height:1.2}.person .nm{font:600 13.5px var(--serif);white-space:nowrap}.person .meta{font-size:10px;color:var(--muted-2);margin-top:1px}.person .dead{color:#9a3b3b}.person .lock{font-size:11px;opacity:.8}.marriage{color:#c09b6f;font-size:13px}.toggle{all:unset;cursor:pointer;background:var(--accent);color:#fff;border-radius:7px;min-width:22px;height:22px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;font-size:12px}.panel{width:360px;flex:none;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;animation:gpPanelIn .22s ease;overflow:hidden}.panel-head{padding:20px 22px 0;position:relative}.panel-close{all:unset;cursor:pointer;position:absolute;top:16px;right:16px;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--muted-2);background:#f6f1ea}.panel-id{display:flex;align-items:flex-start;gap:14px;padding-right:32px}.avatar-lg{width:58px;height:58px;flex:none;border-radius:15px;display:flex;align-items:center;justify-content:center;font:600 23px var(--serif)}.panel-name{font:600 19px var(--serif);line-height:1.15}.panel-line{font-size:11.5px;color:var(--muted-2);margin-top:4px}.status-chip{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px}.alt-names{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.alt-name{font-size:10.5px;padding:3px 9px;border-radius:20px;background:var(--pill);color:var(--accent)}.skeleton-notice{margin:18px 22px;padding:16px;border:1px dashed #d8cdbf;border-radius:12px;background:var(--surface-soft)}.skeleton-notice .h{display:flex;align-items:center;gap:8px;color:var(--accent);font-weight:600;font-size:12.5px}.skeleton-notice p{margin:9px 0 0;font-size:12px;line-height:1.6;color:var(--muted)}.tabs{display:flex;gap:4px;padding:16px 22px 0}.tab{all:unset;cursor:pointer;font-size:12.5px;font-weight:600;padding:8px 4px;margin-right:16px;color:var(--muted-2);border-bottom:2px solid transparent}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:18px 22px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}.f-k{color:var(--muted-3);font-size:10px;text-transform:uppercase;letter-spacing:.07em}.f-v{margin-top:3px;font-size:13px}.divider{height:1px;background:var(--border-2);margin:15px 0}.bio{font-size:12.5px;line-height:1.65;color:var(--ink-soft);margin-top:3px;white-space:pre-wrap;overflow-wrap:anywhere}.sens-head{display:flex;align-items:center;gap:7px;color:var(--muted-3);font-size:10px;text-transform:uppercase;letter-spacing:.07em}.sens-grid{margin-top:9px;display:grid;grid-template-columns:auto 1fr;gap:8px 14px;font-size:12.5px}.sens-grid .k{color:var(--muted-3)}.sens-locked{margin-top:9px;padding:12px 14px;background:#f6f1ea;border:1px solid var(--border-2);border-radius:10px;font-size:12px;color:var(--muted-2);line-height:1.55}.rel-item{all:unset;cursor:pointer;display:flex;align-items:center;gap:11px;padding:9px 11px;border:1px solid var(--border-2);border-radius:11px;margin-bottom:8px}.rel-item:hover{border-color:var(--accent)}.rel-item .av{width:34px;height:34px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font:600 13px var(--serif)}.screen,.events-screen{flex:1;min-height:0;overflow:auto;padding:26px}.row-gap{display:flex;gap:22px;align-items:flex-start}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px}.card h3{font:600 15px var(--serif);margin:0}.card .csub{font-size:11.5px;color:var(--muted-2);margin-top:2px}.search-box{display:flex;align-items:center;gap:9px;margin-top:16px;height:42px;padding:0 14px;border:1px solid var(--border-3);border-radius:11px;background:var(--surface-tint)}.search-box input{all:unset;flex:1;font-size:13.5px;color:var(--ink)}.result{all:unset;cursor:pointer;display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--border-2);border-radius:12px;margin-top:8px}.result:hover{border-color:var(--accent)}.result .av{width:38px;height:38px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font:600 14px var(--serif)}.result .nm{font:600 13.5px var(--serif)}.result .ln{font-size:11px;color:var(--muted-2)}.tag{margin-left:auto;font-size:10.5px;font-weight:600;padding:3px 9px;border-radius:20px}.tag.full{background:#e6f0e6;color:#3f7d54}.tag.skel{background:#f1ece3;color:#8f887c}.select{width:100%;height:40px;padding:0 12px;border:1px solid var(--border-3);border-radius:10px;background:var(--surface-tint);font-size:13px;color:var(--ink);font-family:inherit}.rel-card{max-width:560px;margin:0 auto}.picker{position:relative}.picker-btn{all:unset;box-sizing:border-box;cursor:pointer;width:100%;height:40px;padding:0 12px;display:flex;align-items:center;gap:8px;border:1px solid var(--border-3);border-radius:10px;background:var(--surface-tint);font-size:13px;color:var(--ink)}.picker-btn.open,.picker-btn:hover{border-color:var(--accent)}.picker-btn .picker-val{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-btn em{flex:none;color:var(--muted-2);font-style:normal;font-size:11px}.picker-pop{position:absolute;z-index:30;top:calc(100% + 4px);left:0;right:0;background:var(--surface, #fff);border:1px solid var(--border-3);border-radius:12px;box-shadow:0 10px 30px #50331d29;overflow:hidden}.picker-search{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--border-2)}.picker-search input{all:unset;flex:1;font-size:13px;color:var(--ink)}.picker-list{max-height:280px;overflow-y:auto;padding:0}.picker-item{all:unset;cursor:pointer;display:block;width:100%;box-sizing:border-box;padding:9px 14px;border-radius:0}.picker-item:hover{background:var(--surface-tint)}.picker-item.sel{background:var(--pill);box-shadow:inset 3px 0 0 var(--accent)}.picker-item b{display:block;font:600 13px var(--serif);color:var(--ink)}.picker-item small{display:block;font-size:11px;color:var(--muted-2);margin-top:1px}.picker-item small .nh-chip{margin-left:4px;font-weight:600}.picker-empty,.picker-more{padding:12px;font-size:12px;color:var(--muted-2);text-align:center}.rel-result{margin-top:18px;padding:16px;border-radius:13px;background:var(--pill);border:1px solid #ecdcc9}.rel-result .k{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:.07em;font-weight:600}.rel-result .term{font:600 16px var(--serif);margin-top:6px;line-height:1.35}.rel-result .rel-detail{margin-top:6px;font-size:13px;line-height:1.5;color:#5c4a38}.chain{margin-top:14px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chain .node{padding:5px 10px;border-radius:9px;background:#fff;color:var(--accent);font:600 11.5px var(--serif);border:1px solid #ecdcc9}.chain .arr{color:#c09b6f;font-size:12px}.avatar-g{background:var(--pill);color:var(--accent)}.empty{padding:20px;text-align:center;color:var(--muted-3);font-size:12.5px}.placeholder{flex:1;display:flex;align-items:center;justify-content:center;padding:26px}.placeholder .box{max-width:440px;text-align:center}.placeholder .ic{width:60px;height:60px;margin:0 auto;border-radius:16px;background:var(--pill);color:var(--accent);display:flex;align-items:center;justify-content:center}.placeholder h2{font:600 18px var(--serif);margin:16px 0 8px}.placeholder p{font-size:13px;color:var(--muted);line-height:1.6;margin:0}.app.mobile{flex-direction:column;height:100vh;height:100dvh}.m-header{flex:none;height:56px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;padding:0 16px}.m-title{min-width:0;flex:1}.m-title .t{font:600 16px var(--serif);line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scope-pill.sm{margin-left:0;height:22px;padding:0 8px;font-size:10.5px;border-radius:8px;margin-top:3px;display:inline-flex}.m-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.m-body>*{flex:1;min-height:0}.m-bottomnav{flex:none;display:flex;background:var(--surface);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px))}.m-tab{all:unset;cursor:pointer;flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;border-radius:10px;color:var(--muted-2);font-size:10px;font-weight:600}.m-tab.active{color:var(--accent);background:var(--pill)}.m-tab .ic{position:relative;display:flex}.m-tab .lk{position:absolute;right:-6px;top:-4px;color:var(--dash)}.m-tab .lb{white-space:nowrap}.panel.mobile{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;z-index:40;border-left:none;animation:gpFade .18s ease}.panel.mobile .panel-head{padding-top:14px}.panel.mobile .panel-close{position:static;width:auto;height:auto;padding:8px 12px 8px 8px;margin-bottom:10px;border-radius:9px;font-size:13px;font-weight:600;color:var(--accent);background:var(--pill)}.panel.mobile .panel-id{padding-right:4px}@media (max-width: 820px){.row-gap{flex-direction:column}.card{width:100%!important;flex:none!important}.screen,.events-screen{padding:16px}.tree-inner{padding:22px 20px}.legend{padding:10px 16px;gap:12px}.children{margin-left:12px;padding-left:12px}.person{padding:7px 10px}}.genealogy-overview{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative;overflow:hidden;background:#faf6f0;color:#2a2320;font-family:Arial,Helvetica Neue,sans-serif}.genealogy-overview button,.genealogy-overview input,.genealogy-overview select{font-family:Arial,Helvetica Neue,sans-serif}.genealogy-overview .overview-topbar{height:65px;flex:none;display:flex;align-items:center;gap:12px;padding:0 24px;background:#fff;border-bottom:1px solid #ece4da}.genealogy-overview .overview-topbar h2{margin:0;font:600 17px Georgia,serif}.genealogy-overview .overview-topbar p{margin:3px 0 0;color:#9c9184;font-size:10px}.genealogy-overview .overview-search{position:relative;width:250px;height:35px;margin-left:auto;padding:0 10px;display:flex;align-items:center;gap:7px;color:#aa9987;background:#fbf8f2;border:1px solid #e4dbcf;border-radius:9px}.genealogy-overview .overview-search input{width:100%;border:0;outline:0;color:#2a2320;background:transparent;font-size:10px}.overview-search-popover{position:absolute;z-index:20;top:41px;left:0;right:0;padding:5px;display:flex;flex-direction:column;gap:3px;background:#fff;border:1px solid #e3d9cc;border-radius:10px;box-shadow:0 14px 30px #3f281629}.overview-search-popover button{border:0;background:transparent;padding:6px;display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer;border-radius:7px}.overview-search-popover button:hover{background:#faf6f0}.overview-search-popover i,.overview-list-mode>button>i{width:29px;height:29px;flex:none;border-radius:50%;display:grid;place-items:center;background:#f6ede3;color:#8a4a20;font:600 9px Georgia,serif}.overview-search-popover b,.overview-search-popover small{display:block}.overview-search-popover b{font:600 10px Georgia,serif}.overview-search-popover small{margin-top:2px;color:#9c9184;font-size:8px}.genealogy-overview .overview-scope{height:35px;padding:0 12px;color:#8a4a20;background:#f6ede3;border:0;border-radius:9px;font-size:10px;font-weight:700}.genealogy-overview .overview-controls{min-height:52px;padding:8px 20px;display:flex;align-items:center;gap:10px;background:#fbf8f2;border-bottom:1px solid #eee5da}.genealogy-overview .overview-controls label{display:flex;align-items:center;gap:6px;color:#9c9184;font-size:9px}.genealogy-overview .overview-controls select{height:31px;padding:0 9px;color:#6f665c;background:#fff;border:1px solid #e3d9cb;border-radius:8px;font-size:10px}.overview-view-switch{display:flex;gap:2px;margin-left:auto;padding:3px;border-radius:9px;background:#eee4d8}.overview-view-switch button{height:26px;padding:0 11px;cursor:pointer;color:#8a7c6d;background:transparent;border:0;border-radius:7px;font-size:9px}.overview-view-switch button.active{color:#8a4a20;background:#fff;font-weight:700;box-shadow:0 1px 4px #3d27151f}.genealogy-overview .overview-key{display:flex;gap:12px;color:#8a7c6d;font-size:9px}.genealogy-overview .overview-key span{display:flex;align-items:center;gap:5px;white-space:nowrap}.genealogy-overview .overview-key i{width:7px;height:7px;display:block;border-radius:50%}.genealogy-overview .overview-key i.giap{background:#a65b2d}.genealogy-overview .overview-key i.at{background:#697c46}.genealogy-overview .overview-key i.nhanh-1{background:#a65b2d}.genealogy-overview .overview-key i.nhanh-2{background:#697c46}.genealogy-overview .overview-key i.nhanh-3{background:#3f6f8a}.genealogy-overview .overview-key i.nhanh-4{background:#9c4f6b}.genealogy-overview .overview-key i.relation{width:16px;height:2px;border-radius:0;background:#b4632f}.genealogy-overview .overview-export{height:31px;padding:0 12px;color:#fff;background:#8a4a20;border:0;border-radius:8px;font-size:10px;font-weight:700}.genealogy-overview .overview-stats{height:37px;flex:none;padding:0 21px;display:flex;align-items:center;color:#8a7c6d;background:#fff9f2;border-bottom:1px solid #eadfce;font-size:9px}.genealogy-overview .overview-stats>*+*{margin-left:14px;padding-left:14px;border-left:1px solid #dfd3c4}.genealogy-overview .overview-stats b{color:#6f5a45}.genealogy-overview .overview-stats small{margin-left:auto;border-left:0;color:#b09a82}.overview-stage{position:relative;flex:1;min-height:0;overflow:hidden}.genealogy-overview .overview-map{position:relative;height:100%;overflow:hidden;background-color:#f5f0e8;background-image:radial-gradient(circle at 14% 4%,rgba(196,143,84,.13),transparent 27%),radial-gradient(circle at 88% 92%,rgba(105,124,70,.1),transparent 32%),linear-gradient(#ffffffb8,#f7f1e89e)}.genealogy-overview .overview-map:before,.genealogy-overview .focus-canvas:before{content:"";position:absolute;top:52%;left:50%;z-index:0;width:min(82vw,900px);aspect-ratio:1;pointer-events:none;opacity:.14;filter:contrast(1.2) saturate(.78);mix-blend-mode:multiply;background:url(/dong-son-drum.png) center/contain no-repeat;animation:bronze-drum-spin 150s linear infinite;will-change:transform}@keyframes bronze-drum-spin{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}.genealogy-overview .overview-scroll{position:relative;z-index:1;height:100%;padding:8px 18px 28px;overflow:auto}.overview-tree-head{min-width:1040px;height:28px;display:grid;grid-template-columns:108px 1fr 1fr 1fr;align-items:center;color:#a6927d;letter-spacing:.1em;font-size:8px}.overview-tree-head span{padding-left:3px}.overview-tree-head b{font-size:8px}.overview-tree-head i{text-align:center;letter-spacing:.03em;font-style:normal}.overview-tree-head b:last-child{text-align:right}.genealogy-overview .overview-generation{min-width:1040px;min-height:106px;display:grid;grid-template-columns:108px 1fr;border-radius:8px;transition:opacity .15s}.genealogy-overview .overview-generation>header{position:relative;padding:22px 10px 10px 8px}.genealogy-overview .overview-generation>header:before{content:"";position:absolute;right:8px;bottom:0;left:8px;height:1px;background:#7452366b;pointer-events:none}.genealogy-overview .overview-generation>header:after{content:"";position:absolute;top:8px;right:0;bottom:8px;width:1px;background:#7452367a;pointer-events:none}.genealogy-overview .overview-generation>header strong{display:block;color:#6f5a45;font:600 14px Georgia,serif}.genealogy-overview .overview-generation>header span{display:block;margin-top:3px;color:#a99178;font-size:9px}.genealogy-overview .overview-generation>header b{display:inline-block;margin-top:7px;padding:2px 8px;color:#8a4a20;background:#e9ddcf;border-radius:11px;font-size:9px}.genealogy-overview .overview-branches{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;gap:6px;padding:18px 8px 8px 0}.overview-bridges{position:absolute;top:8px;left:0;right:8px;z-index:1;height:2px}.overview-bridges i{position:absolute;height:2px;background:var(--tree-line)}.overview-bridges i.active{height:3px;background:var(--tree-line-strong)}.overview-branch{position:relative;z-index:2;flex:0 1 176px;min-width:128px;max-width:240px;padding:8px 10px;cursor:pointer;text-align:left;background:#fffdfaf5;border:1px solid rgba(213,199,181,.9);border-radius:10px;box-shadow:0 3px 10px #5339230e;transition:opacity .16s,border-color .16s,box-shadow .16s,transform .16s}.overview-branch{color:#2a2320;-webkit-text-fill-color:currentColor}.overview-branch.trunk-branch{flex:0 0 260px}.genealogy-overview .overview-branches.cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:10px}.overview-branch-col{position:relative;display:flex;flex-direction:column;gap:6px;min-width:0;padding-inline:7px}.overview-branch-col+.overview-branch-col:after{content:"";position:absolute;top:0;bottom:0;left:-6px;width:1px;background:#74523652;pointer-events:none}.overview-branch-col .overview-branch{flex:none;width:100%;max-width:none;min-width:0}.genealogy-overview .overview-generation.trunk .overview-branches{justify-content:center}.overview-branch.giap{box-shadow:inset 0 2px #a65b2d,0 3px 10px #5339230e}.overview-branch.at{box-shadow:inset 0 2px #697c46,0 3px 10px #5339230e}.overview-branch.nhanh-1{box-shadow:inset 0 2px #a65b2d,0 3px 10px #5339230e}.overview-branch.nhanh-2{box-shadow:inset 0 2px #697c46,0 3px 10px #5339230e}.overview-branch.nhanh-3{box-shadow:inset 0 2px #3f6f8a,0 3px 10px #5339230e}.overview-branch.nhanh-4{box-shadow:inset 0 2px #9c4f6b,0 3px 10px #5339230e}.overview-branch:before{content:"";position:absolute;top:-19px;left:50%;width:2px;height:19px;background:var(--tree-line);transform:translate(-1px)}.overview-generation:first-of-type .overview-branch:before{display:none}.overview-branch.has-children:after{content:"";position:absolute;bottom:-10px;left:50%;width:2px;height:10px;background:var(--tree-line);transform:translate(-1px)}.overview-generation.trunk-last .overview-branch.has-children:after{bottom:-19px;height:19px}.overview-branches.cols .overview-branch:before{display:none}.overview-branches.cols.first-level .overview-branch-col>.overview-branch:first-child:before{display:block;top:-11px;left:50%;width:2px;height:11px;transform:translate(-1px)}.overview-branches.cols .overview-branch:after{display:none}.overview-branch:hover,.overview-branch.selected{border-color:#b4632f;transform:translateY(-1px);box-shadow:inset 0 2px #b4632f,0 7px 18px #50331d21}.path-active .overview-branch.unrelated{opacity:.13;box-shadow:none}.path-active .overview-branch:not(.unrelated):before,.path-active .overview-branch:not(.unrelated):after{background:#b4632f}.branch-title{display:flex;align-items:flex-start;gap:6px;margin-bottom:6px}.branch-names{display:flex;flex:1;min-width:0;flex-direction:column;gap:1px}.branch-names b{font:600 10.5px Georgia,serif;line-height:1.25;overflow-wrap:anywhere}.branch-spouse{color:#8a7d6d;font-size:9px;line-height:1.2;overflow-wrap:anywhere}.branch-title em{flex:none;margin-top:1px;color:#a8947e;white-space:nowrap;font-size:8px;font-style:normal}.overview-dots{display:flex;flex-wrap:wrap;align-content:flex-start;gap:2px}.overview-dots i{width:5px;height:5px;display:block;opacity:.86;border-radius:50%}.overview-dots i.giap{background:#a65b2d}.overview-dots i.at{background:#697c46}.overview-dots i.nhanh-1{background:#a65b2d}.overview-dots i.nhanh-2{background:#697c46}.overview-dots i.nhanh-3{background:#3f6f8a}.overview-dots i.nhanh-4{background:#9c4f6b}.overview-dots i.living{background:#e8b86c;box-shadow:inset 0 0 0 1px #8a4a2059}.genealogy-overview .member-panel{position:absolute;z-index:4;top:0;right:0;bottom:0;width:315px;padding:22px 18px 14px;display:flex;flex-direction:column;background:#fff;border-left:1px solid #e5dbcf;box-shadow:-16px 0 30px #3e281612;animation:gpPanelIn .18s ease}.genealogy-overview .member-panel>small{color:#b4632f;letter-spacing:.11em;font-size:8px}.genealogy-overview .member-panel h3{margin:6px 36px 5px 0;font:600 19px Georgia,serif}.genealogy-overview .member-panel>p{margin:0 0 12px;color:#8a7c6d;font-size:10px;line-height:1.55}.detail-close{position:absolute;top:13px;right:13px;width:28px;height:28px;cursor:pointer;color:#9c9184;background:#f6f1ea;border:0;border-radius:8px}.member-search{height:35px;padding:0 10px;display:flex;align-items:center;gap:7px;color:#aa9987;background:#fbf8f2;border:1px solid #e4dbcf;border-radius:9px}.member-search input{width:100%;border:0;outline:0;color:#2a2320;background:transparent;font-size:10px}.member-list{flex:1;min-height:0;margin-top:11px;display:flex;flex-direction:column;gap:6px;overflow:auto}.member-list>button,.overview-list-mode>button{width:100%;min-height:54px;padding:7px 9px;display:flex;align-items:center;gap:9px;cursor:pointer;color:#2a2320;text-align:left;background:#fff;border:1px solid #ebe2d7;border-radius:10px;transition:.14s}.member-list>button:hover,.overview-list-mode>button:hover{background:#fffaf5;border-color:#b4632f;transform:translate(-2px)}.member-list>button>i{width:35px;height:35px;flex:none;display:grid;place-items:center;color:#8a4a20;background:#f6ede3;border-radius:50%;font:600 10px Georgia,serif}.member-list>button>i.female{color:#a35c4a;background:#f4e7e3}.member-list button span,.overview-list-mode button span{flex:1;min-width:0}.member-list button b,.member-list button small,.overview-list-mode button b,.overview-list-mode button small{display:block}.member-list button b,.overview-list-mode button b{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#2a2320;-webkit-text-fill-color:#2a2320;font:600 13px Georgia,serif}.member-list button small,.overview-list-mode button small{margin-top:4px;color:#9c9184;font-size:10px}.member-list button em,.overview-list-mode button em{color:#b4632f;font-size:17px;font-style:normal}.genealogy-overview .member-panel>footer{padding-top:10px;color:#b09a82;text-align:center;border-top:1px solid #f0e9df;font-size:8px}.overview-list-mode{height:100%;padding:18px;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-content:start;gap:7px;overflow:auto;background:#f5f0e8}.genealogy-overview .focus-page{position:absolute;top:0;right:0;bottom:0;left:0;z-index:9;display:flex;flex-direction:column;background:#f4efe6}.focus-pagebar{height:50px;flex:none;padding:0 16px;display:flex;align-items:center;gap:13px;background:#fff;border-bottom:1px solid #e8ded2}.focus-back{height:32px;padding:0 11px;cursor:pointer;color:#8a4a20;background:#fff;border:1px solid #e4d9cc;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:5px;font-size:11px;font-weight:700;line-height:1}.focus-back>span:first-child{display:block;font-size:15px;line-height:1}.focus-breadcrumb{min-width:0;display:flex;align-items:center;gap:7px;color:#9c9184;font-size:10px}.focus-breadcrumb span,.focus-breadcrumb strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.focus-breadcrumb strong{color:#5e5043}.focus-breadcrumb b{color:#c7b8a5}.focus-history{margin-left:auto;display:flex;gap:4px}.focus-history button{width:32px;height:32px;cursor:pointer;color:#6f5a45;background:#fff;border:1px solid #e4d9cc;border-radius:8px}.focus-history button:disabled{cursor:default;opacity:.3}.focus-workspace{position:relative;flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 360px}.focus-workspace.no-panel{grid-template-columns:minmax(0,1fr)}.focus-tree-area{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column;background:linear-gradient(#fbf8f2,#f4eee5)}.genealogy-overview .focus-heading{height:40px;flex:none;padding:10px 20px;display:flex;align-items:center;background:#fffdf9e6;border-bottom:1px solid #e8ded2}.genealogy-overview .focus-heading small{color:#b4632f;letter-spacing:.13em;font-size:9px}.genealogy-overview .focus-heading h3{margin:3px 0 0;font:600 18px Georgia,serif}.genealogy-overview .focus-heading p{margin:0;color:#9c9184;font-size:10px}.genealogy-overview .focus-canvas{position:relative;flex:1;min-height:0;padding:14px 24px;overflow:auto;background-color:#f5f0e8;background-image:radial-gradient(circle at 50% 42%,rgba(196,143,84,.09),transparent 46%);background-size:auto}.genealogy-overview .focus-canvas>*{position:relative;z-index:1}.genealogy-overview .focus-canvas>.zoom-bar{position:absolute;z-index:6}.genealogy-overview .focus-level{position:relative;display:flex;flex-direction:column;align-items:center}.genealogy-overview .focus-level>label{margin-bottom:7px;color:#a89582;letter-spacing:.09em;font-size:10px}.genealogy-overview .focus-parent-row,.genealogy-overview .focus-couple,.genealogy-overview .focus-children{position:relative;display:flex;justify-content:center;align-items:center;gap:12px}.genealogy-overview .focus-node{position:relative;width:220px;min-height:68px;padding:9px 10px;display:flex;align-items:center;gap:9px;cursor:pointer;text-align:left;background:#fff;border:1px solid #dfd3c4;border-radius:12px;box-shadow:0 4px 13px #422c1b14}.genealogy-overview .focus-node:hover{border-color:#b4632f;box-shadow:0 7px 18px #4d301a24}.genealogy-overview .focus-node>i{width:38px;height:38px;flex:none;display:grid;place-items:center;color:#8a4a20;background:#f6ede3;border-radius:50%;font:600 11px Georgia,serif}.genealogy-overview .focus-node.female>i{color:#a35c4a;background:#f4e7e3}.genealogy-overview .focus-node span{min-width:0}.genealogy-overview .focus-node span b,.genealogy-overview .focus-node span small{display:block}.genealogy-overview .focus-node span b{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:600 13px Georgia,serif}.genealogy-overview .focus-node span small{margin-top:4px;color:#9c9184;font-size:10px}.genealogy-overview .focus-node>button{position:absolute;right:7px;bottom:6px;padding:4px 7px;cursor:pointer;color:#8a4a20;background:#f6ede3;border:0;border-radius:6px;font-size:8px;font-weight:700}.genealogy-overview .focus-center{width:245px;min-height:67px;cursor:default;color:#fff;background:#8a4a20;border-color:#8a4a20;box-shadow:0 10px 24px #69361840}.genealogy-overview .focus-center>i{width:44px;height:44px;color:#fff;background:#ffffff29}.genealogy-overview .focus-center span small{color:#ffffffab}.genealogy-overview .focus-center>em{position:absolute;top:7px;right:8px;padding:2px 6px;background:#ffffff24;border-radius:8px;font-size:7px;font-style:normal}.focus-spouse-wrap{display:flex;align-items:center;gap:9px}.focus-spouse-wrap>b{color:#a89582;font-weight:400}.genealogy-overview .focus-link{position:relative;height:29px;opacity:0}.genealogy-overview .focus-link.visible{opacity:1}.genealogy-overview .focus-link:before{content:"";position:absolute;top:0;left:50%;width:2px;height:100%;background:var(--tree-line);transform:translate(-1px)}.genealogy-overview .focus-link i{position:absolute;top:11px;left:calc(50% - 3px);width:7px;height:7px;background:var(--tree-line-strong);border:2px solid #f4efe6;border-radius:50%}.genealogy-overview .focus-children{max-width:100%;flex-wrap:wrap}.genealogy-overview .focus-children.multiple:before{content:"";position:absolute;top:-8px;left:10%;right:10%;height:2px;background:var(--tree-line)}.genealogy-overview .focus-child{position:relative}.genealogy-overview .focus-child:before{content:"";position:absolute;top:-9px;left:50%;width:2px;height:9px;background:var(--tree-line);transform:translate(-1px)}.genealogy-overview .focus-window>.focus-children{max-width:none;flex-wrap:nowrap;align-items:flex-start;gap:0}.genealogy-overview .focus-window>.focus-children .focus-child:before{content:none}.genealogy-overview .focus-empty{min-width:205px;padding:17px;text-align:center;color:#a89582;background:#ffffffb3;border:1px dashed #d6cabb;border-radius:10px;font-size:9px}.genealogy-overview .profile-panel{padding:20px 18px;overflow:auto;background:linear-gradient(#fff,#fcf8f3);border-left:1px solid #e5dbcf}.genealogy-overview .profile-panel>small{color:#b4632f;letter-spacing:.12em;font-size:9px}.profile-avatar{width:53px;height:53px;margin-top:15px;display:grid;place-items:center;color:#8a4a20;background:#f6ede3;border-radius:14px;font:600 16px Georgia,serif}.profile-avatar.female{color:#a35c4a;background:#f4e7e3}.genealogy-overview .profile-panel h3{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:10px 0 3px;font:600 18px Georgia,serif}.genealogy-overview .profile-panel>p{margin:0;color:#9c9184;font-size:11px}.genealogy-overview .profile-panel nav{margin-top:16px;display:flex;gap:15px;border-bottom:1px solid #eee5db}.genealogy-overview .profile-panel nav button{height:34px;padding:0;cursor:pointer;color:#9c9184;background:transparent;border:0;border-bottom:2px solid transparent;font-size:10px}.genealogy-overview .profile-panel nav button.active{color:#8a4a20;border-color:#8a4a20;font-weight:700}.genealogy-overview .profile-panel dl{margin:14px 0}.genealogy-overview .profile-panel dl>div{padding:9px 0;display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #f2ece4;font-size:10px}.genealogy-overview .profile-panel dt{color:#9c9184}.genealogy-overview .profile-panel dd{margin:0;color:#5c5045;text-align:right}.profile-relations{margin:12px 0;display:flex;flex-direction:column;gap:5px}.profile-relations button{padding:7px;display:flex;align-items:center;gap:8px;cursor:pointer;background:#fff;border:1px solid #eee5db;border-radius:8px;font-size:10px}.profile-relations i{width:27px;height:27px;display:grid;place-items:center;color:#8a4a20;background:#f6ede3;border-radius:50%;font:600 8px Georgia,serif}.profile-note{margin:14px 0;padding:16px;text-align:center;color:#9c9184;background:#fbf8f2;border:1px dashed #d6cabb;border-radius:9px;font-size:10px}.profile-center{width:100%;height:36px;cursor:pointer;color:#fff;background:#8a4a20;border:0;border-radius:9px;font-size:10px;font-weight:700}.overview-error{margin:20px;color:#b05a4a}@media (prefers-reduced-motion: reduce){.genealogy-overview .overview-map:before,.genealogy-overview .focus-canvas:before{animation:none;transform:translate(-50%,-50%)}}@media (max-width: 1100px){.genealogy-overview .overview-key{display:none}.focus-workspace{grid-template-columns:minmax(0,1fr) 360px}}@media (max-width: 900px){.genealogy-overview .overview-topbar{padding:0 14px}.genealogy-overview .overview-topbar>div:first-child p{display:none}.genealogy-overview .overview-search{width:180px}.genealogy-overview .overview-scope{display:none}.genealogy-overview .overview-controls{overflow-x:auto}.genealogy-overview .overview-controls label:nth-child(2),.genealogy-overview .overview-export{display:none}.overview-view-switch{margin-left:auto}.focus-workspace{grid-template-columns:1fr}.genealogy-overview .profile-panel{position:absolute;z-index:4;top:50px;right:0;bottom:0;width:270px;box-shadow:-12px 0 28px #412a181a}}@media (max-width: 620px){.genealogy-overview .overview-topbar{height:auto;min-height:58px;flex-wrap:wrap;padding:9px 10px}.genealogy-overview .overview-topbar h2{font-size:15px}.genealogy-overview .overview-search{order:2;width:100%;margin-left:0}.genealogy-overview .overview-controls{padding:6px 8px}.genealogy-overview .overview-controls label{display:none}.overview-view-switch{margin:0 auto}.genealogy-overview .overview-stats{padding:0 9px}.genealogy-overview .overview-stats span{display:none}.genealogy-overview .member-panel{width:100%;top:auto;height:min(62vh,520px);border-top:1px solid #e5dbcf;border-left:0;border-radius:15px 15px 0 0;box-shadow:0 -16px 30px #3e281617}.focus-pagebar{padding:0 8px}.focus-breadcrumb span:first-child,.focus-breadcrumb b:first-of-type{display:none}.focus-history{display:none}.genealogy-overview .focus-heading{height:64px;padding:10px 12px}.genealogy-overview .focus-heading p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.genealogy-overview .focus-canvas{padding:12px}.genealogy-overview .focus-parent-row,.genealogy-overview .focus-couple{flex-wrap:wrap}.genealogy-overview .focus-node,.genealogy-overview .focus-center{width:190px}.genealogy-overview .profile-panel{top:auto;left:0;width:100%;height:min(60vh,500px);border-left:0;border-top:1px solid #e5dbcf;border-radius:15px 15px 0 0;box-shadow:0 -14px 28px #412a181f}}.approval{min-height:0}.ap-list{width:340px;flex:none;border-right:1px solid var(--border);background:var(--surface-tint);display:flex;flex-direction:column}.ap-list-head{padding:18px 20px;border-bottom:1px solid var(--border-2)}.ap-list-head h3{font:600 14px var(--serif);margin:0}.ap-list-body{flex:1;overflow:auto;padding:12px}.ap-item{all:unset;cursor:pointer;display:block;width:100%;padding:13px;border-radius:12px;margin-bottom:8px;background:#fff;border:1px solid var(--border-2);box-sizing:border-box}.ap-item:hover{border-color:var(--accent)}.ap-item.active{border-color:var(--accent);background:var(--pill)}.ap-item-top{display:flex;align-items:center;gap:8px}.ap-item-top .nm{font:600 13px var(--serif);color:var(--ink)}.mini-chip{margin-left:auto;font-size:9.5px;font-weight:600;padding:2px 7px;border-radius:20px;background:#eef0e0;color:#5c6b34}.ap-item-sub{font-size:11px;color:var(--muted-2);margin-top:5px}.ap-item-time{font-size:10.5px;color:var(--muted-3);margin-top:3px}.ap-detail{flex:1;min-width:0;overflow:auto;padding:26px}.diff-head{display:flex;gap:12px;margin:16px 0 6px;font-size:11px;font-weight:600;color:var(--muted-2)}.diff-head .col{flex:1;padding-left:2px}.diff-head .arrowcol{width:34px;flex:none}.diff-head .actcol{width:76px;flex:none}.diff-row{border:1px solid var(--border);border-radius:13px;overflow:hidden;background:#fff}.diff-label{padding:8px 14px;background:var(--surface-tint);border-bottom:1px solid var(--border-2);font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.diff-body{display:flex;align-items:stretch;gap:12px;padding:14px}.diff-body .before{flex:1;font-size:13px;line-height:1.5;color:var(--muted-2)}.diff-body .after{flex:1;font-size:13px;line-height:1.5;color:var(--ink);background:#eef5ee;border-radius:7px;padding:2px 8px}.diff-body .arrowcol{width:34px;flex:none;display:flex;align-items:center;justify-content:center;color:#c09b6f}.diff-body .actcol{width:76px;flex:none;display:flex;align-items:center;justify-content:flex-end;gap:6px}.dec{all:unset;cursor:pointer;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-3);box-sizing:border-box}.dec.acc{color:var(--green)}.dec.acc.on{background:var(--green);color:#fff;border-color:var(--green)}.dec.rej{color:var(--red)}.dec.rej.on{background:#fbeae7;border-color:#e6c6bf}.btn-approve{all:unset;cursor:pointer;padding:12px 20px;border-radius:11px;background:var(--green);color:#fff;font-weight:600;font-size:13px}.btn-approve:disabled{opacity:.5;cursor:default}.btn-reject{all:unset;cursor:pointer;padding:12px 20px;border-radius:11px;border:1px solid var(--border-3);color:var(--red);font-weight:600;font-size:13px;box-sizing:border-box}.notice{margin-top:20px;padding:14px 16px;border:1px solid #ecdcc9;border-radius:12px;background:var(--pill);font-size:12.5px;color:#7a5a3a;line-height:1.6}.notice.muted{border-color:var(--border-2);background:var(--surface-tint);color:var(--muted)}.nav-item .badge.zero,.m-tab .badge{display:none}.m-tab .ic .num{position:absolute;right:-9px;top:-6px;background:var(--accent-2);color:#fff;font-size:8.5px;font-weight:700;min-width:14px;height:14px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px}@media (max-width: 820px){.approval{flex-direction:column}.ap-list{width:100%;max-height:40%}.diff-body{flex-wrap:wrap}.diff-body .actcol{width:100%;justify-content:flex-start}}.flash{background:#eef5ee;border:1px solid #cfe3cf;color:#3f6d4a;font-size:12px;padding:9px 12px;border-radius:9px;margin-bottom:12px;line-height:1.5}.privacy{margin-top:12px;padding:12px 14px;background:var(--surface-tint);border:1px solid var(--border-2);border-radius:10px}.toggle-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-soft);padding:4px 0;cursor:pointer}.toggle-row input{accent-color:var(--accent);width:15px;height:15px}.privacy-level-row{display:grid;grid-template-columns:minmax(90px,1fr) minmax(145px,1.35fr);align-items:center;gap:10px;padding:5px 0;font-size:12.5px;color:var(--ink-soft)}.privacy-level-row select{width:100%;min-width:0;padding:7px 9px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}.btn-outline{all:unset;cursor:pointer;box-sizing:border-box;display:block;width:100%;text-align:center;padding:11px;border-radius:10px;background:var(--pill);color:var(--accent);font-weight:600;font-size:12.5px}.btn-outline:hover{background:#efe0d1}.hint-sm{font-size:11px;color:var(--muted-3);line-height:1.5;margin:8px 2px 0}.form-row{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.form-row span{font-size:11px;color:var(--muted-3);text-transform:uppercase;letter-spacing:.05em}.form-row input,.form-row textarea{border:1px solid var(--border-3);border-radius:9px;background:var(--surface-tint);padding:8px 11px;font-size:13px;color:var(--ink);font-family:inherit;resize:vertical}.form-row input:focus,.form-row textarea:focus{outline:none;border-color:var(--accent)}@keyframes gpToastIn{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);background:#2a2320;color:#fff;padding:13px 22px;border-radius:11px;font-size:13px;box-shadow:0 16px 34px -14px #00000080;z-index:60;animation:gpToastIn .18s ease;max-width:420px;text-align:center}.about-cover{height:150px;background:linear-gradient(135deg,#f6ede3,#ecdcc9);display:flex;align-items:center;justify-content:center;color:var(--accent-2);font-size:11px;letter-spacing:.1em;text-transform:uppercase}.stat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-top:20px}.stat{padding:14px;border:1px solid var(--border-2);border-radius:12px;text-align:center}.stat-n{font:600 22px var(--serif);color:var(--accent)}.stat-l{font-size:11px;color:var(--muted-2);margin-top:3px}.announce{padding:13px;border:1px solid var(--border-2);border-radius:12px}.announce .a-title{font-size:13px;font-weight:600}.announce .a-body{font-size:11.5px;color:var(--muted-2);margin-top:5px;line-height:1.5}.announce .a-meta{font-size:10.5px;color:var(--muted-3);margin-top:6px}@keyframes gpModalIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2a232066;display:flex;align-items:center;justify-content:center;z-index:50;padding:24px}.modal{width:520px;max-width:100%;max-height:88vh;overflow:auto;background:#fff;border-radius:18px;padding:26px;animation:gpModalIn .16s ease}.modal-head{display:flex;align-items:center;margin-bottom:4px}.modal-head .t{font:600 17px var(--serif)}.modal-close{all:unset;cursor:pointer;margin-left:auto;width:28px;height:28px;border-radius:8px;background:#f6f1ea;color:var(--muted-2);display:flex;align-items:center;justify-content:center}.modal-hint{font-size:12px;color:var(--muted-2);margin-bottom:18px}.gp-label{display:block;font-size:11px;color:var(--muted-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}.gp-input{width:100%;box-sizing:border-box;border:1px solid var(--border-3);border-radius:9px;background:var(--surface-tint);padding:9px 11px;font-size:13px;color:var(--ink);font-family:inherit}.gp-input:focus{outline:none;border-color:var(--accent)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dropzone{height:84px;border:1.5px dashed var(--dash);border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--muted-3);font-size:11.5px;background:var(--surface-soft)}.alt-row{display:flex;gap:8px;align-items:center}.alt-row .gp-input.type{width:130px;flex:none}.alt-del{all:unset;cursor:pointer;flex:none;width:32px;height:32px;border-radius:8px;background:#f6f1ea;color:var(--red);display:flex;align-items:center;justify-content:center}.link-btn{all:unset;cursor:pointer;font-size:11.5px;font-weight:600;color:var(--accent)}.admin-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}.admin-btn{all:unset;cursor:pointer;padding:10px 16px;border-radius:10px;border:1px solid var(--border-3);color:var(--muted);font-size:12.5px;box-sizing:border-box}.admin-btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}@media (max-width: 820px){.stat-grid{grid-template-columns:1fr 1fr 1fr}.grid2{grid-template-columns:1fr}}.mini-btn.add{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.mini-btn.add:hover{background:#7a3f18}.soon-note{margin-top:14px;padding:12px 14px;background:var(--surface-tint);border:1px solid var(--border-2);border-radius:10px;font-size:12px;color:var(--muted);line-height:1.6}.acct-table{margin-top:16px;border:1px solid var(--border-2);border-radius:12px;overflow:hidden}.acct-head,.acct-row{display:grid;grid-template-columns:1.4fr 1fr 1.2fr 1.4fr 1.3fr;align-items:center}.acct-head{background:var(--surface-tint);padding:11px 16px;font-size:10.5px;font-weight:600;color:var(--muted-3);text-transform:uppercase;letter-spacing:.06em}.acct-row{padding:12px 16px;border-top:1px solid var(--border-2);font-size:12.5px}.acct-row .who{display:flex;align-items:center;gap:10px}.acct-row .who .av{width:30px;height:30px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font:600 12px var(--serif)}.acct-row .who .g{color:var(--muted-3);font-size:11px}.scope-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:8px;background:var(--pill);color:var(--accent);font-weight:600;font-size:11.5px}.st{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600}.st.muted{color:var(--muted-2)}.st .dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.6}.acts{display:flex;gap:6px;flex-wrap:wrap}.rowbtn{all:unset;cursor:pointer;padding:6px 11px;border-radius:8px;border:1px solid var(--border-3);color:var(--muted);font-size:11px;box-sizing:border-box}.rowbtn.primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.rowbtn.ok{background:var(--green);color:#fff;border-color:var(--green);font-weight:600}.rowbtn.danger{color:var(--red)}.log-row{display:flex;align-items:center;gap:13px;padding:11px 0;border-top:1px solid #f4efe6}.log-ic{width:30px;height:30px;flex:none;border-radius:8px;background:var(--pill);display:flex;align-items:center;justify-content:center;font-size:13px}.log-txt{font-size:12.5px;line-height:1.4}.log-time{margin-left:auto;font-size:11px;color:var(--muted-3);white-space:nowrap}.link-box{background:var(--surface-tint);border:1px solid var(--border-3);border-radius:9px;padding:10px 12px;font-size:11.5px;color:var(--accent);word-break:break-all;font-family:ui-monospace,monospace}@media (max-width: 820px){.acct-head{display:none}.acct-row{grid-template-columns:1fr;gap:6px}.acct-row .acts{justify-content:flex-start}}.login-sub{text-align:center;color:var(--muted-2);font-size:12px;margin:-12px 0 18px}.login-links{display:flex;justify-content:space-between;gap:10px;margin-top:12px}.login-links .link-btn{font-size:12.5px}.screen-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.screen-title{font:600 22px var(--serif);margin:0;color:var(--ink, #2a2320)}.screen-sub{font-size:12.5px;color:var(--muted-2);margin:4px 0 0;max-width:640px;line-height:1.5}.screen-head .btn-primary{width:auto;padding:10px 18px;white-space:nowrap}.section-label{font:600 10.5px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted-2);margin-bottom:10px}.upcoming{margin-bottom:22px}.upcoming-row{display:flex;gap:12px;flex-wrap:wrap}.upcoming-card{display:flex;gap:12px;background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:12px;padding:14px 16px;min-width:220px;flex:1 1 220px}.uc-days{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-right:12px;border-right:1px solid var(--border)}.uc-days b{font:700 24px var(--serif);color:var(--accent);line-height:1}.uc-days span{font-size:10px;color:var(--muted-2);margin-top:3px}.uc-type{font:600 10px var(--sans);letter-spacing:.06em;text-transform:uppercase}.uc-title{font:600 15px var(--serif);margin:2px 0}.uc-date{font-size:11.5px;color:var(--muted)}.uc-member{font-size:11px;color:var(--muted-2);margin-top:3px}.filter-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.chip{all:unset;cursor:pointer;padding:6px 14px;border-radius:999px;border:1px solid var(--border-3);font-size:12px;color:var(--muted);box-sizing:border-box}.chip.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.filter-chips .gen-select{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.filter-chips .gen-select select{all:unset;cursor:pointer;padding:6px 26px 6px 12px;border-radius:999px;border:1px solid var(--border-3);font-size:12px;color:var(--text);box-sizing:border-box;background:var(--surface, transparent);-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.event-list{display:flex;flex-direction:column;gap:10px}.event-item{display:flex;align-items:flex-start;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px}.ev-badge{color:#fff;font:600 10px var(--sans);letter-spacing:.04em;padding:4px 9px;border-radius:6px;white-space:nowrap;margin-top:2px}.ev-main{flex:1;min-width:0}.ev-title{font:600 15px var(--serif)}.ev-meta{font-size:11.5px;color:var(--muted);margin-top:2px}.ev-desc{font-size:12px;color:var(--muted-2);margin-top:6px;line-height:1.5}.ev-actions{display:flex;gap:12px;flex-shrink:0}.link-btn.danger{color:var(--accent-2)}.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-body{display:flex;flex-direction:column;margin:12px 0}.modal-body .field{margin-bottom:12px}.modal-foot{display:flex;gap:10px;justify-content:flex-end}.modal-foot .btn-primary,.modal-foot .btn-outline{width:auto;padding:10px 20px}.media-upload{background:var(--pill);border-radius:10px;padding:12px;margin-bottom:14px;display:flex;flex-direction:column;gap:8px}.media-file{font-size:12px}.media-list{display:flex;flex-direction:column;gap:6px}.media-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:9px}.media-ic{font-size:16px}.media-title{flex:1;min-width:0;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.backup-list{margin-top:6px}.backup-row{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px}.bk-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-family:var(--sans)}.bk-size{color:var(--muted-2)}@media (max-width: 820px){.screen-head{flex-direction:column}.upcoming-card{min-width:100%}.form-2col{grid-template-columns:1fr}}.sched-box{margin-top:16px;padding:14px 16px;background:var(--pill);border:1px solid var(--border);border-radius:12px}.sched-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.sched-next{font-size:11.5px;color:var(--muted)}.sched-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.sched-grid .field{padding:9px 10px}.sched-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}.sched-foot .admin-btn{flex-shrink:0}@media (max-width: 820px){.sched-grid{grid-template-columns:1fr 1fr}.sched-foot{flex-direction:column;align-items:stretch}}.login-or{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:var(--muted-2);font-size:11px}.login-or:before,.login-or:after{content:"";flex:1;height:1px;background:var(--border)}.uname{font-size:10.5px;color:var(--muted-2);font-family:var(--sans)}.guest-wrap{display:flex;min-height:100vh;background:var(--bg)}.guest-bar{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px;background:var(--surface);border-bottom:1px solid var(--border)}.guest-clan{font:600 18px var(--serif);color:var(--accent)}.guest-bar-actions{display:flex;align-items:center;gap:16px}.guest-note{font-size:11.5px;color:var(--muted-2)}.guest-canvas{flex:1;margin-top:64px;padding:24px;overflow:auto}@media (max-width: 820px){.guest-note{display:none}.guest-bar{padding:10px 14px}}.tree-topdown{display:flex;gap:56px;align-items:flex-start;justify-content:center;min-width:min-content}@media (max-width: 820px){.tree-topdown{gap:28px;justify-content:flex-start}}.tree-col{position:relative}.zoom-bar{position:absolute;right:18px;bottom:48px;z-index:6;display:flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--border);border-radius:11px;padding:5px 7px;box-shadow:0 6px 18px -8px #3c2d1e66}.zoom-bar button{all:unset;cursor:pointer;height:28px;min-width:28px;padding:0 6px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:17px;color:var(--accent);box-sizing:border-box}.zoom-bar button:hover{background:var(--pill)}.zoom-bar .z-val{font-size:12px;min-width:46px;font-weight:600}.zoom-bar .z-fit{font-size:11.5px;font-weight:600}@media (max-width: 820px){.tree-search{order:1;width:100%}.tree-search>input{height:34px}.tree-search-results{top:39px;left:0;right:auto;width:min(350px,calc(100vw - 20px))}.lineage-crumbs{min-height:38px;padding:6px 10px;flex-wrap:wrap}.lineage-path{width:100%;flex-basis:100%}.focus-window{padding:24px 18px 92px;align-items:center}.focus-row,.focus-vline,.generation-label,.focus-children{margin-left:0}.focus-card{width:226px}.focus-card.main{width:248px}.focus-card.outside{width:204px}.tree-chip.up{position:static;margin-left:8px}.tree-chip.sibling{right:auto;left:100%;margin-right:0;margin-left:8px}.mass-tree-foot{height:30px;padding:0 10px;font-size:9.5px}.mass-tree-foot span:nth-child(2){display:none}.zoom-bar{right:10px;bottom:38px}.zoom-bar .z-fit{display:none}.tree-toolbar{padding:8px 10px;gap:8px}.tree-legend{width:100%;gap:8px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:1px}.tree-legend>span{white-space:nowrap}.tree-actions{width:100%;margin-left:0;overflow:visible;flex-wrap:wrap}.tree-actions .mini-btn{white-space:nowrap}.tree-actions .mini-btn.add{order:2}.view-switch{flex:none}.tree-outline{padding:16px 10px 90px}.outline-info{grid-template-columns:1fr}.outline-spouse{grid-row:2}.outline-meta{grid-row:3}.outline-count{display:none}.tree-pivot{padding:20px 12px 100px;overflow:auto;place-items:start center}.pivot-stage{transform-origin:top center}}@media (min-width: 821px) and (max-width: 1100px){.sidebar{width:72px}.sb-head{min-height:82px;padding:17px 8px;text-align:center}.sb-kicker,.sb-sub{display:none}.sb-title{margin:0;font-size:13px;line-height:1.25}.sb-nav{padding:12px 8px}.nav-item{position:relative;justify-content:center;height:43px;padding:0;gap:0;font-size:0}.nav-item svg{width:20px;height:20px}.nav-item .badge{position:absolute;top:3px;right:2px;min-width:15px;padding:1px 4px;font-size:8px}.sb-foot{justify-content:center;padding:14px 8px}.sb-foot .who,.sb-foot .icon-btn{display:none}.genealogy-overview .overview-topbar{padding:0 16px}.genealogy-overview .overview-search{width:220px}.genealogy-overview .overview-controls{padding-inline:14px}.genealogy-overview .overview-scroll{padding-inline:12px}.overview-tree-head,.genealogy-overview .overview-generation{min-width:880px}.genealogy-overview .overview-generation{grid-template-columns:92px 1fr}.genealogy-overview .overview-generation>header{padding-inline:6px}.focus-workspace{grid-template-columns:1fr}.genealogy-overview .profile-panel{position:absolute;z-index:7;top:0;right:0;bottom:0;width:300px;box-shadow:-18px 0 34px #37231429}.focus-workspace>.panel{position:absolute;z-index:8;top:0;right:0;bottom:0;width:300px;border-left:1px solid #e5dbcf;box-shadow:-18px 0 34px #37231429}.screen,.events-screen{padding:22px}.row-gap{gap:16px}.card{padding:18px}.acct-table{overflow-x:auto}.acct-head,.acct-row{min-width:840px}}@media (max-width: 760px){html,body,#root{width:100%;max-width:100%;overflow-x:hidden}.app.mobile{min-height:540px}.app.mobile.screen-tree .m-header{display:none}.app.mobile.screen-tree .m-bottomnav{min-height:46px;padding-top:3px;padding-bottom:calc(3px + env(safe-area-inset-bottom,0px))}.app.mobile.screen-tree .m-tab{gap:1px;padding-block:4px}.app.mobile.screen-tree .m-tab .lb{font-size:8.5px}.app.mobile.screen-tree:has(.focus-page) .m-bottomnav{display:none}.genealogy-overview:has(.focus-page)>.overview-topbar,.genealogy-overview:has(.focus-page)>.overview-controls,.genealogy-overview:has(.focus-page)>.overview-stats{display:none}.m-header{height:54px;padding:0 12px}.m-title .t{font-size:15px}.scope-pill.sm{height:20px;font-size:9.5px}.m-bottomnav{gap:2px;padding:5px 4px calc(5px + env(safe-area-inset-bottom,0px))}.m-tab{min-width:0;padding:6px 1px;font-size:9px}.m-tab .lb{max-width:100%;overflow:hidden;text-overflow:ellipsis}.genealogy-overview .overview-topbar{min-height:54px;height:54px;padding:8px 12px;display:grid;grid-template-columns:minmax(0,1fr);gap:7px}.genealogy-overview .overview-topbar>div:first-child{display:none}.genealogy-overview .overview-topbar h2{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:16px}.genealogy-overview .overview-topbar p{display:none}.genealogy-overview .overview-search{order:initial;width:100%;height:38px;margin:0}.genealogy-overview .overview-search input{font-size:12px}.overview-search-popover{top:41px;max-height:260px;overflow:auto}.genealogy-overview .overview-scope{display:none}.genealogy-overview .overview-controls{min-height:45px;padding:6px 8px;gap:6px;overflow-x:auto;scrollbar-width:none}.genealogy-overview .overview-controls::-webkit-scrollbar{display:none}.genealogy-overview .overview-controls label{display:none}.overview-view-switch{flex:1;margin:0}.overview-view-switch button{flex:1;min-width:72px;height:32px}.genealogy-overview .overview-key,.genealogy-overview .overview-export{display:none}.genealogy-overview .overview-stats{height:36px;padding:0 12px;white-space:nowrap;overflow-x:auto}.genealogy-overview .overview-stats span{display:none}.genealogy-overview .overview-stats small{margin-left:auto}.genealogy-overview .overview-scroll{padding:8px 8px 26px;scrollbar-width:thin}.overview-tree-head,.genealogy-overview .overview-generation{min-width:1010px}.overview-tree-head{grid-template-columns:62px 1fr 1fr 1fr}.genealogy-overview .overview-generation{min-height:118px;grid-template-columns:62px 1fr}.genealogy-overview .overview-generation>header{z-index:2;position:relative;left:auto;padding:22px 6px 8px;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.genealogy-overview .overview-generation>header strong{font-size:13px}.genealogy-overview .overview-generation>header span{display:none}.genealogy-overview .overview-generation>header b{font-size:9px}.genealogy-overview .overview-generation.trunk .overview-branches{justify-content:flex-start;padding-left:7px}.overview-branch.trunk-branch{width:260px;max-width:calc(100vw - 80px)}.genealogy-overview .overview-branches.cols{grid-template-columns:repeat(4,minmax(220px,1fr));gap:10px}.overview-branch{min-height:82px;padding:10px 11px;border-radius:12px}.branch-title{margin-bottom:8px}.branch-names{gap:3px}.branch-names b{font-size:12px;line-height:1.3}.branch-spouse{font-size:10.5px;line-height:1.3}.branch-title em{font-size:9px}.overview-dots{gap:3px}.overview-dots i{width:6px;height:6px}.genealogy-overview .overview-map:before{width:720px;opacity:.11}.genealogy-overview .member-panel{top:auto;right:0;bottom:0;left:0;width:auto;height:min(72dvh,590px,100%);max-height:100%;padding:26px 16px 12px;border:0;border-radius:18px 18px 0 0;box-shadow:0 -18px 42px #33211338}.member-list>button{min-height:61px}.member-list button b{font-size:14px}.focus-pagebar{height:54px;padding:0 10px;gap:7px}.focus-back{width:38px;padding:0}.focus-back-label{display:none}.focus-breadcrumb{flex:1}.focus-breadcrumb span,.focus-breadcrumb b{display:none}.focus-breadcrumb strong{display:block;font-size:11px}.focus-history{display:none}.genealogy-overview .focus-heading{height:42px;padding:9px 13px}.genealogy-overview .focus-heading p{overflow:hidden;white-space:normal;font-size:9px;line-height:1.35}.genealogy-overview .focus-canvas{padding:14px 12px 72px;overflow:auto}.genealogy-overview .focus-canvas:before{width:690px;opacity:.08}.genealogy-overview .profile-panel{top:auto;right:0;bottom:0;left:0;width:auto;height:min(68dvh,560px);padding:27px 18px 18px;border:0;border-radius:18px 18px 0 0;box-shadow:0 -18px 42px #3321133d}.panel.mobile{position:fixed;z-index:40;inset:auto 0 0;width:auto;height:min(78dvh,640px);max-height:calc(100dvh - env(safe-area-inset-top,0px));padding-bottom:env(safe-area-inset-bottom,0px);border:0;border-radius:18px 18px 0 0;box-shadow:0 -18px 42px #3321133d;animation:gpMobileSheetUp .22s ease}.panel.mobile .panel-head{flex:none;padding:14px 14px 0}.panel.mobile .panel-close{margin-bottom:8px}.panel.mobile .tabs{flex:none;gap:0;padding:10px 10px 0;overflow-x:auto;scrollbar-width:none}.panel.mobile .tabs::-webkit-scrollbar{display:none}.panel.mobile .tab{flex:1 0 auto;min-width:72px;margin-right:0;padding:9px 5px;text-align:center;white-space:nowrap}.panel.mobile .tab-body{padding:14px 14px 24px}.panel.mobile .privacy{padding:12px}.panel.mobile .privacy-level-row{grid-template-columns:minmax(0,1fr);gap:5px;padding:7px 0}.panel.mobile .privacy-level-row select{min-height:40px}@keyframes gpMobileSheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.zoom-bar{right:10px;bottom:12px}.screen,.events-screen{padding:14px 12px 24px}.screen-head{gap:10px;margin-bottom:14px}.screen-title{font-size:19px}.screen-sub{font-size:11.5px}.card{padding:16px;border-radius:13px}.row-gap{gap:12px}.stat-grid{gap:8px}.stat{padding:11px 6px}.event-item{gap:10px;padding:12px}.ev-actions{flex-direction:column;gap:6px}.upcoming-card{padding:12px}.approval{min-height:100%}.ap-list{max-height:38%}.ap-list-head{padding:14px 16px}.ap-detail{padding:16px 12px 28px}.diff-head{display:none}.diff-body{gap:8px;padding:12px}.acct-table{overflow:visible;border:0}.acct-row{margin-bottom:10px;padding:13px;background:#fff;border:1px solid var(--border-2);border-radius:11px}.modal-overlay{padding:12px;align-items:flex-end}.modal{max-height:88dvh;padding:20px 16px calc(20px + env(safe-area-inset-bottom,0px));border-radius:18px 18px 0 0}}@media (max-width: 390px){.genealogy-overview .overview-topbar h2{font-size:15px}.genealogy-overview .overview-stats small{display:none}.overview-tree-head,.genealogy-overview .overview-generation{min-width:980px}.m-tab{font-size:8.5px}}
