@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/BeVietnamPro-400-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/BeVietnamPro-400-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/BeVietnamPro-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/BeVietnamPro-600-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/BeVietnamPro-600-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/BeVietnamPro-600-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/BeVietnamPro-700-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/BeVietnamPro-700-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/BeVietnamPro-700-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/Fraunces-400-700-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-optical-sizing:auto}@font-face{font-family:Fraunces;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/Fraunces-400-700-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-optical-sizing:auto}@font-face{font-family:Fraunces;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/Fraunces-400-700-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-optical-sizing:auto}:root{--text-xs: .75rem;--text-sm: .85rem;--text-base: .95rem;--text-lg: 1.1rem;--text-xl: 1.3rem;--display-sm: 1.3rem;--display-md: 1.5rem;--display-lg: 1.9rem;--display-xl: 3rem;--measure-prose: 62ch;--bg: #faf8f5;--bg-raised: #ffffff;--bg-sunken: #f1ede7;--ink: #2b2a27;--ink-soft: #5f5a54;--ink-faint: #726c64;--line: #e5e0d8;--line-strong: #d1cabf;--accent: #3d6b54;--accent-strong: #2e5240;--accent-soft: #e3ede7;--accent-ink: #ffffff;--gold: #b98a2f;--paternal: #4a67a1;--maternal: #b4592f;--danger: #a53f3f;--hist-vietnam: #b8322a;--hist-us: #2f5fbf;--hist-world: #6b7280;--hist-ink: #ffffff;--danger-soft: #f6e4e4;--warn-soft: #f7eedb;--info-soft: #e4ecf4;--indicator-ink: #3d6b54;--male-ink: #1e6fd9;--female-ink: #d8309a;--facebook: #1877f2;--other-gender-ink: #7a4bbd;--shadow-sm: 0 1px 1px rgba(58, 48, 38, .04), 0 2px 4px rgba(58, 48, 38, .05);--shadow-md: 0 1px 2px rgba(58, 48, 38, .05), 0 4px 12px rgba(58, 48, 38, .08);--shadow-lg: 0 2px 6px rgba(58, 48, 38, .08), 0 16px 40px rgba(58, 48, 38, .16);--shadow-lift: 0 2px 4px rgba(58, 48, 38, .06), 0 8px 20px rgba(58, 48, 38, .1);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--font-display: "Fraunces", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-body: "Be Vietnam Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ring: 0 0 0 3px color-mix(in srgb, var(--accent) 24%, transparent);--wash: color-mix(in srgb, var(--accent-soft) 62%, transparent);--nav-h: 60px;--bg-card: var(--bg-raised);--border-soft: var(--line);--muted: var(--ink-faint);color-scheme:light}:root[data-theme=dark]{--bg: #191c1a;--bg-raised: #262b27;--bg-sunken: #131614;--viewer-stage: #101310;--ink: #e8e5e0;--ink-soft: #b4b0a9;--ink-faint: #a19c93;--line: #333834;--line-strong: #464c47;--accent: #6fa287;--accent-strong: #8ab8a0;--accent-soft: #263329;--accent-ink: #10140f;--gold: #d3a854;--paternal: #93a8d8;--maternal: #e0987a;--indicator-ink: #9fd0b6;--male-ink: #6fb4ff;--female-ink: #ff7ac8;--facebook: #5aa0f6;--other-gender-ink: #bda2f0;--danger: #d47f7f;--hist-vietnam: #e07b74;--hist-us: #7fa3ec;--hist-world: #a1a7b3;--hist-ink: #17191c;--danger-soft: #3a2626;--warn-soft: #37301f;--info-soft: #23303c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .32);--shadow-md: 0 2px 10px rgba(0, 0, 0, .4);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .45), 0 20px 48px rgba(0, 0, 0, .55);--shadow-lift: 0 4px 16px rgba(0, 0, 0, .45);color-scheme:dark}.av-0{--av-bg: #f3dde2;--av-ink: #8a4257}.av-1{--av-bg: #f6e0d3;--av-ink: #8f5330}.av-2{--av-bg: #f3e6cb;--av-ink: #7d6120}.av-3{--av-bg: #e6ecd4;--av-ink: #5b6a31}.av-4{--av-bg: #d9e9de;--av-ink: #3d6b54}.av-5{--av-bg: #d5e8e6;--av-ink: #2f6560}.av-6{--av-bg: #d9e4ee;--av-ink: #3a5c78}.av-7{--av-bg: #dfe1f1;--av-ink: #474e83}.av-8{--av-bg: #ebdcee;--av-ink: #6b4272}.av-9{--av-bg: #e9e0d7;--av-ink: #6b5241}:root[data-theme=dark] .av-0{--av-bg: #3d2a30;--av-ink: #e9adbc}:root[data-theme=dark] .av-1{--av-bg: #3e2e26;--av-ink: #e8b795}:root[data-theme=dark] .av-2{--av-bg: #3a3324;--av-ink: #ddc684}:root[data-theme=dark] .av-3{--av-bg: #2f3626;--av-ink: #c2d195}:root[data-theme=dark] .av-4{--av-bg: #26362d;--av-ink: #9fd0b6}:root[data-theme=dark] .av-5{--av-bg: #233634;--av-ink: #92cfc9}:root[data-theme=dark] .av-6{--av-bg: #26323d;--av-ink: #a4c6e2}:root[data-theme=dark] .av-7{--av-bg: #2b2e40;--av-ink: #b0b5e6}:root[data-theme=dark] .av-8{--av-bg: #362a3a;--av-ink: #d3aeda}:root[data-theme=dark] .av-9{--av-bg: #37302a;--av-ink: #d5bda6}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background-color:var(--bg);background-image:radial-gradient(1100px 420px at 18% -8%,var(--wash),transparent 72%);background-repeat:no-repeat;color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--font-display);font-weight:600;margin:0;font-optical-sizing:auto;letter-spacing:-.012em;line-height:1.2}h1{font-size:2rem;font-weight:600}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line-strong);background:var(--bg-raised);color:var(--ink);border-radius:var(--radius-sm);padding:9px 16px;font-size:var(--text-base);font-weight:500;cursor:pointer;box-shadow:0 1px 1px #3a30260a;transition:background .15s,border-color .15s,box-shadow .15s,transform .06s;min-height:40px}.btn:hover{background:var(--bg-sunken);border-color:color-mix(in srgb,var(--ink) 22%,var(--line-strong));box-shadow:var(--shadow-sm)}.btn svg,.navlink svg,.indicator svg,.quick-edit-label svg{display:block;flex-shrink:0}.btn:focus-visible,.navlink:focus-visible{outline-offset:1px}.btn-primary:focus-visible,.segmented-btn[aria-checked=true]:focus-visible,.segmented-btn[aria-selected=true]:focus-visible,.lang-switch button[aria-checked=true]:focus-visible,[aria-pressed=true].btn-primary:focus-visible{outline:none;box-shadow:0 0 0 2px var(--bg-raised),0 0 0 4px var(--accent-strong)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:default;transform:none}.btn-primary{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,#fff) 0%,var(--accent) 60%,var(--accent-strong) 100%);border-color:var(--accent-strong);color:var(--accent-ink);box-shadow:inset 0 1px #ffffff2e,0 1px 2px #2e524040;font-weight:600}.btn-primary:hover{background:linear-gradient(180deg,var(--accent) 0%,var(--accent-strong) 100%);border-color:var(--accent-strong);box-shadow:inset 0 1px #ffffff1f,0 3px 8px #2e524047}:root[data-theme=dark] .btn-primary{background:linear-gradient(180deg,var(--accent-strong) 0%,var(--accent) 100%);border-color:var(--accent);box-shadow:none}:root[data-theme=dark] .btn-primary:hover{background:var(--accent-strong)}.btn-danger{color:var(--danger);border-color:var(--danger);background:transparent}.btn-danger:hover{background:var(--danger-soft)}.btn-ghost{border-color:transparent;background:transparent;box-shadow:none}.btn-ghost:hover{background:var(--bg-sunken)}.btn-sm{padding:5px 11px;min-height:32px;font-size:var(--text-sm)}.btn-lg{padding:13px 22px;font-size:var(--text-base);min-height:48px}.btn{white-space:nowrap}.keycap{display:inline-block;padding:2px 8px;border-radius:6px;border:1px solid var(--line-strong);box-shadow:inset 0 -1px 0 var(--line-strong);background:var(--bg-sunken);color:var(--ink);font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;white-space:nowrap}.shortcut-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--line)}.shortcut-row:last-child{border-bottom:none}.input,.select,.textarea{width:100%;border:1px solid var(--line-strong);background:var(--bg-raised);color:var(--ink);border-radius:var(--radius-sm);padding:9px 12px;font-size:var(--text-base);font-family:inherit;min-height:40px}.input:disabled,.select:disabled,.textarea:disabled{background:var(--bg-sunken);color:var(--ink-faint);border-color:var(--line);cursor:not-allowed}.field:has(.input:disabled)>label,.field:has(.select:disabled)>label,.field:has(.textarea:disabled)>label{color:var(--ink-faint)}.btn-primary:disabled,.btn-danger:disabled{opacity:1;background:var(--bg-sunken);color:var(--ink-faint);border-color:var(--line);box-shadow:none}.select{appearance:none;-webkit-appearance:none;padding-right:34px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:right 16px center,right 11px center;background-size:5px 5px,5px 5px;background-repeat:no-repeat;cursor:pointer}.select::-ms-expand{display:none}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}.input::placeholder,.textarea::placeholder{color:color-mix(in srgb,var(--ink-faint) 80%,transparent)}.textarea{resize:vertical;min-height:90px}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field>label{font-size:var(--text-sm);font-weight:600;color:var(--ink-soft)}.field-hint{font-size:var(--text-sm);color:var(--ink-faint)}.muted-faint{color:var(--ink-faint);font-style:italic}.link-inline{text-decoration:underline;text-underline-offset:2px}.person-gaps{max-width:720px;margin:14px 0 0;font-size:var(--text-sm);color:var(--ink-soft)}.gap-prompt{border:none;background:none;padding:0;font:inherit;color:var(--accent);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.gap-prompt:hover{color:var(--accent-strong, var(--accent))}.unlock-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:20px}.unlock-card{max-width:360px;width:100%;text-align:center}.tree-coverage{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:7;display:flex;flex-direction:column;align-items:center;max-width:min(400px,calc(100vw - 32px))}.tree-coverage-pill{display:flex;align-items:center;gap:7px;border:1px solid var(--line-strong);background:var(--bg-raised);color:var(--ink-soft);border-radius:999px;padding:6px 14px;font:inherit;font-size:var(--text-sm);cursor:pointer;box-shadow:var(--shadow-md);white-space:nowrap}.tree-coverage-pill:hover{color:var(--ink);border-color:var(--accent)}.tree-coverage-panel{margin-top:6px;width:100%;background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);overflow:hidden}.tree-coverage-row{display:flex;width:100%;border:none;background:none;padding:10px 14px;font:inherit;color:var(--ink);cursor:pointer;border-bottom:1px solid var(--line)}.tree-coverage-row:hover{background:var(--bg-sunken)}.tree-coverage-row:hover .field-hint{color:var(--ink-soft)}.tree-coverage-note{padding:10px 14px;font-size:var(--text-sm);color:var(--ink-soft);border-bottom:1px solid var(--line)}.tree-coverage-panel>:last-child{border-bottom:none}@media(max-width:1150px){.tree-coverage{top:58px}}@media(max-width:900px){.tree-coverage-tucked{display:none}}.btn-danger-ghost:hover{color:var(--danger);border-color:var(--danger)}.card{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.card-pad{padding:20px}.card-interactive{transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease}.card-interactive:hover{box-shadow:var(--shadow-lift);border-color:var(--line-strong);transform:translateY(-1px)}.page{max-width:1080px;margin:0 auto;padding:30px 22px 96px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px;flex-wrap:wrap}.page-header h1 svg{color:var(--accent)}.page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}@media(max-width:640px){.page-actions>[role=tablist]{flex-basis:100%}}.chip{display:inline-flex;align-items:center;gap:5px;background:var(--bg-sunken);border-radius:999px;padding:3px 11px;font-size:var(--text-sm);font-weight:500;color:var(--ink-soft);border:1px solid transparent;letter-spacing:.005em}.chip-accent{background:var(--accent-soft);color:var(--accent)}.chip-warn{background:var(--warn-soft);color:var(--gold)}.chip-danger{background:var(--danger-soft);color:var(--danger)}.chip-fact{background:transparent;border-color:var(--line-strong);color:var(--ink);font-weight:500}.chip-muted{background:transparent;border-color:var(--line);color:var(--ink-faint);font-size:var(--text-xs);padding:2px 9px}.empty{text-align:center;padding:60px 24px;color:var(--ink-soft)}.empty-page{min-height:min(68vh,620px);display:grid;place-content:center}.empty-medallion{width:92px;height:92px;margin:0 auto 18px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--accent);background:radial-gradient(circle at 50% 40%,var(--accent-soft),color-mix(in srgb,var(--accent-soft) 55%,var(--bg)));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 12%,transparent)}.empty-medallion svg{opacity:.85}.empty h3{color:var(--ink);margin-bottom:8px;font-size:var(--text-xl)}.empty p{margin:0 auto 20px;max-width:46ch;line-height:1.6}.dialog-backdrop{position:fixed;inset:0;background:#14120f6b;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;animation:fadeIn .15s ease}.dialog{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:min(86vh,100% - 24px);display:flex;flex-direction:column;animation:slideUp .18s ease}.dialog-wide{max-width:760px}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 12px;border-bottom:1px solid var(--line)}.dialog-body{padding:16px 20px;overflow-y:auto}.dialog-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px 18px;border-top:1px solid var(--line)}@keyframes fadeIn{0%{opacity:0}}@keyframes slideUp{0%{opacity:0;transform:translateY(14px)}}@media(max-width:640px){.dialog-backdrop{align-items:flex-end;padding:0}.dialog{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:92dvh}}.toasts{position:fixed;bottom:calc(var(--nav-h) + 16px);left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:999px;font-size:var(--text-base);box-shadow:var(--shadow-lg);animation:slideUp .2s ease;pointer-events:auto;max-width:min(480px,calc(100vw - 40px))}.toast-error{background:var(--danger);color:#fff}.toast-action{margin-left:12px;background:transparent;border:1px solid color-mix(in srgb,var(--bg) 55%,transparent);color:inherit;border-radius:999px;padding:3px 12px;font:inherit;font-weight:700;cursor:pointer}.toast-action:hover{background:color-mix(in srgb,var(--bg) 18%,transparent)}.shell{display:flex;flex-direction:column;height:100dvh}.shell-main{flex:1;overflow-y:auto;position:relative}.shell-main:focus{outline:none}.skip-link{position:absolute;left:12px;top:-60px;z-index:100;padding:10px 16px;border-radius:0 0 10px 10px;background:var(--accent);color:var(--accent-ink);font-weight:600;text-decoration:none;transition:top .15s ease}.skip-link:focus{top:0}.topbar{display:flex;align-items:center;gap:16px;padding:0 18px;height:60px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg-raised) 86%,transparent);backdrop-filter:saturate(1.3) blur(12px);-webkit-backdrop-filter:saturate(1.3) blur(12px);flex-shrink:0;z-index:20}.topbar-logo{display:flex;align-items:center;gap:9px;font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--ink);text-decoration:none}.topbar-logo:hover{text-decoration:none}.topbar-logo svg{color:var(--accent-ink);background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 85%,#fff),var(--accent-strong));width:34px;height:34px;padding:6px;border-radius:10px;box-shadow:inset 0 1px #ffffff38,0 2px 6px #2e524047}.topbar-logo{letter-spacing:-.01em}.topbar-nav{display:none;gap:4px}.topbar-spacer{flex:1}.topbar-actions{display:flex;gap:8px;align-items:center}.app-switcher-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:var(--text-sm);font-weight:600;text-decoration:none;background:var(--bg-sunken);color:var(--ink);border:1px solid var(--line);transition:background .15s ease,color .15s ease,border-color .15s ease;line-height:1}.app-switcher-btn:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);text-decoration:none}@media(max-width:640px){.app-switcher-btn .app-switcher-text{display:none}.app-switcher-btn{padding:8px}}.navlink{display:flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;color:var(--ink-soft);font-weight:500;font-size:var(--text-base);text-decoration:none;transition:background .14s ease,color .14s ease}.navlink:hover{background:var(--bg-sunken);color:var(--ink);text-decoration:none}.navlink.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.bottombar{display:flex;border-top:1px solid var(--line);background:color-mix(in srgb,var(--bg-raised) 90%,transparent);backdrop-filter:saturate(1.3) blur(12px);-webkit-backdrop-filter:saturate(1.3) blur(12px);height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);flex-shrink:0;z-index:20}.bottombar .navlink{flex:1;flex-direction:column;gap:3px;font-size:var(--text-xs);padding:8px 4px;border-radius:0;justify-content:center}.bottombar .navlink.active{background:transparent;color:var(--accent)}.bottombar .navlink.active svg{background:var(--accent-soft);border-radius:999px;padding:3px 12px;box-sizing:content-box}@media(max-width:899px){.topbar{gap:10px;padding:0 12px}.topbar-actions{gap:2px}.topbar-actions .btn{padding-left:9px;padding-right:9px}.topbar-settings{display:none}}@media(min-width:900px){.topbar-nav{display:flex}.bottombar{display:none}}.avatar{border-radius:50%;background:var(--av-bg, var(--accent-soft));color:var(--av-ink, var(--accent));display:flex;align-items:center;justify-content:center;font-weight:600;font-family:var(--font-display);letter-spacing:.01em;overflow:hidden;flex-shrink:0;-webkit-user-select:none;user-select:none;box-shadow:inset 0 0 0 1px #2b2a2714}.avatar.avatar-circle{border-radius:50%}.avatar.avatar-rounded{border-radius:22%}.avatar.avatar-square{border-radius:0}.avatar{position:relative}.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.person-name{font-family:var(--font-display);font-weight:600;letter-spacing:.005em}.person-row{display:flex;align-items:center;gap:13px;padding:11px 14px;border-radius:var(--radius-md);cursor:pointer;color:inherit;text-decoration:none;transition:background .14s ease}.person-row:hover{background:var(--bg-sunken);text-decoration:none}.person-row-lg{padding:14px 18px;gap:15px}.person-row-name{font-weight:600;font-size:var(--text-base)}.person-row-sub{font-size:var(--text-sm);color:var(--ink-soft)}.list-letter{position:sticky;top:0;z-index:1;margin:0;padding:10px 18px 4px;font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:0;text-transform:none;color:var(--accent);background:var(--bg-raised);border-top:none;border-bottom:1px solid var(--line-strong)}section:first-of-type>.list-letter{border-top:none}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.photo-tile{position:relative;aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden;background:var(--bg-sunken);border:none;padding:0;cursor:pointer}.photo-tile img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}.photo-tile:hover img{transform:scale(1.04)}.viewer{position:fixed;inset:0;height:100dvh;z-index:100;background:var(--viewer-stage, #101310);display:flex;flex-direction:column;animation:fadeIn .15s ease}.viewer-top{display:flex;align-items:center;justify-content:space-between;padding:6px 10px 6px 16px;color:#fff;flex-shrink:0;background:var(--viewer-stage, #101310);border-bottom:1px solid rgba(255,255,255,.08)}.viewer-heading{margin:0;font-size:var(--text-base);font-weight:600;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-close{color:#fff}.viewer-close:hover{background:#ffffff1f}.viewer-stage{flex:1;min-height:0;display:flex;align-items:flex-start;justify-content:center;position:relative;padding:6px 8px 0}.viewer-picture{max-width:100%;max-height:100%;min-height:0;display:flex;flex-direction:column;align-items:center;gap:8px}.viewer-picture>img,.viewer-picture .face-frame{max-width:100%}.viewer-picture>img,.viewer-picture .face-frame img{width:auto;max-width:100%;max-height:calc(100vh - 320px);border-radius:10px}.viewer-picture .face-frame{display:inline-block}.viewer-picture>.stack{width:100%;align-items:center}.viewer-picture>.stack>.row{justify-content:center}.viewer-picture .stack>.row .muted{color:#ffffffbf}.viewer-arrow{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:none;background:#ffffff29;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}.viewer-arrow:hover:not(:disabled){background:#ffffff47}.viewer-arrow:disabled{opacity:.35;cursor:default}.viewer-arrow-prev{left:10px}.viewer-arrow-next{right:10px}.viewer-panel{flex:0 1 auto;min-height:0;background:var(--bg-raised);color:var(--ink);border-top:1px solid var(--line);padding:10px 14px calc(12px + env(safe-area-inset-bottom));max-height:46vh;overflow-y:auto;width:100%;max-width:900px;margin:0 auto;border-radius:14px 14px 0 0}.viewer-people{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}.viewer-person{display:inline-flex;align-items:center;gap:2px;padding-right:2px}.viewer-person-link{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:5px;padding:6px 4px 6px 6px}.viewer-person-link:hover{text-decoration:underline}.viewer-person-remove{min-height:0;padding:0 4px}.viewer-actions .btn{min-height:36px}.viewer-tag .input{width:100%}.viewer-caption{margin:8px 0 2px}.viewer-actions{gap:6px;flex-wrap:wrap;margin-top:8px}.viewer-hint{margin:6px 0 0}@media(max-width:899px){.viewer-person-remove{min-width:36px;min-height:36px}.face-clear{padding:9px;top:-18px;right:-18px;background-clip:content-box}}@media(max-width:640px){.viewer-arrow{display:none}.viewer-picture>img,.viewer-picture .face-frame img{max-height:calc(100dvh - 420px)}.viewer-panel{max-height:48vh}}.photo-tile-fallback{display:none;position:absolute;inset:0;margin:auto;color:var(--ink-faint);opacity:.55}.photo-tile-blank{background:var(--bg-sunken)}.photo-tile-blank img{display:none}.photo-tile-blank .photo-tile-fallback{display:block}.photo-tile-action{position:absolute;top:6px;right:6px;width:28px;height:28px;border-radius:50%;border:none;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg) 82%,transparent);color:var(--ink);cursor:pointer;opacity:0;transition:opacity .15s}.photo-tile-wrap{position:relative}.photo-tile-wrap:hover .photo-tile-action,.photo-tile-wrap:focus-within .photo-tile-action{opacity:1}.photo-tile-action:hover{background:var(--bg);color:var(--danger, #b3261e)}.photo-tile-current{outline:3px solid var(--accent);outline-offset:-3px}.crop-editor{display:flex;flex-direction:column;align-items:stretch}.crop-viewport{position:relative;margin:0 auto;overflow:hidden;border-radius:var(--radius-md);background:var(--bg-sunken);cursor:grab;touch-action:none;outline:none}.crop-viewport:active{cursor:grabbing}.crop-viewport:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}.crop-mask{position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 9999px color-mix(in srgb,var(--bg) 62%,transparent);pointer-events:none;border:2px solid color-mix(in srgb,var(--accent) 70%,transparent)}.crop-zoom{accent-color:var(--accent);min-width:80px}.dropzone-overlay{position:fixed;inset:0;z-index:300;background:color-mix(in srgb,var(--accent) 14%,var(--bg) 86%);border:3px dashed var(--accent);border-radius:18px;margin:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--accent);font-size:var(--text-xl);font-weight:600;pointer-events:none}.tree-wrap{position:absolute;inset:0;overflow:hidden;touch-action:none;--tree-line: #948b7e;background:radial-gradient(ellipse 120% 90% at 50% 42%,color-mix(in srgb,var(--bg-raised) 70%,var(--bg)) 0%,var(--bg) 55%,color-mix(in srgb,var(--ink) 5%,var(--bg)) 100%)}:root[data-theme=dark] .tree-wrap{--tree-line: #6d756f;background:radial-gradient(ellipse 120% 90% at 50% 42%,color-mix(in srgb,var(--bg-raised) 55%,var(--bg)) 0%,var(--bg) 58%,var(--bg-sunken) 100%)}.tree-band{fill:var(--ink);opacity:.022}:root[data-theme=dark] .tree-band{opacity:.05}.tree-band-label{fill:var(--ink-faint);font-family:var(--font-body);font-weight:600;letter-spacing:.06em;text-transform:uppercase;paint-order:stroke fill;stroke:color-mix(in srgb,var(--bg) 72%,transparent);stroke-width:.28em;stroke-linejoin:round;pointer-events:none}.tree-svg{width:100%;height:100%;display:block;cursor:grab}.tree-svg:active{cursor:grabbing}.tree-controls{position:absolute;right:16px;bottom:20px;display:flex;flex-direction:column;gap:8px;z-index:15}.tree-controls .btn{width:44px;height:44px;padding:0;box-shadow:var(--shadow-md)}@media(max-width:640px){.tree-controls{flex-direction:row;right:12px;bottom:86px;gap:6px}.tree-controls .btn{width:40px;height:40px}}.tree-actions{position:absolute;left:16px;bottom:20px;display:flex;gap:8px;z-index:5}.tree-actions .btn{box-shadow:var(--shadow-md)}.tree-panel{position:absolute;top:14px;right:14px;z-index:16;width:min(380px,calc(100vw - 28px));max-height:calc(100% - 28px);overflow-y:auto;padding:16px;box-shadow:var(--shadow-lg)}@media(max-width:640px){.tree-panel{top:62px;left:12px;right:12px;width:auto;max-height:calc(100% - 218px)}}.tree-panel-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin-top:12px}.tree-panel-actions .btn{width:100%;min-height:36px;padding-left:10px;padding-right:10px;white-space:normal;line-height:1.2}.tree-panel-actions .btn-primary{grid-column:1 / -1}.tree-minimap{position:absolute;right:72px;bottom:20px;width:176px;height:110px;padding:6px;background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:10;cursor:pointer;transition:opacity .2s ease}.tree-minimap.is-idle{opacity:0;pointer-events:none}.tree-minimap svg{width:100%;height:100%;display:block}.tree-minimap-node{fill:var(--ink-soft);opacity:.55}.tree-minimap-node.is-focus{fill:var(--accent);opacity:1}.tree-minimap-view{fill:color-mix(in srgb,var(--accent) 18%,transparent);stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke}@media(max-width:1099px){.tree-minimap{display:none}}.tree-link-bloodline{stroke:var(--accent)!important;stroke-width:calc(var(--tree-line-w, 1.75px) * 1.45)!important;opacity:1!important}.tree-node-bloodline .tree-node-card{stroke:var(--accent);stroke-width:2px}.tree-node{cursor:pointer;transition:transform .42s cubic-bezier(.22,.61,.36,1)}.tree-node-new{animation:nodeIn .32s ease both}@keyframes nodeIn{0%{opacity:0}}.tree-edges{transition:opacity .18s ease}.tree-edges-settling{opacity:.18}.tree-node-card{fill:var(--bg-raised);stroke:var(--line);stroke-width:1;filter:drop-shadow(0 3px 7px rgba(58,48,38,.1));transition:stroke .18s ease}.tree-tier-1 .tree-node-card,.tree-tier-2 .tree-node-card{filter:none}.tree-node:hover .tree-node-card{stroke:var(--accent)}.tree-node-focus .tree-node-card{stroke:var(--accent);stroke-width:2}.tree-node-gone .tree-node-card{fill:color-mix(in srgb,var(--gold) 5%,var(--bg-raised));stroke:color-mix(in srgb,var(--gold) 22%,var(--line-strong))}:root[data-theme=dark] .tree-node-gone .tree-node-card{fill:color-mix(in srgb,var(--gold) 8%,var(--bg-raised))}.tree-node-name{font-weight:600;fill:var(--ink);font-family:var(--font-display)}.tree-node-years{fill:var(--ink-soft);font-family:var(--font-body);font-variant-numeric:tabular-nums}.tree-node-name-far{text-anchor:middle;font-weight:700;letter-spacing:-.01em}.tree-node-name-bubble,.tree-node-years-bubble{text-anchor:middle}.tree-bubble{stroke-width:1.5}.tree-node:hover .tree-bubble{stroke-width:2}.tree-node-focus .tree-bubble{stroke-width:2.5}.tree-avatar{fill:var(--av-bg, var(--accent-soft))}.tree-avatar-text{fill:var(--av-ink, var(--accent));font-family:var(--font-display);font-weight:600}.tree-link{fill:none;stroke:var(--tree-line);stroke-width:var(--tree-line-w, 1.75px);stroke-linecap:round;stroke-linejoin:round}.tree-link-paternal,.tree-link-maternal{stroke-width:calc(var(--tree-line-w, 1.75px) * 1.2)}.tree-link-union{stroke:var(--gold);stroke-width:calc(var(--tree-line-w, 1.75px) * 1.15)}.tree-expand{cursor:pointer}.tree-band-labels{pointer-events:none}.tree-expand circle,.tree-expand text{paint-order:stroke}.tree-expand circle{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.2}.tree-expand:hover circle{fill:var(--accent)}.tree-expand:hover text{fill:var(--accent-ink)}.tree-expand text{fill:var(--accent);font-size:13px;font-weight:700;text-anchor:middle;dominant-baseline:central}.tree-tier-2 .tree-expand{display:none}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--line-strong),var(--line));border-radius:2px}.timeline-item{position:relative;padding:0 0 22px 12px}.timeline-item:before{content:"";position:absolute;left:-22px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2.5px solid var(--bg-raised);box-shadow:0 0 0 1px var(--line)}.timeline-item-death:before{background:var(--ink-faint)}.timeline-item-story:before{background:var(--gold)}.timeline-item-birth:before{background:var(--accent)}.timeline-year{font-weight:700;font-size:var(--text-sm);color:var(--ink-soft)}.timeline-title{font-weight:600}.timeline-sub{font-size:var(--text-sm);color:var(--ink-soft)}.timeline-spine{position:relative;padding-left:92px}.timeline-spine:before{content:"";position:absolute;left:78px;top:10px;bottom:10px;width:2px;background:linear-gradient(var(--line),var(--line-strong) 12%,var(--line-strong) 88%,var(--line))}.timeline-decade{position:relative;font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--accent);margin:26px 0 12px -92px;padding-left:92px}.timeline-decade:before{content:"";position:absolute;left:74px;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--bg)}.timeline-entry{position:relative;padding:0 0 18px}.timeline-entry:before{content:"";position:absolute;left:-19px;top:7px;width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--bg)}.timeline-entry-death:before{background:var(--ink-faint)}.timeline-entry-story:before{background:var(--gold)}.timeline-entry-history .timeline-title{color:var(--ink-soft);font-weight:400}.timeline-entry-history:before{display:none}.hist-chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);font-weight:600;letter-spacing:.01em;padding:0 7px 0 4px;border-radius:999px;color:var(--hist-world);border:1.5px solid currentColor;background:transparent;vertical-align:1px;line-height:1.6}.timeline-entry .hist-chip{border:none;padding-left:0;font-weight:500;opacity:.85}.hist-chip.history-vietnam{color:var(--hist-vietnam)}.hist-chip.history-us{color:var(--hist-us)}.timeline-entry-history .timeline-entry-year{color:var(--hist-world);font-weight:700}.timeline-entry-history.history-vietnam .timeline-entry-year{color:var(--hist-vietnam)}.timeline-entry-history.history-us .timeline-entry-year{color:var(--hist-us)}.history-toggles{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-4px 0 16px}.history-toggle{border-radius:999px;gap:6px;border:1.5px solid var(--hist-world);color:var(--ink);background:transparent}.history-toggle.history-vietnam{border-color:var(--hist-vietnam)}.history-toggle.history-us{border-color:var(--hist-us)}.history-toggle[aria-pressed=true]{background:var(--hist-world);border-color:var(--hist-world);color:var(--hist-ink);font-weight:600}.history-toggle.history-vietnam[aria-pressed=true]{background:var(--hist-vietnam);border-color:var(--hist-vietnam)}.history-toggle.history-us[aria-pressed=true]{background:var(--hist-us);border-color:var(--hist-us)}.history-all{border-radius:999px}.history-all[aria-pressed=true]{background:var(--bg-sunken);border-color:var(--line-strong)}.hist-more-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:6px;border-radius:50%;border:1px solid var(--line-strong);background:var(--bg-raised);color:var(--ink);cursor:pointer;vertical-align:-6px;padding:0}.hist-more-btn:hover{background:var(--bg-sunken)}@media(max-width:899px){.hist-more-btn{width:36px;height:36px;vertical-align:-12px;margin-left:4px}}.timeline-entry-history.is-open .timeline-title{color:var(--ink)}.hist-more{margin:8px 0 4px;padding:10px 12px 10px 14px;border-left:3px solid var(--hist-world);background:var(--bg-sunken);border-radius:0 10px 10px 0}.hist-more.history-vietnam{border-left-color:var(--hist-vietnam)}.hist-more.history-us{border-left-color:var(--hist-us)}.hist-more-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin-bottom:4px}.hist-more-text{margin:0 0 6px;line-height:1.55;font-size:.93rem;color:var(--ink)}.hist-nearby{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}.hist-nearby .hist-more-label{margin:0 4px 0 0}.lang-switch{display:inline-flex;border:1px solid var(--line-strong);border-radius:999px;overflow:hidden;background:var(--bg-raised)}.lang-switch button{font:inherit;font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;padding:5px 8px;border:none;background:transparent;color:var(--ink-soft);cursor:pointer;min-width:34px}.lang-switch button[aria-checked=true]{background:var(--accent);color:var(--accent-ink, #fff)}.lang-switch button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media(max-width:480px){.topbar-logo-text{display:none}}.timeline-entry-marriage:before{background:var(--gold)}.timeline-entry-year{position:absolute;left:-92px;top:1px;width:62px;text-align:right;font-size:var(--text-sm);font-weight:600;color:var(--ink-faint);font-variant-numeric:tabular-nums}@media(max-width:560px){.timeline-spine{padding-left:26px}.timeline-spine:before{left:12px}.timeline-decade{margin-left:-26px;padding-left:26px}.timeline-decade:before{left:8px}.timeline-entry:before{left:-18px}.timeline-entry-year{position:static;display:block;width:auto;text-align:left;margin-bottom:1px}}.person-header h1{font-size:2rem;line-height:1.15;letter-spacing:-.01em}.row.rel-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch}.rel-card{min-width:0}.row.rel-grid{grid-template-columns:repeat(auto-fit,minmax(186px,1fr));align-items:start}.rel-card .person-row-sub,.rel-card .small.muted{white-space:nowrap}@media(max-width:640px){.row.rel-grid{grid-template-columns:1fr}}.rel-empty{background:transparent;border-style:dashed;box-shadow:none}.rel-empty h3{color:var(--ink-soft)}.rel-add{color:var(--accent);padding-left:0}.profile-invite .btn{padding-left:8px;padding-right:8px}.profile-invite .btn:first-child{margin-left:-8px}.page section>h2,.page>section h2{letter-spacing:-.005em}.detail-list{display:grid;grid-template-columns:minmax(120px,auto) 1fr;gap:8px 18px;margin:0;align-items:baseline}.detail-list dt{font-size:var(--text-sm);font-weight:600;color:var(--ink-soft);display:flex;align-items:center}.detail-list dd{margin:0}@media(max-width:520px){.detail-list{grid-template-columns:1fr;gap:2px 0}.detail-list dd{margin-bottom:10px}}.indicator-row{display:inline-flex;align-items:center;gap:6px}.indicator{display:inline-flex;align-items:center;justify-content:center;width:1.45em;height:1.45em;border-radius:50%;background:var(--bg-sunken);box-shadow:inset 0 0 0 1px var(--line);font-size:.88em;line-height:1;cursor:default;color:var(--ink-soft);font-weight:700}.tree-node-years{fill:var(--ink-soft)}.tree-wrap{--tree-mark-bg: #eee9e1}:root[data-theme=dark] .tree-wrap{--tree-mark-bg: #2f3431}.inline-edit{background:none;border:none;padding:0 2px;margin:0;font:inherit;color:inherit;cursor:text;border-radius:4px;white-space:pre-line;display:inline-block;vertical-align:top;border-bottom:1px dashed transparent;text-align:left}.inline-edit:hover{border-bottom-color:var(--accent);background:var(--accent-soft)}.inline-edit-input{padding:0 2px;border:none;border-bottom:1px solid var(--accent);border-radius:4px;line-height:inherit;font:inherit;background:var(--bg-raised);color:inherit;width:auto;min-width:4ch;max-width:100%;min-height:0;height:auto;field-sizing:content;vertical-align:top;box-sizing:content-box}.inline-edit-empty{color:var(--ink-faint);font-style:italic}@media(max-width:899px){.inline-edit{padding:8px 6px;margin:-8px -6px}.gap-prompt{display:inline;padding:8px 4px}}.spinner{width:22px;height:22px;border:2.5px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.muted{color:var(--ink-soft)}.small{font-size:var(--text-sm)}.row{display:flex;align-items:center;gap:10px}.grow{flex:1}.stack{display:flex;flex-direction:column;gap:10px}.divider{border:0;border-top:1px solid var(--line);margin:16px 0}.skeleton{background:linear-gradient(90deg,var(--bg-sunken) 25%,var(--line) 50%,var(--bg-sunken) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{to{background-position:-200% 0}}.skeleton-line{height:12px;margin-bottom:8px}.skeleton-row{display:flex;align-items:center;gap:13px;padding:13px 14px;border-top:1px solid var(--line)}.skeleton-avatar{width:42px;height:42px;border-radius:50%;flex-shrink:0}.page-enter{animation:pageIn .22s ease both}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}.card-interactive:hover{transform:none}}.select-sm{min-height:28px;padding:2px 24px 2px 8px;font-size:var(--text-sm);background-position:right 13px center,right 8px center}.inline-edit-saving{opacity:.65}.timeline-photo{display:block;margin-top:6px;padding:0;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-sunken);cursor:pointer;line-height:0}.timeline-photo img{width:132px;height:92px;object-fit:cover}.timeline-photo:hover{border-color:var(--accent)}.timeline-item-photo:before{background:var(--accent-strong)}.life-summary{max-width:var(--measure-prose);margin:14px 0 0;font-family:var(--font-display);font-size:var(--text-base);line-height:1.55;color:var(--ink-soft)}.fb-link{display:inline-flex;align-items:center;gap:5px;color:var(--facebook);font-weight:600;font-size:var(--text-sm);text-decoration:none}.fb-link:hover{text-decoration:underline}.fb-link-icon{width:24px;height:24px;border-radius:50%;justify-content:center;gap:0;background:var(--facebook);color:#fff}.fb-link-icon:hover{text-decoration:none;filter:brightness(1.08)}.indicator-row .fb-link-icon{width:20px;height:20px;vertical-align:middle}.tree-node .mark-link{cursor:pointer}.tree-node .mark-link:hover circle:nth-child(2){filter:brightness(1.12)}.lived-through{max-width:var(--measure-prose);margin:8px 0 0;font-size:var(--text-sm);line-height:1.6;color:var(--ink-soft)}.lived-through-label{display:inline-block;margin-right:8px;font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}.lived-through-link{color:var(--ink);font-weight:600;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--ink-faint) 55%,transparent);text-underline-offset:2px}.lived-through-link:hover{border-bottom-color:var(--accent)}.lived-through-age{color:var(--ink)}.prompt-nudge{display:flex;align-items:center;gap:9px;max-width:720px;margin-top:10px;padding:9px 12px;border:1px dashed var(--line-strong);border-radius:var(--radius-sm);background:var(--bg-sunken);font-size:var(--text-base)}.offline-bar{display:flex;align-items:center;justify-content:center;gap:9px;padding:8px 16px;background:var(--warn-soft);color:var(--ink);font-size:.87rem;border-bottom:1px solid var(--line);text-align:center}.anniversary{display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--bg-sunken);font:inherit;font-size:var(--text-base);color:inherit;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease}.anniversary:hover{border-color:var(--line-strong);background:color-mix(in srgb,var(--bg-sunken) 82%,var(--ink) 4%)}.anniversary-row{border:none;background:transparent;border-radius:0;padding:11px 14px;font-size:var(--text-base)}.anniversary-row+.anniversary-row{border-top:1px solid var(--line)}.anniversary-icon svg{width:16px;height:16px}.anniversary-icon{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--accent-soft);color:var(--accent)}.anniversary-anniversary .anniversary-icon{background:var(--warn-soft);color:var(--gold)}.anniversary-remembrance .anniversary-icon{background:var(--bg-sunken);color:var(--ink-faint)}.anniversary-gio .anniversary-icon{background:var(--warn-soft);color:var(--ink-soft)}.anniversary-festival .anniversary-icon{background:var(--danger-soft);color:var(--danger)}.places-map{overflow:hidden}.places-map svg{display:block;width:100%;height:auto}.map-bg{fill:var(--bg-sunken)}.map-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:2 6;opacity:.8}.map-pin circle{fill:color-mix(in srgb,var(--accent) 45%,transparent);stroke:var(--accent);stroke-width:1.5;cursor:pointer;transition:fill .12s ease}.map-pin.is-hovered circle{fill:var(--accent)}.map-pin circle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.map-label{font-family:var(--font-display);font-size:12px;font-weight:600;fill:var(--ink-soft);paint-order:stroke;stroke:var(--bg-sunken);stroke-width:3px;pointer-events:none}.map-label.is-hovered{fill:var(--ink);font-size:13px}.face-frame{position:relative;display:inline-block;max-width:100%;line-height:0;border-radius:10px;overflow:hidden;background:var(--bg-sunken);touch-action:manipulation}.face-frame img{display:block;width:auto;height:auto;max-width:100%;max-height:380px;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.face-layer{position:absolute;pointer-events:none}.face-layer .face-box{pointer-events:auto}.face-frame-drawing{cursor:crosshair;touch-action:none}.face-frame-drawing img{pointer-events:none}.face-box{position:absolute;border:2px solid var(--av-ink, var(--accent));border-radius:4px;box-shadow:0 0 0 1px #ffffff8c}.face-box-new{border-style:dashed;border-color:var(--accent);background:#ffffff1f}.face-name{position:absolute;left:-2px;bottom:100%;margin-bottom:3px;padding:1px 6px;border-radius:4px;font-size:var(--text-xs);line-height:1.5;white-space:nowrap;background:var(--av-ink, var(--accent));color:var(--bg);opacity:0;transition:opacity .12s ease}.face-box:hover .face-name,.face-box:focus-within .face-name{opacity:1}.face-clear{position:absolute;top:-9px;right:-9px;width:18px;height:18px;box-sizing:content-box;border-radius:50%;border:none;background:var(--av-ink, var(--accent));color:var(--bg);display:grid;place-items:center;cursor:pointer;opacity:0;transition:opacity .12s ease}.face-box:hover .face-clear,.face-box:focus-within .face-clear{opacity:1}.tree-toolbar{position:absolute;top:14px;left:14px;z-index:15;display:flex;align-items:center;gap:8px}.tree-toolbar .btn{box-shadow:var(--shadow-md)}@media(max-width:640px){.tree-toolbar .btn{padding-left:11px;padding-right:11px}.tree-toolbar-text{display:none}}.view-switch{display:flex;gap:2px;padding:3px;border-radius:999px;background:var(--bg-raised);border:1px solid var(--line);box-shadow:var(--shadow-md)}.view-switch-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border:none;border-radius:999px;background:none;font:inherit;font-size:var(--text-sm);color:var(--ink-soft);cursor:pointer}.view-switch-btn:hover{color:var(--ink)}.view-switch-btn.is-on{background:var(--accent);color:var(--accent-ink)}.chart-pane{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--bg)}.chart-pane-head{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:74px 20px 12px;border-bottom:1px solid var(--line)}.chart-title{font-size:var(--text-xl);margin:0 0 2px}.chart-pane-body{flex:1;overflow:auto;padding:20px;display:flex;justify-content:center}.chart-pane-body>.fan-chart{width:100%;max-width:780px;height:auto;align-self:flex-start}.chart-pane-body>.descendant-chart{width:100%;max-width:780px}@media(max-width:640px){.view-switch-btn{padding:6px 10px}.view-switch-btn span{display:none}.chart-pane-head{padding:52px 14px 8px;gap:6px;row-gap:4px}.chart-pane-head>.grow{flex:0 0 100%;min-width:100%}.chart-pane-head .chart-title{font-size:var(--text-lg)}.chart-pane-head .muted.small p{line-height:1.35}.chart-explainer{flex-basis:100%}.chart-pane-head label{font-size:var(--text-xs)}}.fan-chart{width:100%;height:100%;display:block}.fan-wedge path{fill:var(--bg-raised);stroke:var(--bg);stroke-width:1.5;cursor:pointer;transition:filter .12s ease}.fan-wedge path:hover{filter:brightness(.96)}.fan-wedge path:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}.fan-empty path{fill:transparent;stroke:var(--line);stroke-dasharray:3 4;cursor:default}.fan-addable path{cursor:pointer}.fan-addable path:hover{fill:var(--accent-soft);stroke:var(--accent);stroke-dasharray:none}.fan-label{font-size:10.5px;fill:var(--ink);pointer-events:none}.fan-label-upright{font-size:12px;font-weight:600;font-family:var(--font-display)}.fan-side-paternal path{fill:color-mix(in srgb,var(--paternal) var(--fan-mix, 30%),var(--bg-raised))}.fan-side-maternal path{fill:color-mix(in srgb,var(--maternal) var(--fan-mix, 30%),var(--bg-raised))}.fan-side-self path{fill:var(--accent-soft)}.fan-empty.fan-side-paternal path,.fan-empty.fan-side-maternal path{fill:transparent}.fan-add-label{font-size:10px;fill:var(--ink-faint);pointer-events:none}.fan-addable:hover .fan-add-label{fill:var(--accent)}.fan-label-years{font-size:9px;opacity:.72}.fan-centre-name{font-family:var(--font-display);font-size:22px;font-weight:700;fill:var(--accent);pointer-events:none}.fan-centre-years{font-size:11px;fill:var(--ink);opacity:.8;pointer-events:none}.descendant-chart{padding:8px 4px 40px}.desc-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:3px 0}.desc-person{display:inline-flex;align-items:center;gap:9px;padding:5px 12px 5px 5px;border:1px solid var(--line);border-radius:999px;background:var(--bg-raised);font:inherit;color:inherit;cursor:pointer;box-shadow:var(--shadow-sm)}.desc-person:hover{border-color:var(--accent)}.desc-initials{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:var(--text-xs);font-weight:700;background:var(--av-bg, var(--accent-soft));color:var(--av-ink, var(--accent))}.desc-partners{display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap}.desc-partners .chip-link{border:none;font:inherit;font-size:var(--text-xs);cursor:pointer}.desc-children{margin-left:17px;padding-left:18px;border-left:2px solid var(--line-strong)}.desc-children-last{border-left-color:transparent;border-left-style:solid}.desc-more{display:inline-flex;align-items:center;margin:4px 0;padding:5px 12px;border:1px dashed var(--line-strong);border-radius:999px;color:var(--ink-faint);background:transparent}@media(max-width:560px){.desc-children{margin-left:12px;padding-left:12px}}.section-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;letter-spacing:-.01em;margin:28px 0 10px}.card-pad>.section-title:first-child{margin-top:0}.section-subtitle{font-size:var(--text-sm);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 6px}.plain-list{list-style:none;margin:0;padding:0}.plain-list li{padding:3px 0;font-size:var(--text-base)}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px 24px}@media(max-width:620px){.stat-grid{grid-template-columns:repeat(2,1fr)}}.stat-cell{padding:6px 0}.stat-value{font-family:var(--font-display);font-size:var(--display-md);line-height:1.1;font-weight:700;white-space:nowrap}.stat-label{font-size:var(--text-sm);color:var(--ink-soft)}.lifespan-chart{display:flex;align-items:flex-end;gap:10px;margin-top:14px}.lifespan-bar-wrap{flex:1;min-width:0;display:flex;flex-direction:column;text-align:center}.lifespan-track{height:132px;padding-top:26px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end}.lifespan-bar{flex-shrink:0;background:color-mix(in srgb,var(--accent) 45%,var(--accent-soft));border-radius:6px 6px 0 0;min-height:4px}.lifespan-bar-value{flex-shrink:0;font-size:var(--text-sm);font-weight:600;margin-bottom:4px;font-variant-numeric:tabular-nums}.lifespan-bar-label{font-size:var(--text-xs);color:var(--ink-faint);padding-top:5px;border-top:1px solid var(--line-strong);font-variant-numeric:tabular-nums}@media(max-width:420px){.lifespan-chart{gap:4px}}.gap-row+.gap-row{border-top:1px solid var(--line)}.gap-head{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;background:none;border:none;font:inherit;text-align:left;cursor:pointer;color:inherit}.gap-head:hover{background:var(--bg-sunken)}.gap-people{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:0 14px 14px}.chip-link{text-decoration:none;color:var(--accent);background:var(--accent-soft)}.chip-link:hover{text-decoration:underline}.research-row{display:flex;align-items:flex-start;gap:10px;padding:11px 14px}.research-row+.research-row{border-top:1px solid var(--line)}.research-question{font-size:var(--text-base)}.research-done .research-question{color:var(--ink-faint);text-decoration:line-through}.research-tick{flex:none;width:24px;height:24px;margin-top:1px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--bg-raised);color:var(--ink-faint);display:grid;place-items:center;cursor:pointer}.research-tick:hover{border-color:var(--accent);color:var(--accent)}.research-done .research-tick{border-style:dashed}@media print{:root,:root[data-theme=dark]{--bg: #fff;--bg-raised: #fff;--bg-sunken: #fff;--ink: #2b2a27;--ink-soft: #5f5a54;--ink-faint: #726c64;--line: #ddd8d0;--line-strong: #c5beb2;--accent: #2f5643;--accent-ink: #ffffff;color-scheme:light}.topbar,.bottombar,.tree-controls,.toasts,.dialog-backdrop,.tree-coverage,.offline-bar,.view-switch,.tree-toolbar{display:none!important}.avatar{--av-bg: #ffffff !important;--av-ink: #3f3a34 !important;border:1px solid #c5beb2}.indicator,.indicator *{color:#2b2a27!important}.page{max-width:none;padding:0}.card{box-shadow:none;border-color:#ccc;break-inside:avoid}.person-row,.timeline-entry,.story{break-inside:avoid}a{text-decoration:none;color:inherit}.btn,.input,.select,.textarea{display:none!important}}.activity-row{padding:9px 14px;border-bottom:1px solid var(--line);gap:10px;font-size:var(--text-base)}.activity-row:last-child{border-bottom:none}a.activity-row:hover{background:var(--bg-sunken)}.tree-era{position:absolute;left:50%;bottom:22px;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:6px 12px;border-radius:999px;background:var(--bg-raised);border:1px solid var(--line);box-shadow:var(--shadow-md);z-index:14;width:min(420px,calc(100vw - 260px))}.tree-era input[type=range]{flex:1;accent-color:var(--accent);min-width:80px}.tree-era-label{white-space:nowrap;font-weight:600;min-width:4.4em;font-variant-numeric:tabular-nums}.tree-era-on{border-color:var(--accent)}.tree-node-absent{opacity:.28}.tree-node-absent .tree-node-card{stroke-dasharray:4 3}@media(min-width:641px){.tree-era{bottom:76px;left:16px;transform:none;width:min(420px,calc(100vw - 110px))}}@media(max-width:640px){.tree-era{bottom:84px;width:calc(100vw - 90px);left:12px;transform:none}}@media(max-height:460px){.tree-era{bottom:76px;left:12px;transform:none;width:min(320px,46vw)}}.action-menu{position:absolute;right:0;top:calc(100% + 8px);width:min(300px,calc(100vw - 24px));padding:8px;box-shadow:var(--shadow-lg);z-index:250;display:flex;flex-direction:column;gap:4px;max-height:calc(100vh - 90px);overflow-y:auto}.action-menu .menu-item{justify-content:flex-start;width:100%;text-align:left;border-color:transparent;background:transparent;box-shadow:none;min-height:40px;line-height:1.25;white-space:normal}.action-menu .menu-item:hover{background:var(--bg-sunken);border-color:transparent;box-shadow:none}.action-menu .menu-item.btn-danger-ghost{color:var(--danger);position:relative;margin-top:5px}.action-menu .menu-item.btn-danger-ghost:before{content:"";position:absolute;left:10px;right:10px;top:-3px;border-top:1px solid var(--line)}.action-menu .menu-item.btn-danger-ghost:hover{background:var(--danger-soft)}.action-menu.action-menu-up{top:auto;bottom:calc(100% + 8px)}.help-on .action-menu .menu-item[title]:after{display:block;width:100%}@media(max-width:640px){.action-menu,.share-menu{position:fixed!important;left:12px!important;right:12px!important;top:auto!important;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 12px)!important;width:auto!important;max-height:70vh!important}}.recording-dot{width:14px;height:14px;border-radius:50%;margin:0 auto;background:var(--danger);animation:recPulse 1.2s ease-in-out infinite}@keyframes recPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}.quick-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px}.quick-edit-compact .quick-edit-grid{gap:6px 8px}.quick-edit-field{display:flex;flex-direction:column;gap:3px;margin-top:6px}.quick-edit-label{font-size:var(--text-xs);font-weight:600;color:var(--ink-soft);display:inline-flex;align-items:center;gap:4px}.quick-edit .input,.quick-edit .select{min-height:34px;padding:5px 9px;font-size:var(--text-base)}.quick-edit .select{padding-right:28px;background-position:right 12px center,right 7px center}.quick-edit-saved{color:var(--accent);animation:fadeIn .2s ease}.person-row-wrap{display:flex;align-items:stretch}.person-row-wrap>.person-row{flex:1;min-width:0}.person-row-edit{border:none;background:none;color:var(--ink-faint);padding:0 12px;cursor:pointer}.person-row:focus-visible{outline-offset:-2px;border-radius:var(--radius-sm)}.person-row-edit:hover{color:var(--accent);background:var(--bg-sunken)}.fan-key{font-weight:600;padding:0 4px;border-radius:4px}.fan-key-paternal{background:color-mix(in srgb,var(--paternal) 30%,var(--bg-raised));color:var(--ink)}.fan-key-maternal{background:color-mix(in srgb,var(--maternal) 30%,var(--bg-raised));color:var(--ink)}.indicator-badge{color:#fff;box-shadow:0 0 0 1.5px var(--bg-raised),0 1px 2px #0000002e}.indicator-badge svg{width:.92em;height:.92em;display:block}.indicator-flag{padding:0;overflow:hidden;background:var(--bg-sunken);box-shadow:inset 0 0 0 1px #00000024;font-size:1em}.indicator-flag svg,.flag-glyph,.flag,.hist-chip svg{filter:saturate(.6) brightness(.97) contrast(.94)}.indicator-flag svg{width:100%;height:100%;display:block}.indicator-flag-code{font-size:.55em;font-weight:800;letter-spacing:.02em;color:var(--ink-soft)}.person-origins{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:4px 0 0;color:var(--ink-soft);font-size:var(--text-sm)}.icon-toggles{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.icon-toggle{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line-strong);background:var(--bg-raised);color:var(--ink-soft);border-radius:999px;padding:3px 10px 3px 7px;font-size:var(--text-sm);font-family:inherit;cursor:pointer;transition:background .12s,border-color .12s}.icon-toggle:hover{background:var(--bg-sunken)}.icon-toggle-on{background:var(--accent-soft);border-color:var(--accent);color:var(--ink);font-weight:600}.icon-toggle-emoji{font-size:var(--text-base);line-height:1}.quick-edit-compact .icon-toggle{padding:2px 8px 2px 6px;font-size:.74rem}.tree-union-ended-x{stroke:var(--danger);stroke-width:1.6;stroke-linecap:round}.changes-person{margin-top:8px}.changes-fields{width:100%;border-collapse:collapse;margin-top:6px;font-size:var(--text-sm)}.changes-fields th{text-align:left;font-weight:600;color:var(--ink-soft);padding:3px 8px 3px 0;white-space:nowrap;vertical-align:top}.changes-fields td{padding:3px 4px;vertical-align:top}.changes-mine{color:var(--ink-faint);text-decoration:line-through}.changes-arrow{color:var(--ink-faint);width:1.5em;text-align:center}.changes-theirs{color:var(--ink);font-weight:600}.btn-disabled{opacity:.5;pointer-events:none}.card-sunken{background:var(--bg-sunken)}.card-sunken .field-hint,.card-sunken .muted{color:#5f5951}:root[data-theme=dark] .card-sunken .field-hint,:root[data-theme=dark] .card-sunken .muted{color:var(--ink-soft)}html.big-text{font-size:18px}html.big-text body{font-size:1.08rem}html.big-text .btn{min-height:46px;font-size:1.02rem}html.big-text .btn-sm{min-height:38px;font-size:.95rem}html.big-text .input,html.big-text .select,html.big-text .textarea{min-height:46px;font-size:1.06rem}html.big-text .navlink{font-size:1rem}html.big-text .bottombar .navlink{font-size:.8rem}html.big-text .small,html.big-text .field-hint{font-size:.95rem}html.big-text .quick-edit-label{font-size:.9rem}html.big-text .icon-toggle{font-size:.95rem;padding:5px 12px 5px 9px}html.big-text .anniversary{font-size:1.05rem}.dates-month{margin-top:18px}.dates-list{overflow:hidden}.dates-row{display:flex;align-items:center;gap:10px;padding:9px 14px;color:inherit;text-decoration:none;border-top:1px solid var(--line)}.dates-row:first-child{border-top:none}a.dates-row:hover{background:var(--bg-sunken);text-decoration:none}.dates-day{width:4.6em;flex:none;font-variant-numeric:tabular-nums;color:var(--ink-soft);font-weight:600;display:inline-flex;gap:.45em}.dates-day-num{width:1.6em;text-align:right}.dates-row .anniversary-icon{width:26px;height:26px}.print-only{display:none}@media print{.no-print,.topbar,.bottombar,.toasts{display:none!important}.print-only{display:block}.dates-page{max-width:none}.dates-row{break-inside:avoid}body{background:#fff;color:#000}}.suggestion{padding:12px 14px}.suggestion+.suggestion{border-top:1px solid var(--line)}.person-native-name{margin:0;font-family:var(--font-display);font-size:var(--text-lg);color:var(--ink-soft)}.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}.album-card{text-align:left;border:1px solid var(--line);background:var(--bg-raised);border-radius:var(--radius-md);padding:0 0 10px;cursor:pointer;font-family:inherit;color:inherit;overflow:hidden;box-shadow:var(--shadow-sm)}.album-card:hover{box-shadow:var(--shadow-lift);border-color:var(--line-strong)}.album-cover{aspect-ratio:4 / 3;background:var(--bg-sunken);display:grid;place-items:center;overflow:hidden}.album-cover img{width:100%;height:100%;object-fit:cover;display:block}.album-title{font-weight:600;padding:8px 12px 0}.album-card .field-hint{padding:0 12px}.album-photo{position:relative}.album-photo-remove{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;border:none;background:#0000008c;color:#fff;display:grid;place-items:center;cursor:pointer;opacity:0;transition:opacity .15s}.album-photo:hover .album-photo-remove,.album-photo-remove:focus-visible{opacity:1}.photo-tile-chosen{outline:3px solid var(--accent);outline-offset:-3px}.name-picker{position:fixed;inset:0;z-index:300;background:#00000073;display:flex;align-items:flex-end;justify-content:center}.name-picker-sheet{width:min(520px,100%);max-height:80vh;background:var(--bg-raised);color:var(--ink);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:14px;display:flex;flex-direction:column}.name-picker-list{overflow-y:auto;display:flex;flex-direction:column;gap:4px}.name-picker-row{display:flex;align-items:center;gap:10px;padding:8px;border:none;background:none;border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;color:inherit;font-size:var(--text-base)}.name-picker-row:hover{background:var(--bg-sunken)}.slideshow-add{margin-left:10px;border:none;background:#ffffff29;color:#fff;border-radius:50%;width:36px;height:36px;display:inline-grid;place-items:center;cursor:pointer;vertical-align:middle}button.slideshow-ask{background:none;border:none;cursor:pointer;font-family:var(--font-display)}.slideshow{position:fixed;inset:0;z-index:200;background:#000;color:#fff;overflow:hidden;cursor:default}.slideshow-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .26s ease}.slideshow-photo-fade{opacity:0}.slideshow-caption{position:absolute;left:0;right:0;bottom:0;padding:28px 40px 30px;background:linear-gradient(to top,#000000c7,#0000);transition:opacity .26s ease;text-shadow:0 1px 3px rgba(0,0,0,.7)}.slideshow-names{font-family:var(--font-display);font-size:clamp(1.4rem,3.4vw,2.6rem);font-weight:600;color:#fff;text-decoration:none;display:inline-flex;align-items:center;gap:10px}.slideshow-ask{color:#ffd97a}.slideshow-line{font-size:clamp(1rem,2vw,1.4rem);opacity:.9;margin-top:4px}.slideshow-count{position:absolute;right:40px;bottom:30px;font-size:var(--text-base);opacity:.6;font-variant-numeric:tabular-nums}.slideshow-empty{position:absolute;inset:0;display:grid;place-items:center;text-align:center;gap:12px;align-content:center;font-size:var(--text-xl)}.slideshow-controls{position:absolute;top:16px;right:16px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end;max-width:calc(100vw - 32px);padding:6px;border-radius:999px;background:#141414b8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:opacity .3s ease}@media(max-width:600px){.slideshow-controls{top:12px;left:12px;right:12px;display:grid;grid-template-columns:repeat(4,auto);justify-content:center;justify-items:center;gap:6px 10px;border-radius:18px}}@media(min-width:900px){.slideshow-photo{top:72px;height:calc(100% - 72px)}}.slideshow-controls .btn{color:#fff;border-color:transparent;background:transparent}.slideshow-controls .btn:hover,.slideshow-controls .slideshow-on{background:#ffffff29}.slideshow-controls .select{color:#fff;background-color:transparent;border-color:#ffffff4d}.slideshow-controls-hidden{opacity:0;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.tree-unplaced-box{fill:color-mix(in srgb,var(--bg-sunken) 55%,transparent);stroke:var(--line-strong);stroke-dasharray:7 5;stroke-width:1.2}.tree-unplaced-title{fill:var(--ink);font-family:var(--font-display);font-weight:600}.tree-unplaced-hint{fill:var(--ink-faint)}.quiz-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.quiz-choice{display:flex;align-items:center;gap:12px;padding:12px 14px;border:2px solid var(--line-strong);border-radius:14px;background:var(--bg);color:var(--ink);font:inherit;font-weight:600;text-align:left;cursor:pointer;min-height:64px}.quiz-choice:hover:not(:disabled){border-color:var(--accent)}.quiz-choice:disabled{cursor:default;opacity:.75}.quiz-choice.quiz-right{border-color:#2e7d32;background:color-mix(in srgb,#2e7d32 14%,var(--bg));opacity:1}.quiz-choice.quiz-wrong{border-color:var(--danger, #b3261e);background:color-mix(in srgb,var(--danger, #b3261e) 12%,var(--bg));opacity:1}.map-journey{fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;opacity:.8}.map-journey.is-dim{opacity:.12}.map-journey-dot{stroke:var(--bg);stroke-width:1.5}.map-journey-label{font-size:11px;fill:var(--ink);paint-order:stroke;stroke:var(--bg);stroke-width:3px}.who-photo{position:relative;border-radius:14px;overflow:hidden;background:var(--bg-sunken);max-height:46vh;display:flex;justify-content:center}.who-photo img{max-width:100%;max-height:46vh;object-fit:contain;display:block}.who-caption{position:absolute;left:0;right:0;bottom:0;padding:8px 12px;background:linear-gradient(transparent,#0000008c);color:#fff;font-size:var(--text-base)}.input-with-icon{position:relative;display:flex;align-items:center}.input-with-icon>svg{position:absolute;left:12px;color:var(--ink-faint);pointer-events:none}.input-with-icon>.input{padding-left:38px;width:100%;margin-bottom:0}.who-search{display:flex;align-items:center;gap:10px;margin-top:14px}.who-search .input{font-size:var(--text-lg);min-height:48px}.who-search.input-with-icon>svg{left:14px}.who-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-top:8px}.who-choice{display:flex;align-items:center;gap:12px;padding:10px 14px;border:2px solid var(--line-strong);border-radius:14px;background:var(--bg);color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-height:72px}.who-choice:hover:not(:disabled){border-color:var(--accent)}.who-actions{display:flex;justify-content:space-between;gap:10px;margin-top:16px;position:sticky;bottom:0;padding:10px 0 12px;background:linear-gradient(to bottom,transparent,var(--bg) 22%)}.who-choices{padding-bottom:4px}.who-actions .btn-lg{flex:1;justify-content:center}.scan-frame{position:relative;-webkit-user-select:none;user-select:none;touch-action:none;background:var(--bg-sunken);border-radius:10px;overflow:hidden}.scan-frame img{width:100%;display:block;pointer-events:none}.scan-box{position:absolute;border:2px solid var(--accent);box-shadow:0 0 0 9999px #00000059;cursor:move}.scan-handle{position:absolute;width:22px;height:22px;background:var(--accent);border:2px solid #fff;border-radius:50%}.scan-nw{left:-12px;top:-12px;cursor:nwse-resize}.scan-se{right:-12px;bottom:-12px;cursor:nwse-resize}.scan-ne{right:-12px;top:-12px;cursor:nesw-resize}.scan-sw{left:-12px;bottom:-12px;cursor:nesw-resize}.relation-term{font-family:var(--font-display);font-size:var(--display-md);font-weight:700;color:var(--accent)}.slideshow-year{font-family:var(--font-display);font-size:clamp(1.6rem,4vw,3rem);font-weight:700;line-height:1;margin-top:6px;letter-spacing:.02em}.book-cover{text-align:center;padding:36px 12px 28px;border-bottom:2px solid var(--accent);margin-bottom:22px}.book-cover-title{font-family:var(--font-display);font-size:var(--display-xl);font-weight:700;color:var(--accent)}.book-cover-sub{font-size:var(--text-xl);margin-top:4px}.book-cover-meta{color:var(--ink-faint);margin-top:8px;font-size:var(--text-base)}.book-generation{margin-bottom:26px}.book-generation-title{font-family:var(--font-display);font-size:var(--display-md);border-bottom:1px solid var(--line-strong);padding-bottom:6px;margin:0 0 12px}.book-entry{display:flex;gap:14px;padding:10px 0;border-bottom:1px dotted var(--line);break-inside:avoid}.book-entry-photo{flex:0 0 72px}.book-entry-body{flex:1;min-width:0}.book-entry-name{font-weight:700;font-size:var(--text-lg)}.book-entry-native{font-weight:400;color:var(--ink-soft)}.book-entry-facts{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:2px 12px;margin:4px 0 0;font-size:var(--text-base)}.book-entry-facts dt{color:var(--ink-faint)}.book-entry-facts dd{margin:0}.book-entry-bio{margin:6px 0 0;font-size:var(--text-base);white-space:pre-line;max-width:var(--measure-prose)}.story-body{margin-top:20px;font-family:var(--font-display);font-size:var(--text-lg);line-height:1.75;white-space:pre-wrap;max-width:var(--measure-prose)}@media print{.book-page{max-width:none!important}.book-cover{page-break-after:always;border:none;padding-top:30vh}.book-generation{page-break-before:always}.book-generation:first-of-type{page-break-before:auto}}.recording-dot-inline{display:inline-block;width:10px;height:10px;border-radius:50%;background:#d33;animation:pulse 1s infinite;vertical-align:middle}.btn.btn-danger{background:#b3261e;color:#fff;border-color:#b3261e}.keeper-line{display:inline-flex;align-items:center;gap:4px;text-decoration:none}.keeper-line:hover{text-decoration:underline}.who-photo .who-zoom{position:absolute;top:8px;right:8px}.who-photo.is-zoomed{max-height:70vh;overflow:auto;justify-content:flex-start;cursor:grab}.who-photo.is-zoomed img{max-width:none;max-height:none;width:220%}.health-ok .health-icon{color:#2e7d32}.health-warn .health-icon{color:#b26a00}.health-bad .health-icon{color:var(--danger, #b3261e)}.guide-title{text-align:center;font-family:var(--font-display);font-size:var(--display-lg);margin:0 0 6px;line-height:1.2}.guide-address{text-align:center;font-family:var(--font-body);font-variant-numeric:tabular-nums;letter-spacing:.01em;font-size:var(--text-xl);font-weight:600;margin:0 0 6px;word-break:break-all}.guide-steps{padding-left:22px;margin:0}.guide-glyph{display:inline-block;vertical-align:-.16em;color:var(--ink-soft)}.guide-step{margin-bottom:12px;font-size:var(--text-lg)}.guide-vi{font-weight:500}.guide-en{color:var(--ink-soft);font-size:var(--text-base)}.book-toc ol{margin:0;padding-left:22px}.book-toc li{margin-bottom:4px}.book-toc a{text-decoration:none;font-weight:600}.map-pin.is-selected circle{stroke:var(--accent);stroke-width:3}@media print{.book-toc{page-break-after:always}.guide-page .card{border:none;box-shadow:none}}.tree-node-paternal .tree-node-card{stroke:var(--paternal);stroke-width:2;fill:color-mix(in srgb,var(--paternal) 11%,var(--bg-raised))}.tree-node-maternal .tree-node-card{stroke:var(--maternal);stroke-width:2;fill:color-mix(in srgb,var(--maternal) 11%,var(--bg-raised))}.tree-node-paternal .tree-bubble{stroke:var(--paternal)}.tree-node-maternal .tree-bubble{stroke:var(--maternal)}.tree-node-paternal:hover .tree-node-card,.tree-node-paternal.tree-node-focus .tree-node-card{stroke:var(--paternal);stroke-width:2.6}.tree-node-maternal:hover .tree-node-card,.tree-node-maternal.tree-node-focus .tree-node-card{stroke:var(--maternal);stroke-width:2.6}.tree-legend{position:absolute;left:14px;top:64px;z-index:6;display:flex;gap:12px;align-items:center;padding:6px 12px;border-radius:999px;background:var(--bg-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm);font-size:var(--text-sm);color:var(--ink-soft);pointer-events:none}.tree-legend span{display:inline-flex;align-items:center;gap:6px}.tree-legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}@media(max-width:600px){.tree-legend{top:14px;left:auto;right:12px}}@media(min-width:601px){.tree-legend{top:16px;left:392px}}@media(hover:none),(max-width:899px){.topbar,.bottombar,.tree-legend,.dialog-backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}.topbar,.bottombar{background:var(--bg-raised)}.tree-node-card,.tree-node:hover .tree-node-card{filter:none}.tree-node{transition:none}}@media(prefers-reduced-motion:reduce){.tree-node,.card-interactive,.btn{transition:none}}.language-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.language-card{width:100%;max-width:520px;text-align:center;background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:34px 26px 26px}.language-mark{width:64px;height:64px;margin:0 auto 14px;border-radius:18px;display:flex;align-items:center;justify-content:center;color:var(--accent-ink);background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 85%,#fff),var(--accent-strong));box-shadow:0 4px 14px #2e524047}.language-title{font-family:var(--font-display);font-size:var(--display-lg);margin:0 0 6px}.language-sub{font-size:var(--text-lg);margin:0 0 22px;line-height:1.5}.language-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px}.welcome-card{text-align:left;max-width:560px;padding:22px 22px 20px}.language-switch{gap:6px;justify-content:center;margin-bottom:16px}.welcome-cards{display:flex;flex-direction:column;gap:14px;margin-bottom:18px}.welcome-step{display:flex;gap:14px;align-items:flex-start;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md, 12px);background:var(--bg)}.welcome-icon{color:var(--accent);flex-shrink:0;margin-top:2px}.welcome-title{margin:0 0 4px;font-size:var(--text-lg)}.welcome-body{margin:0;line-height:1.5;font-size:var(--text-base)}@media(max-width:480px){.language-choices{grid-template-columns:1fr}}.language-choice{display:flex;flex-direction:column;align-items:center;gap:6px;padding:20px 14px;border:2px solid var(--line-strong);border-radius:16px;background:var(--bg);color:var(--ink);font:inherit;cursor:pointer;min-height:130px}.language-choice:hover,.language-choice:focus-visible{border-color:var(--accent);background:var(--accent-soft)}.language-flag{font-size:2rem;line-height:1}.language-name{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700}.language-hint{font-size:var(--text-sm);color:var(--ink-soft)}.btn.is-on{background:var(--accent-soft);color:var(--accent)}.help-bar{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent-soft) 70%,var(--bg-raised));border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));max-width:1040px;margin:14px auto 0}.help-bar-icon{color:var(--accent);flex-shrink:0;margin-top:2px}.help-bar-title{font-weight:700;margin-bottom:4px}.help-bar-lines{margin:0 0 6px;padding-left:18px;font-size:var(--text-base);line-height:1.5}.help-bar-float{position:absolute;z-index:16;left:14px;right:14px;top:58px;max-width:none;margin:0;padding:7px 12px;box-shadow:var(--shadow-md);align-items:center}.help-bar-float .help-bar-title{display:inline;margin:0 6px 0 0}.help-bar-float .help-bar-lines{display:inline;margin:0;padding:0;font-size:var(--text-sm)}.help-bar-float .help-bar-lines li{display:inline}.help-bar-float .help-bar-lines li:not(:first-child),.help-bar-float .field-hint{display:none}.help-bar-float>.grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:600px){.help-bar{margin-left:12px;margin-right:12px}.help-bar-float{left:10px;right:10px}}.door-brand{display:flex;align-items:center;justify-content:center;gap:8px;margin:0 0 14px;font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);color:var(--ink)}.door-brand-mark{width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--accent-ink);background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 85%,#fff),var(--accent-strong));box-shadow:inset 0 1px #ffffff38,0 2px 6px #2e524047}.help-on .tree-actions .btn[title]:after{display:none}.help-on .dialog-body .btn-sm[title]:after{display:none}.help-on .btn[title]{flex-wrap:wrap}.help-on .btn[title]:after{content:attr(title);flex-basis:100%;font-size:var(--text-xs);font-weight:400;line-height:1.3;color:var(--ink-faint);text-align:left;white-space:normal;max-width:260px}.help-on .navlink[title]:after{content:attr(title);display:block;font-size:var(--text-xs);font-weight:400;color:var(--ink-faint)}.help-on .btn-sm[title]:after{font-size:var(--text-xs)}.help-on .tree-controls .btn[title]:after,.help-on .slideshow-controls .btn[title]:after,.help-on .who-zoom[title]:after,.help-on .topbar .btn[title]:after,.help-on .bottombar .navlink[title]:after,.help-on .photo-tile-action[title]:after,.help-on .dialog-close[title]:after{display:none}.help-on .topbar .btn[title]{flex-wrap:nowrap}.help-on [data-icon-only][title]:after{display:none}.help-tip{position:relative;display:inline-flex;align-items:center}.help-tip-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;border:none;background:var(--accent-soft);color:var(--accent);cursor:pointer;padding:0}.help-tip-bubble{position:absolute;left:0;top:calc(100% + 6px);z-index:30;min-width:220px;max-width:320px;padding:8px 10px;border-radius:10px;background:var(--ink);color:var(--bg);font-size:var(--text-sm);line-height:1.4;box-shadow:var(--shadow-md);display:none}.help-tip-bubble.is-open{display:block}.help-tip-caption{display:none}.help-on .help-tip-caption{display:block;font-size:var(--text-xs);color:var(--ink-faint);margin-left:6px}.help-on .help-tip-btn{display:none}.help-on h2[data-help]:after,.help-on .section-title[data-help]:after{content:attr(data-help);display:block;font-family:var(--font-body);font-size:var(--text-sm);font-weight:400;letter-spacing:0;color:var(--ink-faint);margin-top:2px;line-height:1.4}.btn{line-height:1.25}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:18px;height:18px;flex-shrink:0}.field-optional{margin-left:4px;font-size:var(--text-xs);font-weight:400;color:var(--ink-faint)}code{overflow-wrap:anywhere}.section-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;margin-bottom:10px}.section-head>h2{flex:1 1 auto;margin:0}.section-note{white-space:nowrap}.page-back{display:inline-flex;align-items:center;gap:4px;margin:0 0 8px;font-size:var(--text-sm);color:var(--ink-soft);text-decoration:none}.page-back:hover{color:var(--accent);text-decoration:underline;text-underline-offset:2px}button.chip{cursor:pointer;transition:background .14s ease,color .14s ease}button.chip:hover{background:var(--line);color:var(--ink)}.lang-switch button:not([aria-checked=true]):hover{background:var(--bg-sunken);color:var(--ink)}.navlink,.app-switcher-btn{white-space:nowrap}.topbar-nav{min-width:0}.topbar-actions>*,.lang-switch{flex-shrink:0}.help-on .topbar .navlink[title]:after{display:none}@media(min-width:1200px)and (max-width:1319px){.topbar-nav .navlink{padding-left:8px;padding-right:8px}.app-switcher-text{display:none}.app-switcher-btn{padding:8px}}@media(min-width:1040px)and (max-width:1199px){.topbar-nav{gap:0}.topbar-nav .navlink{padding-left:6px;padding-right:6px;font-size:var(--text-sm)}.app-switcher-text{display:none}.app-switcher-btn{padding:8px}}@media(min-width:900px)and (max-width:1039px){.topbar-nav .navlink{padding-left:11px;padding-right:11px}.topbar-nav .navlink-text,.app-switcher-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app-switcher-btn{padding:8px}.topbar-nav{margin-left:auto;margin-right:auto}}@media(min-width:1340px)and (max-width:1479px){html[lang=vi] .topbar-nav .navlink{padding-left:8px;padding-right:8px}html[lang=vi] .topbar-nav{gap:2px}html[lang=vi] .app-switcher-text{display:none}html[lang=vi] .app-switcher-btn{padding:8px}}@media(min-width:1180px)and (max-width:1339px){html[lang=vi] .topbar-nav{gap:0}html[lang=vi] .topbar-nav .navlink{padding-left:6px;padding-right:6px;font-size:var(--text-sm)}html[lang=vi] .app-switcher-text{display:none}html[lang=vi] .app-switcher-btn{padding:8px}}@media(min-width:900px)and (max-width:1179px){html[lang=vi] .topbar-nav .navlink{padding-left:11px;padding-right:11px}html[lang=vi] .topbar-nav .navlink-text,html[lang=vi] .app-switcher-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}html[lang=vi] .app-switcher-btn{padding:8px}html[lang=vi] .topbar-nav{margin-left:auto;margin-right:auto}}.bottombar .navlink{display:grid;grid-template-rows:26px auto;justify-items:center;align-content:start;gap:2px;padding:5px 2px 4px;text-align:center;line-height:1.1;white-space:normal}html[lang=vi]{--nav-h: 66px}.bottombar .navlink svg{padding:3px 12px;box-sizing:content-box;border-radius:999px}.bottombar .navlink.active{font-weight:500}@media(max-width:899px){.btn-sm{min-height:40px}.lang-switch button{min-height:36px}.topbar-actions{gap:4px}}.search-backdrop{align-items:flex-start;padding-top:8vh}.search-dialog{max-width:560px}.search-field{display:flex;align-items:center;gap:10px;padding:12px 12px 10px 20px;border-bottom:1px solid var(--line)}.search-input{flex:1;min-width:0;border:none;outline:none;background:transparent;color:var(--ink);font:inherit;font-size:var(--text-lg);padding:6px 0}.search-input::placeholder{color:var(--ink-faint)}.search-section-label{margin:0;padding:14px 4px 4px;font-family:var(--font-body);font-size:var(--text-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}@media(max-width:640px){.search-backdrop{align-items:stretch;padding:0}.search-dialog{height:100dvh;max-height:100dvh;border:none;border-radius:0;animation:fadeIn .15s ease}}.help-on .btn-primary[title]:after,.help-on .btn[aria-pressed=true][title]:after,.help-on .btn[aria-checked=true][title]:after,.help-on .btn[aria-selected=true][title]:after{color:color-mix(in srgb,var(--accent-ink) 82%,transparent)}.help-on .btn[title]:after{text-align:center;margin:0 auto}.help-on [role=tab][title]:after,.help-on [role=radio][title]:after{display:none}@media(max-width:600px){.help-bar{flex-wrap:wrap}.help-bar>.grow{flex-basis:calc(100% - 36px)}.help-bar .help-bar-lines li:not(:first-child),.help-bar .field-hint{display:none}.help-bar>.btn{margin-left:auto}}.toasts{bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 16px)}@media(min-width:900px){.toasts{bottom:24px}}body:has(.dialog-backdrop) .toasts{top:16px;bottom:auto}:root[data-theme=dark] .toast-error{background:#9b3b3b}:root{--ok: #2e7d32;--warn-ink: #9a5b00;--danger-strong: #a8322b}:root[data-theme=dark]{--ok: #7fc485;--warn-ink: #e0a94f;--danger-strong: #b8453e}.health-ok .health-icon{color:var(--ok)}.health-warn .health-icon{color:var(--warn-ink)}.quiz-choice.quiz-right{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,var(--bg))}.quiz-verdict{flex:none}.quiz-right .quiz-verdict{color:var(--ok)}.quiz-wrong .quiz-verdict{color:var(--danger)}.btn.btn-danger{background:var(--danger-strong);color:#fff;border-color:var(--danger-strong)}.btn.btn-danger:hover{background:color-mix(in srgb,var(--danger-strong) 86%,#000);border-color:color-mix(in srgb,var(--danger-strong) 86%,#000)}.lived-through{line-height:1.9}.lived-through-link{color:var(--ink);font-weight:500;border-bottom:1px solid color-mix(in srgb,var(--ink-faint) 55%,transparent)}.history-toggle:not([aria-pressed=true]){border-color:var(--line-strong);color:var(--ink-soft)}.history-toggle:not([aria-pressed=true]):hover{color:var(--ink);background:var(--bg-sunken)}.history-toggle[aria-pressed=true]{background:var(--hist-world);border-color:var(--hist-world);color:#fff;font-weight:600}.history-toggle.history-vietnam[aria-pressed=true]{background:var(--hist-vietnam);border-color:var(--hist-vietnam);color:#fff}.history-toggle.history-us[aria-pressed=true]{background:var(--hist-us);border-color:var(--hist-us);color:#fff}.history-toggle[aria-pressed=true]:hover{filter:brightness(1.08)}.book-entry-name,.who-choice,.quiz-choice,.desc-initials{font-family:var(--font-display)}.chart-pane-head{padding-left:max(16px,calc((100% - 780px)/2));padding-right:max(16px,calc((100% - 780px)/2))}.guide-address{word-break:normal;overflow-wrap:anywhere;font-size:clamp(.95rem,4.3vw,1.3rem)}@media(max-width:640px){.viewer-actions{display:grid;grid-template-columns:1fr 1fr}.viewer-actions .btn,.viewer-actions>div>.btn{width:100%}.viewer .action-menu{bottom:calc(env(safe-area-inset-bottom) + 12px)!important}}.section-subtitle{font-family:var(--font-body)}.book-toc{margin-bottom:40px;padding-bottom:22px;border-bottom:1px solid var(--line)}.timeline-entry-history .timeline-title{position:relative;padding-right:34px}.timeline-entry-history .hist-more-btn{position:absolute;right:0;top:0;margin:0;vertical-align:baseline}@media(max-width:899px){.timeline-entry-history .timeline-title{padding-right:36px}.hist-more-btn{width:26px;height:26px}.hist-more-btn:before{content:"";position:absolute;inset:-8px}}.segmented{display:inline-flex;flex-wrap:nowrap;gap:2px;padding:3px;max-width:100%;overflow-x:auto;scrollbar-width:none;border-radius:999px;background:var(--bg-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.segmented::-webkit-scrollbar{display:none}.segmented-btn{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:6px 14px;border:none;border-radius:999px;background:transparent;color:var(--ink-soft);font:inherit;font-size:var(--text-sm);font-weight:500;white-space:nowrap;cursor:pointer;transition:background .14s ease,color .14s ease}.segmented-btn:hover{color:var(--ink);background:var(--bg-sunken)}.segmented-btn[aria-checked=true],.segmented-btn[aria-selected=true]{background:var(--accent);color:var(--accent-ink)}.segmented-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field-error{margin:-6px 0 12px;color:var(--danger);font-size:var(--text-sm);font-weight:500}.input[aria-invalid=true]{border-color:var(--danger)}.input[aria-invalid=true]:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 20%,transparent)}@media(max-width:560px){.desc-partners{flex-basis:100%;padding-left:40px;margin-top:-4px}}.skeleton-row:first-child{border-top:none}.places-map-empty{margin-bottom:18px}.who-actions{background:var(--bg);border-top:1px solid var(--line);box-shadow:0 -8px 16px -12px #3a302640}.btn-inline{padding-left:0;padding-right:0}.dialog .btn-inline,.card .btn-inline{color:var(--accent)}.btn-inline:hover{background:transparent;text-decoration:underline;text-underline-offset:2px}.field .field-hint{margin:0}.tree-era-toggle{display:inline-flex;position:absolute;left:16px;bottom:76px;z-index:15}.tree-era-toggle.is-hidden,.tree-era:not(.is-open){display:none}@media(max-width:640px){.tree-era-toggle{right:12px;left:auto;bottom:134px;width:40px;height:40px;padding:0;box-shadow:var(--shadow-md)}.tree-era-toggle-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}@media(max-width:640px){.chart-pane-body{justify-content:safe center}}.chart-explainer summary{width:fit-content;margin-top:3px;color:var(--accent);cursor:pointer}.chart-explainer p{margin:4px 0 0;max-width:560px}@media(max-width:899px){.person-row-edit{min-width:40px;min-height:40px}}.topbar{padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}@media(max-width:899px){.topbar{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}}h1,h2,h3,.guide-title{text-wrap:balance}@media(max-width:480px){.person-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.person-actions>:first-child{grid-column:1 / -1}.person-actions .btn,.person-actions>div>.btn{width:100%}}@media(max-width:560px){.settings-tabs{display:grid;grid-template-columns:1fr 1fr;border-radius:16px;overflow:visible}.settings-tabs .segmented-btn{justify-content:center;border-radius:12px}}.fan-empty:not(.fan-addable) path{fill:none;stroke:var(--line-strong);stroke-width:1;stroke-dasharray:3 4;opacity:.7}@media(max-width:480px){.segmented-btn{padding-left:11px;padding-right:11px}}@media(max-width:899px){.research-tick{position:relative}.research-tick:before{content:"";position:absolute;inset:-8px}}@media(hover:none){.person-row-edit,.avatar-edit,.rel-card .btn-sm,.rel-add{min-width:44px;min-height:44px}}.viewer-stage .btn{background:#ffffff1a;border-color:#ffffff3d;color:#f3efe9}.viewer-stage .btn:hover{background:#ffffff2e}@media(max-width:380px){.app-switcher-btn{display:none}.topbar-actions{gap:2px}.topbar-actions .btn{padding-left:6px;padding-right:6px}.tree-legend{top:62px;left:14px;right:auto}}@media(max-width:480px){.page-actions{grid-template-columns:1fr}}@media(max-width:640px){.viewer-picture{width:100%}.viewer-picture>img,.viewer-picture .face-frame,.viewer-picture .face-frame img{width:100%}}.viewer-panel{margin-bottom:max(14px,env(safe-area-inset-bottom));border-radius:14px}.tree-era,.tree-actions,.tree-minimap,.view-switch,.tree-era-toggle,.tree-controls .btn{box-shadow:0 0 0 5px color-mix(in srgb,var(--bg) 52%,transparent),var(--shadow-md)}:root[data-theme=dark] .tree-era,:root[data-theme=dark] .tree-actions,:root[data-theme=dark] .tree-minimap,:root[data-theme=dark] .view-switch,:root[data-theme=dark] .tree-era-toggle,:root[data-theme=dark] .tree-controls .btn{box-shadow:0 0 0 5px color-mix(in srgb,var(--bg-sunken) 70%,transparent),var(--shadow-md)}.chart-pane-descendants .chart-pane-body{-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 44px),transparent 100%);mask-image:linear-gradient(to bottom,#000 calc(100% - 44px),transparent 100%);scrollbar-width:thin}.dialog-body{background:linear-gradient(var(--bg-raised) 30%,transparent) center top / 100% 28px no-repeat local,radial-gradient(farthest-side at 50% 0,rgba(0,0,0,.14),transparent) center top / 100% 10px no-repeat scroll}.person-facts>div,.person-origins{position:relative;padding-left:26px}.person-origins>.indicator:first-child,.person-facts>div>.indicator-row:first-child{position:absolute;left:0;top:.15em;margin:0;font-size:var(--text-base)}.person-origins .indicator-flag{font-size:var(--text-base)}.search-row-mark{flex:none;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:var(--bg-sunken);color:var(--ink-faint)}.search-target{background:var(--bg-sunken)}.search-enter{margin-left:auto}@media(hover:none){.search-enter{display:none}}.page-narrow{max-width:720px}.page-medium{max-width:860px}:root:not([data-theme=dark]) .viewer-panel{--bg: #191c1a;--bg-raised: #262b27;--bg-sunken: #131614;--ink: #e8e5e0;--ink-soft: #b4b0a9;--ink-faint: #a19c93;--line: #333834;--line-strong: #464c47;--accent: #6fa287;--accent-strong: #8ab8a0;--accent-soft: #263329;--accent-ink: #10140f;--danger: #d47f7f;--danger-soft: #3a2626;color-scheme:dark}.viewer-panel .btn-primary{background:linear-gradient(180deg,var(--accent-strong) 0%,var(--accent) 100%);border-color:var(--accent);box-shadow:none}.viewer-panel .btn-primary:hover{background:var(--accent-strong)}.who-photo{width:fit-content;max-width:100%;margin-inline:auto}.who-photo.is-zoomed{width:100%}.who-actions:before{content:"";position:absolute;left:0;right:0;top:-28px;height:28px;background:linear-gradient(to bottom,transparent,var(--bg));pointer-events:none}.card-row-link{padding-right:33px}.notice-text{max-width:52ch}.person-row .indicator{width:1.3em;height:1.3em;font-size:.85em}.indicator-glyph{color:var(--ink-soft)}.indicator-glyph svg{width:.95em;height:.95em}.places-usage{margin-left:7px}.places-note .inline-edit-empty{font-size:var(--text-sm)}.places-note.has-note{display:block;margin-top:4px}.places-map-empty{border-style:dashed;background:transparent;box-shadow:none;min-height:132px;display:grid;place-items:center;text-align:center}.book-entry-facts{grid-template-columns:10em minmax(0,1fr)}@media(max-width:480px){.book-entry-facts{grid-template-columns:minmax(0,1fr);gap:0}.book-entry-facts dt{margin-top:6px}}.album-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}@media(min-width:700px){.people-list section{display:grid;grid-template-columns:1fr 1fr}.people-list .list-letter{grid-column:1 / -1}}.settings-page .field-hint{max-width:64ch}.tree-node-absent{opacity:1}.tree-node-absent .tree-node-card,.tree-node-absent image,.tree-node-absent .tree-avatar,.tree-node-absent .tree-avatar-text{opacity:.35}.tree-node-absent .tree-node-name{fill:var(--ink-soft)}.tree-node-absent .tree-node-years{fill:var(--ink-faint)}.tree-tier-0 .tree-node:hover .tree-node-card{filter:drop-shadow(0 7px 16px rgba(58,48,38,.3))}.tree-tier-0 .tree-node:hover{transform:translateY(-2px)}@media(prefers-reduced-motion:reduce){.tree-tier-0 .tree-node:hover{transform:none}}:root[data-theme=dark] .tree-tier-0 .tree-node:hover .tree-node-card{filter:drop-shadow(0 7px 16px rgba(0,0,0,.65))}.descendant-chart.avatar-shape-rounded .desc-initials{border-radius:22%}.descendant-chart.avatar-shape-square .desc-initials{border-radius:0}.timeline-entry-history .timeline-entry-year,.timeline-entry-history.history-vietnam .timeline-entry-year,.timeline-entry-history.history-us .timeline-entry-year{color:var(--ink-soft);font-weight:600}@media(max-width:480px){.stat-value{font-size:1.4rem}.stat-cell{min-height:64px}}a.btn:hover,.action-menu .menu-item:hover{text-decoration:none}.btn-ghost:not(.btn-danger-ghost):hover{border-color:transparent}.btn svg{width:16px;height:16px}.btn-sm svg{width:14px;height:14px}.btn-lg svg{width:18px;height:18px}.topbar .btn svg,.tree-controls .btn svg,.viewer-close svg,.slideshow-controls .btn svg{width:19px;height:19px}.settings-page label.row{padding:4px 6px;margin:-4px -6px;border-radius:8px;transition:background .14s ease}.settings-page label.row:hover{background:var(--bg-sunken)}.skeleton-avatar{width:48px;height:48px;border-radius:22%}.bottombar{height:auto;min-height:calc(var(--nav-h) + env(safe-area-inset-bottom))}.bottombar .navlink{padding-bottom:5px}.dialog form>.row{flex-wrap:wrap}.help-on .btn[title]:after{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;flex:0 0 100%;min-width:100%;max-width:none}.help-on .btn[title]:after{padding-inline:max(0px,calc((100% - 200px)/2))}.help-on .page-header .row,.help-on .page-actions,.help-on .section-head,.help-on .person-actions{align-items:stretch}@media(max-width:640px){.page-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}.page-actions>[role=tablist],.page-actions>.segmented,.page-actions>.btn-primary{grid-column:1 / -1}.page-actions .btn{width:100%}.page-actions>.segmented{display:flex}.page-actions>.segmented>.segmented-btn{flex:1;justify-content:center}.viewer-stage{align-items:center}.viewer-actions>.grow{display:none}.viewer-actions>.viewer-steps{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:6px}.viewer-actions .btn{min-height:44px}.topbar .btn,.app-switcher-btn,.topbar-logo{min-width:40px;min-height:40px}.lang-switch button{min-height:40px}button.chip,a.chip{min-height:36px}.segmented-btn{min-height:40px}}@media(max-width:899px){.topbar{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.page{padding-left:16px;padding-right:16px}}.timeline.card-pad{padding-left:46px}.timeline.card-pad:before{left:29px}.settings-page .field{max-width:480px}.notice-warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--gold) 42%,var(--line))}.tree-skeleton{position:absolute;inset:0;background:var(--bg);overflow:hidden}.tree-skeleton-switch{position:absolute;left:14px;top:14px;width:240px;height:38px;border-radius:999px}.tree-skeleton-stage{position:absolute;inset:78px 16px 90px;display:flex;flex-direction:column;justify-content:space-evenly}.tree-skeleton-row{display:flex;gap:42px;justify-content:center}.tree-skeleton-card{width:104px;height:86px;border-radius:14px}@media(max-width:640px){.tree-skeleton-card{width:76px;height:66px}.tree-skeleton-row{gap:22px}}.settings-stamp{margin:28px 0 0;padding-top:12px;border-top:1px solid var(--line);color:var(--ink-faint);font-variant-numeric:tabular-nums}.settings-page label.row{align-items:flex-start}.settings-page label.row>input[type=checkbox]{margin-top:2px}.display-menu{scrollbar-width:thin}.display-menu .segmented{margin-bottom:2px}.display-marks{margin-top:4px}.display-marks summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;padding:6px 0}.display-marks summary::-webkit-details-marker{display:none}.display-marks summary:before{content:"";width:6px;height:6px;border-right:1.5px solid var(--ink-soft);border-bottom:1.5px solid var(--ink-soft);transform:rotate(-45deg);transition:transform .15s ease}.display-marks[open] summary:before{transform:rotate(45deg)}.fan-add-mark circle{fill:var(--bg-raised);stroke:var(--line-strong)}.fan-add-mark text{fill:var(--accent);font-weight:700;font-family:var(--font-body)}.fan-addable:hover .fan-add-mark circle{stroke:var(--accent)}.chart-pane-descendants .chart-pane-body>.descendant-chart{max-width:780px}@media(min-width:900px){.app-switcher-btn{min-height:34px;background:var(--bg-raised);border-color:var(--line-strong)}.lang-switch button{min-height:32px;padding:6px 10px}}@media(hover:hover){.timeline-item .btn-danger-ghost{position:absolute;right:0;top:0;opacity:0;transition:opacity .15s ease}.timeline-item:hover .btn-danger-ghost,.timeline-item:focus-within .btn-danger-ghost{opacity:1}}@media(max-width:480px){.person-row-sub .indicator-row{flex-basis:100%}}.tree-node:focus-visible{outline:none}.tree-node:focus-visible .tree-node-card,.tree-node:focus-visible .tree-bubble{stroke:var(--accent);stroke-width:3;paint-order:stroke}.skeleton-tile{aspect-ratio:1;border-radius:var(--radius-md)}.skeleton-card{padding:20px}@media(max-width:480px){.history-toggles{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px}.history-toggles>span{grid-column:1 / -1}.history-toggles .btn{width:100%}}
