@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: #67625b;--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) 42%, 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:1.5rem;line-height:1.25}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}@media(hover:hover){.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);box-shadow:inset 0 1px 2px #0000001f}.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}.btn-primary:active{background:var(--accent-strong);box-shadow:inset 0 2px 4px #00000038}: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;max-width:100%}.btn-sub{display:block;font-weight:400;font-size:var(--text-sm);opacity:.85}@media(max-width:640px){.btn-long{white-space:normal;text-align:left;line-height:1.25;justify-content:flex-start}}.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;min-height:100dvh;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 cubic-bezier(.16,1,.3,1),transform .18s cubic-bezier(.16,1,.3,1),border-color .18s ease}@media(hover:hover){.card-interactive:hover{box-shadow:var(--shadow-lift);border-color:var(--line-strong);transform:translateY(-1px)}}.card-interactive:active,.more-tile:active,.album-card:active,.quiz-choice:active,.who-choice:active,.anniversary:active{transform:translateY(0) scale(.992);box-shadow:var(--shadow-sm);transition:transform .05s ease,box-shadow .05s ease}.segmented-btn:active,button.chip:active{transform:scale(.97);transition:transform .06s ease}.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;font-family:var(--font-body)}.chip-accent{background:var(--accent-soft);color:var(--accent)}.chip-warn{background:var(--warn-soft);color:var(--warn-ink)}.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}.dialog-footer{padding-bottom:max(18px,calc(env(safe-area-inset-bottom) + 14px))}}.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}@media(hover:hover){.toast-action:hover{background:color-mix(in srgb,var(--bg) 18%,transparent)}}.shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;height:100vh;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}}.status-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;font-size:var(--text-xs);font-weight:600;line-height:1;border:1px solid transparent;-webkit-user-select:none;user-select:none;cursor:default;transition:background .15s ease,color .15s ease,border-color .15s ease}.status-pill-online{background:#2e7d321f;color:#2e7d32;border-color:#2e7d3240}.status-pill-offline{background:#e6510024;color:#d84315;border-color:#e651004d}.status-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot-online{background:#2e7d32;box-shadow:0 0 0 2px #2e7d3233}.status-dot-offline{background:#d84315;box-shadow:0 0 0 2px #d8431533}:root[data-theme=dark] .status-pill-online{background:#4caf502e;color:#81c784;border-color:#4caf5059}:root[data-theme=dark] .status-pill-offline{background:#ff98002e;color:#ffb74d;border-color:#ff980059}:root[data-theme=dark] .status-dot-online{background:#66bb6a;box-shadow:0 0 0 2px #66bb6a4d}:root[data-theme=dark] .status-dot-offline{background:#ffa726;box-shadow:0 0 0 2px #ffa7264d}@media(max-width:640px){.status-pill .status-pill-text{display:none}.status-pill{padding:7px}}.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}@media(hover:hover){.navlink:hover{background:var(--bg-sunken);color:var(--ink);text-decoration:none}}.navlink.active{background:color-mix(in srgb,var(--accent) 30%,var(--bg-raised));color:var(--accent-strong);font-weight:600}:root[data-theme=dark] .navlink.active{color:color-mix(in srgb,var(--accent-strong) 75%,var(--ink))}.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}.bottombar .navlink.active svg{background:color-mix(in srgb,var(--accent) 30%,var(--bg-raised));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}@media(hover:hover){.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 cubic-bezier(.16,1,.3,1)}.photo-tile:hover img{transform:scale(1.04)}.photo-tile:active img{transform:scale(.98)}.photo-tile.search-target{outline:3px solid var(--accent);outline-offset:-2px;transform:scale(1.04)}.viewer{position:fixed;inset:0;height:100vh;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);max-height:calc(100dvh - 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:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:50%}.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:44px;height:44px}}.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 .35s cubic-bezier(.65,0,.35,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.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;margin:0 -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;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.page-enter{animation:none!important;transform:none!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-group{cursor:default;align-items:flex-start}.anniversary-group:hover{border-color:transparent;background:transparent}.anniversary-group .grow{padding-top:5px;line-height:1.5}.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}.places-map-hint{margin:0;padding:8px 14px;font-size:var(--text-sm);color:var(--ink-soft);border-bottom:1px solid var(--line)}.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-pin circle.map-dot{pointer-events:none}.map-pin circle.map-hit,.map-pin.is-hovered circle.map-hit,.map-pin.is-selected circle.map-hit{fill:transparent;stroke:none}.map-pin circle.map-hit:focus-visible{outline:none}.map-pin:has(.map-hit:focus-visible) .map-dot{stroke:var(--ink);stroke-width:3}.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}.map-pin circle.map-hit{pointer-events:none}.places-map-canvas{position:relative}.map-unlabelled{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 14px 0}.map-unlabelled-chip{min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line-strong);background:var(--bg-raised);color:var(--ink);font:inherit;font-size:var(--text-sm);cursor:pointer}.map-unlabelled-chip:hover{border-color:var(--accent)}.map-unlabelled-chip.is-on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.map-pin circle.map-dot-under{fill:color-mix(in srgb,var(--accent) 22%,var(--bg-sunken))}.map-count{fill:var(--accent-ink);font-weight:700;pointer-events:none}.map-pin:not(.is-hovered) .map-count{fill:var(--ink)}.map-leader{stroke:var(--ink-soft);opacity:.6;pointer-events:none}.map-chip{pointer-events:none}.map-chip rect{fill:var(--bg-raised);stroke:var(--accent)}.map-chip text{font-family:var(--font-display);font-weight:700;fill:var(--ink)}.map-chooser{position:absolute;z-index:5;display:flex;flex-direction:column;padding:5px;background:var(--bg-raised);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg)}.map-chooser-item{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 10px;border:none;border-radius:8px;background:none;font:inherit;color:var(--ink);text-align:left;cursor:pointer}.map-chooser-item:hover,.map-chooser-item.is-on{background:var(--accent-soft)}.map-chooser-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.map-chooser-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-chooser-count{color:var(--ink-soft);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.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:min(940px,calc((100dvh - 180px)*1.714));aspect-ratio:624 / 364;height:auto;align-self:center;margin:0 auto}.chart-pane-body>.descendant-chart{width:100%;max-width:860px;margin:0 auto}@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;cursor:pointer;font:inherit;transition:border-color .15s ease,color .15s ease}.desc-more:hover{border-color:var(--accent);color:var(--accent)}@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-common>summary{list-style:none}.gap-common>summary::-webkit-details-marker{display:none}.gap-common[open]>summary{border-bottom:1px solid var(--line)}.gap-common>.gap-row{padding-left:14px}.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: #67625b;--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}@media(hover:hover){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{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}.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:min(70vh,calc(100dvh - var(--nav-h) - 96px))!important;z-index:250!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}.dates-row.dates-month-only{align-items:flex-start}.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}.person-native-name{margin:0;font-family:var(--font-display);font-size:var(--text-lg);color:var(--ink-soft)}.life-summary-card{margin:12px 0 14px;padding:12px 18px;background:var(--accent-soft);border-left:3px solid var(--accent);border-radius:0 var(--radius-md) var(--radius-md) 0}.life-summary-prose{margin:0;font-family:var(--font-display);font-size:var(--text-base);line-height:1.65;color:var(--ink);font-style:italic}.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-offline{display:flex;align-items:center;gap:8px;margin:14px 0 0;padding:12px 14px;border:1px dashed var(--line-strong);border-radius:14px}.who-offline svg{flex:none}.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;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;min-height:100dvh;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-top{margin-top:6px;font-size:var(--text-sm)}.help-bar-top summary{cursor:pointer;color:var(--accent);font-weight:600;padding:6px 0}.help-bar-top ul{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:6px;line-height:1.4}.help-bar-top li{display:flex;gap:8px;align-items:flex-start}.help-bar-top li svg{flex:none;margin-top:2px;color:var(--ink-soft)}.help-bar-float .help-bar-top{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}@media(hover:hover){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}.topbar:is([data-fit=tight],[data-fit=small],[data-fit=icons]) .topbar-nav{gap:0}.topbar[data-fit=tight] .topbar-nav .navlink{padding-left:8px;padding-right:8px}.topbar[data-fit=small] .topbar-nav .navlink{padding-left:6px;padding-right:6px;font-size:var(--text-sm)}.topbar:is([data-fit=tight],[data-fit=small],[data-fit=icons]) .app-switcher-text{display:none}.topbar:is([data-fit=tight],[data-fit=small],[data-fit=icons]) .app-switcher-btn{padding:8px}.topbar:is([data-fit=tight],[data-fit=small],[data-fit=icons]) .status-pill-online .status-pill-text{display:none}.topbar:is([data-fit=tight],[data-fit=small],[data-fit=icons]) .status-pill-online{padding:7px}.topbar[data-fit=icons] .topbar-nav .navlink{padding-left:11px;padding-right:11px}.topbar[data-fit=icons] .topbar-nav .navlink-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.topbar[data-fit=icons] .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:600}@media(max-width:899px){.btn-sm{min-height:44px}.lang-switch button{min-height:44px;min-width:44px}.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 14px 10px 22px;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-dialog .dialog-body{padding:8px 12px 16px}.search-dialog .search-section-label{margin:0;padding:14px 10px 4px;font-family:var(--font-body);font-size:var(--text-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.search-dialog .search-photos-row{display:flex;gap:8px;flex-wrap:wrap;padding:0 10px}.search-dialog .person-row{width:100%;border:none;background:transparent;padding:8px 10px;text-align:left}.search-dialog .person-row:hover,.search-dialog .person-row.search-target{background:var(--bg-sunken)}@media(max-width:640px){.search-backdrop{align-items:stretch;padding:0}.search-dialog{height:100vh;height:100dvh;max-height:100dvh;border:none;border-radius:0;animation:fadeIn .15s ease}.search-field{padding-top:max(14px,env(safe-area-inset-top))}}.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}@media(max-width:899px){.toasts{left:12px;right:12px;transform:none;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 12px);align-items:center}.toast{max-width:min(360px,100%);border-radius:22px;padding:11px 18px;display:flex;align-items:center;gap:10px}.toast-action{margin-left:auto;flex:none}}.toast{text-wrap:balance}@media(hover:none),(pointer:coarse){.toast-action{min-height:44px;min-width:64px;margin-block:-6px}}html.kb-open .bottombar{display:none}html.kb-open body:not(:has(.dialog-backdrop)) .toasts{bottom:12px}: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:var(--hist-ink);font-weight:600}.history-toggle.history-vietnam[aria-pressed=true]{background:var(--hist-vietnam);border-color:var(--hist-vietnam);color:var(--hist-ink)}.history-toggle.history-us[aria-pressed=true]{background:var(--hist-us);border-color:var(--hist-us);color:var(--hist-ink)}.history-toggle[aria-pressed=true]:hover{filter:brightness(1.08)}.book-entry-name,.quiz-choice,.desc-initials{font-family:var(--font-display)}.who-choice>span>span:first-child{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}.field-warn{margin:-6px 0 12px;padding:6px 10px;border-radius:8px;background:var(--warn-soft);color:var(--ink);font-size:var(--text-sm)}.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:44px;height:44px;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:44px;min-height:44px}}.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;white-space:normal;line-height:1.2;text-align:center}}.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:380px){.segmented-btn{padding-left:9px;padding-right:9px;gap:4px}.segmented-btn:not([aria-label])>svg[aria-hidden]{display:none}}@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){.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:0}.places-row .grow>.inline-edit:first-child{margin-right:3px}.places-note .inline-edit-empty{font-size:var(--text-sm)}.places-note .inline-edit{padding-top:8px;padding-bottom:8px;margin-top:-8px;margin-bottom:-8px}.places-note.has-note{display:block;margin-top:4px}.places-meta,.places-note:not(.has-note) .inline-edit{white-space:nowrap}@media(max-width:640px){.places-usage,.places-usage .places-meta,.places-note:not(.has-note){display:block}.places-usage .places-meta+.places-meta{margin-top:1px}.places-note:not(.has-note){margin-top:2px}.places-sep{display:none}}@media(max-width:480px){.person-row-sep{display:none}}.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:44px;min-height:44px}.lang-switch button{min-height:44px;min-width:44px}button.chip,a.chip,.segmented-btn{min-height:44px}}@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%}}.tree-topstrip{position:absolute;top:14px;left:14px;z-index:15;max-width:calc(100% - 28px);display:flex;flex-wrap:wrap;align-items:center;gap:8px;pointer-events:none}.tree-topstrip>*{pointer-events:auto}.tree-topstrip .tree-toolbar{position:static}.tree-legend-host:empty{display:none}.tree-legend-host .tree-legend{position:static}.tree-topstrip .tree-coverage{position:relative;top:auto;left:auto;transform:none;max-width:100%;align-items:flex-start}.tree-topstrip .tree-coverage-panel{position:absolute;top:100%;left:0;width:min(380px,calc(100vw - 28px))}@media(min-width:901px){.tree-topstrip{max-width:calc(100% - 420px)}}@media print{.tree-topstrip{display:none!important}}.tree-legend .legend-short{display:none}@media(max-width:480px){.tree-legend .legend-long,.tree-coverage-lead{display:none}.tree-legend .legend-short{display:inline}.tree-legend-host{order:3}}@media(max-width:440px){.app-switcher-btn{display:none}.topbar-actions{gap:2px}.topbar-actions .btn{padding-left:6px;padding-right:6px}}.more-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.more-tile{display:flex;align-items:center;gap:14px;padding:14px 16px;min-height:64px;color:var(--ink);text-decoration:none}.more-tile:hover{border-color:var(--accent)}.more-tile-icon{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft, var(--wash));color:var(--accent)}.more-tile-text{display:flex;flex-direction:column;gap:2px;min-width:0}.more-tile-label{font-weight:600;font-size:var(--text-base)}.more-tile-hint{font-size:var(--text-sm);color:var(--ink-soft)}.tech-details summary{cursor:pointer;color:var(--ink-soft);font-weight:600}.tech-details[open] summary{margin-bottom:6px}.photo-filter-chip{border:none;cursor:pointer;font:inherit;font-size:var(--text-sm);min-height:32px}@media(hover:none),(pointer:coarse){.page-back{min-height:44px;padding-right:10px}.dialog-close,.viewer-close,.place-card-close{min-width:44px;min-height:44px}button.photo-filter-chip{min-height:44px;padding-left:14px;padding-right:14px}}.tree-coverage-short{display:none}@media(max-width:400px){.tree-coverage-long{display:none}.tree-coverage-short{display:inline;font-variant-numeric:tabular-nums}.tree-topstrip .tree-coverage-pill{padding-left:10px;padding-right:12px}.tree-legend{white-space:nowrap}}@media(min-width:641px){:has(>.tree-panel)>.tree-topstrip{max-width:calc(100% - 422px)}.tree-topstrip .tree-legend-host{max-width:100%}.tree-topstrip .tree-legend{flex-wrap:wrap;row-gap:2px;border-radius:16px}}@media(min-width:901px){.tree-topstrip{max-width:calc(100% - 408px)}}.tree-actions,:root[data-theme=dark] .tree-actions{box-shadow:none}.tree-actions .btn{box-shadow:0 0 0 5px color-mix(in srgb,var(--bg) 52%,transparent),var(--shadow-md)}:root[data-theme=dark] .tree-actions .btn{box-shadow:0 0 0 5px color-mix(in srgb,var(--bg-sunken) 70%,transparent),var(--shadow-md)}@media(max-width:640px){.tree-era-toggle{left:12px;right:auto;bottom:86px;width:auto;height:40px;padding:0 14px;gap:6px}.tree-era-toggle-text{position:static;width:auto;height:auto;overflow:visible;clip:auto}}.tree-era-caption{position:absolute;left:10px;bottom:calc(100% + 8px);margin:0;max-width:calc(100% - 20px);padding:4px 10px;border-radius:10px;background:var(--bg-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm);font-size:var(--text-xs);line-height:1.35;color:var(--ink-soft);display:flex;align-items:center;gap:6px;pointer-events:none}@media(max-width:640px){.chart-pane-body:has(>.fan-chart){padding:10px 6px}}.places-tidy{display:flex;justify-content:flex-end;margin-top:10px}.places-header-actions{flex-wrap:wrap;justify-content:flex-end;min-width:0;max-width:100%}@media(hover:none),(pointer:coarse){.places-tidy .btn{min-height:44px}}.tree-era-caption-swatch{flex:none;width:14px;height:10px;border-radius:3px;border:1.5px dashed var(--ink-soft);opacity:.6}.tree-actions-host{display:contents}.tree-actions{align-items:center}.tree-actions .tree-era-toggle{position:static;left:auto;right:auto;bottom:auto}@media(max-width:640px){.tree-actions{left:12px;right:12px;flex-wrap:wrap}.tree-actions .btn{min-height:40px}.tree-actions .tree-era-toggle{width:auto;height:auto;padding:0 14px}}.tree-legend-toggle{display:none}@media(max-width:480px){.tree-legend-host{order:0}.tree-legend-host:has(.tree-legend.is-open){order:3}.tree-legend:not(.is-open){padding:0;gap:0}.tree-legend:not(.is-open) .tree-legend-item{display:none}.tree-legend-toggle{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:44px;min-height:44px;padding:0 10px;border:none;border-radius:999px;background:transparent;cursor:pointer;pointer-events:auto;color:inherit}.tree-legend.is-open .tree-legend-toggle{min-width:44px;min-height:44px;padding:0 6px}}@media(max-width:440px){.tree-coverage-long{display:none}.tree-coverage-short{display:inline;font-variant-numeric:tabular-nums}.tree-topstrip .tree-coverage-pill{padding-left:10px;padding-right:12px}}.tree-unplaced-toggle{cursor:pointer}.tree-unplaced-toggle rect{fill:var(--bg-raised);stroke:var(--accent);stroke-width:1.2}.tree-unplaced-toggle text{fill:var(--accent);font-weight:600;dominant-baseline:auto}.tree-unplaced-toggle:hover rect,.tree-unplaced-toggle:focus-visible rect{fill:var(--accent-soft)}.tree-unplaced-toggle:focus-visible{outline:none}.tree-unplaced-toggle:focus-visible rect{stroke-width:2.4}.tree-unplaced-toggle rect.tree-unplaced-hit,.tree-unplaced-toggle:hover rect.tree-unplaced-hit,.tree-unplaced-toggle:focus-visible rect.tree-unplaced-hit{fill:transparent;stroke:none}.tree-minimap-unplaced{opacity:.22}.tree-minimap{right:80px}.tree-panel-actions{display:flex;gap:8px;margin-top:12px}.tree-panel-actions>.btn{flex:1 1 0;min-width:0}.tree-panel-actions>.tree-panel-more-toggle{display:none;flex:0 0 auto;width:44px;padding:0}.tree-panel-secondary{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:8px}.tree-panel-secondary .btn{min-height:36px}@media(max-width:640px){.tree-panel{inset:auto 8px 10px;width:auto;max-height:calc(100% - 96px);padding:12px 14px 14px;border-radius:18px}.tree-panel-actions{margin-top:10px}.tree-panel-actions>.tree-panel-more-toggle{display:inline-flex;justify-content:center}.tree-panel-secondary:not(.is-open){display:none}.tree-panel-secondary .btn{min-height:44px}}.people-az{display:none}@media(max-width:640px){.people-az{position:fixed;z-index:12;right:6px;top:calc(64px + env(safe-area-inset-top));bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 8px);display:flex;flex-direction:column;justify-content:center;gap:0;padding:4px 0;background:transparent;touch-action:none}.people-az button{flex:0 1 36px;min-height:18px;width:36px;padding:0;border:none;background:transparent;font:inherit;font-size:var(--text-xs);font-weight:700;color:var(--accent);cursor:pointer}.people-az button:active{background:var(--accent-soft);border-radius:8px}body:has(.people-az) .page{padding-right:46px}body:has(.people-az) .people-list{margin-right:0}}.person-row-namesake{color:var(--ink-soft)}.people-filter-hint{flex-basis:100%;margin:-4px 0 0}.add-relative-mode{display:flex;width:100%;margin-bottom:14px;overflow:visible}.add-relative-mode .segmented-btn{flex:1 1 0;justify-content:center;text-align:center;white-space:normal;line-height:1.2;min-height:44px}.add-relative-mode{align-items:stretch;border-radius:17px}.add-relative-mode .segmented-btn{border-radius:14px}.row.pf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;align-items:start}@media(max-width:360px){.row.pf-grid{grid-template-columns:minmax(0,1fr)}}.keeper-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:4px}.keeper-row .keeper-line{min-height:44px}.howto-card{margin-top:14px}.howto-list{list-style:none;margin:10px 0 12px;padding:0;display:grid;gap:8px}.howto-list li{display:flex;align-items:flex-start;gap:10px;font-size:var(--text-sm);color:var(--ink-soft)}.howto-list li>svg{flex:none;margin-top:1px;color:var(--ink)}.howto-dot{flex:none;width:10px;height:10px;margin:5px 4px 0;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.howto-close{min-width:44px;min-height:44px;padding:0;justify-content:center}.lived-through-link,.profile-lookups a,.page a.person-name,.book-toc a,.link-inline,.timeline-title-link{position:relative}.lived-through-link:after,.profile-lookups a:after,.page a.person-name:after,.book-toc a:after,.link-inline:after,.timeline-title-link:after{content:"";position:absolute;inset:-9px -4px}@media(hover:hover){.page-back{min-height:36px;padding:0 10px 0 6px;margin-left:-6px;border-radius:8px}.page-back:hover{background:var(--bg-sunken)}.rel-edit{min-width:36px;min-height:36px;padding:0;justify-content:center}}.rel-edit{justify-content:center}@media(min-width:900px){.hist-more-btn{width:32px;height:32px;vertical-align:-10px}}@media(min-width:641px){a.chip{min-height:32px;display:inline-flex;align-items:center}}.settings-page label.row{min-height:44px}.settings-page label.row>input[type=checkbox]{width:20px;height:20px}.lived-through-link,.page a.person-name,.book-toc a,.timeline-title-link,.timeline-title a,.link-inline,.anniversary-group a{padding-top:7px;padding-bottom:7px}.lived-through-link{border-bottom:none;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--ink-faint) 55%,transparent)}.lived-through-link:hover{text-decoration-color:var(--accent)}.profile-lookups a{padding-top:6px;padding-bottom:6px;margin-top:-6px;margin-bottom:-6px}@media(min-width:900px){.inline-edit{padding:4px 6px;margin:-4px}.gap-prompt{padding:6px 4px;margin:-6px -4px}}@media(max-width:899px){.timeline-entry-history .hist-more-btn{width:44px;height:44px;top:-9px;right:-9px;border:9px solid transparent;background-clip:padding-box;box-shadow:inset 0 0 0 1px var(--line-strong)}.timeline-entry-history .hist-more-btn:before{inset:-4px}}.settings-page label.row>input[type=checkbox],.book-page label.row>input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;flex:none;width:32px;height:32px;margin:-6px;padding:0;border:none;background:transparent;cursor:pointer}.settings-page label.row>input[type=checkbox]:before,.book-page label.row>input[type=checkbox]:before{content:"";position:absolute;inset:6px;border:1.5px solid var(--ink-soft);border-radius:5px;background:var(--bg-raised)}.settings-page label.row>input[type=checkbox]:checked:before,.book-page label.row>input[type=checkbox]:checked:before{background:var(--accent);border-color:var(--accent)}.settings-page label.row>input[type=checkbox]:checked:after,.book-page label.row>input[type=checkbox]:checked:after{content:"";position:absolute;left:13px;top:9.5px;width:6px;height:11px;border:solid var(--accent-ink);border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}.settings-page label.row>input[type=checkbox]:focus-visible,.book-page label.row>input[type=checkbox]:focus-visible{outline:none}.settings-page label.row>input[type=checkbox]:focus-visible:before,.book-page label.row>input[type=checkbox]:focus-visible:before{outline:2px solid var(--accent);outline-offset:2px}.settings-page label.row>input[type=checkbox]:disabled,.book-page label.row>input[type=checkbox]:disabled{cursor:default;opacity:.5}.book-page label.row:has(>input[type=checkbox]){min-height:44px}@media(forced-colors:active){.settings-page label.row>input[type=checkbox]:checked:before,.book-page label.row>input[type=checkbox]:checked:before{background:Highlight;border-color:Highlight}}@media(max-width:640px){.offline-bar{flex-wrap:nowrap;justify-content:flex-start;text-align:left;align-items:center;gap:8px;padding:5px 10px 5px 12px;font-size:var(--text-sm);line-height:1.3}.offline-bar>svg{flex:none}.offline-bar>span{flex:1 1 auto;min-width:0}.offline-bar>.btn{flex:none;margin-left:0!important;min-height:44px;padding:4px 12px;white-space:nowrap}}.howto-card.is-compact .section-title{font-size:var(--text-base)}.howto-summary{margin:2px 0 0;font-size:var(--text-sm);color:var(--ink-soft)}.howto-summary .howto-more{display:inline-flex;align-items:center;min-height:32px;margin:-6px 0;padding:0 2px;background:transparent;border:none;border-radius:6px;cursor:pointer;font:inherit;font-weight:600;color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}.howto-summary .howto-more:hover{text-decoration-thickness:2px}.howto-summary .howto-more:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.howto-compact-actions{gap:8px;flex-wrap:wrap;margin-top:8px}.howto-card.is-compact{padding-top:10px;padding-bottom:10px}.howto-card.is-compact .howto-close{min-height:32px;min-width:32px}@media(hover:none),(pointer:coarse){.btn:not(.topbar *),.input,.select{min-height:44px}.btn-sm,.action-menu .menu-item{min-height:44px}.tree-controls .btn{width:44px;height:44px}.tree-coverage-pill{min-height:44px}.tree-legend-toggle,.person-row-edit,.rel-edit{min-width:44px;min-height:44px}.howto-close,.howto-card.is-compact .howto-close{min-width:44px;min-height:44px;margin-block:-6px}.segmented-btn,button.chip,a.chip{min-height:44px}.topbar .btn,.app-switcher-btn,.topbar-logo,.lang-switch button{position:relative}.topbar .btn:before,.app-switcher-btn:before,.topbar-logo:before,.lang-switch button:before{content:"";position:absolute;inset:-2px}.lang-switch button:first-child:before{right:0}.lang-switch button:last-child:before{left:0}.lang-switch{overflow:visible}.lang-switch button:first-child{border-radius:999px 0 0 999px}.lang-switch button:last-child{border-radius:0 999px 999px 0}}@media((hover:none)or (pointer:coarse))and (min-width:381px){.lang-switch button{min-width:44px}}@media(hover:none){.album-photo-remove{opacity:1;top:0;right:0;width:44px;height:44px;background:radial-gradient(circle,rgba(0,0,0,.55) 0 12px,transparent 12.5px)}}@media(max-width:640px){.anniversary-group .grow a{display:inline-flex;align-items:center;min-height:44px;vertical-align:middle;padding:0 4px;margin:0 -4px;white-space:nowrap}}.who-photo:has(>.stack){width:100%}.name-picker-sheet{padding-bottom:max(14px,calc(env(safe-area-inset-bottom) + 10px))}@media(hover:none){.input,.select,.textarea{font-size:max(16px,var(--text-base))}}.dialog-body,.search-dialog .dialog-body,.viewer-panel,.name-picker-list{overscroll-behavior-y:contain}@media(max-width:640px){.tree-topstrip .view-switch{padding:2px;border-radius:16px}.tree-topstrip .tree-coverage-pill{min-height:44px}.tree-topstrip .tree-legend:not(.is-open) .tree-legend-toggle{min-height:42px;min-width:44px}.tree-topstrip:before{content:"";position:absolute;z-index:-1;pointer-events:none;inset:-14px -14px -16px;background:linear-gradient(to bottom,var(--bg) calc(100% - 16px),transparent);-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent)}}@media(max-width:640px){.tree-era.is-open,.tree-era.tree-era-on{bottom:134px;left:12px;right:12px;width:auto;transform:none;z-index:15}body:has(.tree-era.is-open) .tree-panel{max-height:calc(100% - 270px)}}@media(max-width:640px){.view-switch-btn{position:relative;min-width:44px;min-height:38px;justify-content:center;flex-direction:column;gap:1px;padding:3px 8px;line-height:1.05;border-radius:14px}.view-switch-btn:before{content:"";position:absolute;inset:-3px 0}.view-switch-btn span{display:block;font-size:var(--text-xs);white-space:nowrap}.chart-pane-head{padding-top:70px}}.tree-panel-actions{grid-auto-rows:1fr}.tree-panel-actions .btn{height:100%;min-height:44px;justify-content:center;text-align:center}.tree-panel-actions .btn-primary{min-height:44px}.person-row-wrap>.person-row-edit{margin-left:auto;flex:none}@media(min-width:700px)and (max-width:959px){.people-list section{display:block}}@media(min-width:960px){.people-list section{display:grid;grid-template-columns:1fr 1fr;column-gap:12px;align-items:start}.people-list section>.list-letter{grid-column:1 / -1}}.fb-mark,.fb-mark:hover{filter:none;cursor:inherit}.viewer-date-form{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.viewer-date-form .input{width:7.5em;min-height:36px}.viewer-date-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px}.viewer-date-row .viewer-year-btn{min-height:36px;gap:6px}.viewer .viewer-stage{overflow:hidden;align-items:stretch;padding-bottom:8px}.viewer .viewer-picture{width:100%;height:100%;max-height:100%;min-height:0;display:flex;flex-direction:column}.viewer .viewer-picture>.stack{flex:1 1 auto;min-height:0;width:100%}.viewer .viewer-picture>.stack>*{flex:none}.viewer .viewer-picture>.stack>.face-frame,.viewer .viewer-picture>img{flex:1 1 auto;min-height:0;width:100%}.viewer .viewer-picture .face-frame{display:block;background:transparent;border-radius:0}.viewer .viewer-picture>img,.viewer .viewer-picture .face-frame img{width:100%;height:100%;max-width:100%;max-height:none;object-fit:contain;border-radius:0}@media(min-width:641px){.viewer .viewer-stage:has(.viewer-arrow){padding-left:66px;padding-right:66px}}@media(hover:none),(pointer:coarse){.viewer-date-row .viewer-year-btn,.viewer-date-form .btn,.viewer-date-form .input{min-height:44px}.viewer-person-remove{min-width:44px;min-height:44px}}@media(max-width:640px){.tree-coverage-long{display:none}.tree-coverage-short{display:inline;font-variant-numeric:tabular-nums}.tree-actions{right:auto;flex-wrap:nowrap}.tree-actions .btn{min-height:44px}.tree-actions .btn:not(.btn-primary){width:44px;padding:0}.tree-actions .tree-action-text,.tree-actions .tree-era-toggle-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.tree-controls{bottom:76px}}@media(max-width:480px){.tree-topstrip{flex-wrap:nowrap}.tree-topstrip>*{flex:none}.tree-topstrip:has(.tree-legend.is-open){flex-wrap:wrap}}@media(max-width:400px){.tree-topstrip{gap:6px}.view-switch-btn{padding-left:5px;padding-right:5px}.tree-coverage-icon{display:none}.tree-topstrip .tree-coverage-pill{padding-left:8px;padding-right:8px}.tree-legend-toggle{padding:0 7px}}.tree-minimap{width:200px;height:130px;right:80px;bottom:20px;background:var(--bg-sunken);border-color:var(--line-strong)}.tree-minimap-node{opacity:.7}@media(max-width:1099px),(hover:none)and (pointer:coarse){.tree-minimap{display:none}}.dialog-drag-handle{display:none}@media(max-width:640px){.dialog-drag-handle{display:block;position:absolute;top:7px;left:50%;transform:translate(-50%);width:38px;height:4px;border-radius:999px;background:var(--ink-faint);opacity:.55;pointer-events:none}.dialog-header{position:relative;padding-top:20px;touch-action:pan-y}.dialog-footer{display:flex;flex-direction:column-reverse;gap:8px;padding:12px 16px max(16px,calc(env(safe-area-inset-bottom) + 12px))}.dialog-footer>.btn{width:100%;min-height:48px;justify-content:center;font-size:var(--text-base)}}@media(hover:none),(pointer:coarse){.dialog-close,.viewer-close,.place-card-close,.page-back,.view-switch-btn{min-width:48px;min-height:48px}.btn:not(.btn-inline):not(.btn-xs),.navlink,.segmented-btn{min-height:48px}.tree-actions .btn{min-width:48px;min-height:48px}.viewer-date-row .viewer-year-btn,.viewer-date-form .btn,.viewer-date-form .input{min-height:48px}.viewer-person-remove{min-width:48px;min-height:48px}}.profile-notes{max-width:var(--measure-prose)}.relation-path-chain{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:12px;background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-md)}.relation-path-node{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 5px;background:var(--bg-raised);border:1px solid var(--line);border-radius:999px;font-size:var(--text-sm);font-weight:600;color:var(--ink);box-shadow:0 1px 2px #0000000a}.relation-path-node.is-endpoint{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.relation-path-name{white-space:nowrap}.relation-path-connector{display:inline-flex;flex-direction:column;align-items:center;gap:1px}.relation-path-arrow{font-weight:700;font-size:13px;line-height:1;color:var(--accent)}.relation-path-step-label{font-size:11px;line-height:1;color:var(--ink-soft);text-transform:lowercase;font-weight:500}details[open]>*:not(summary){animation:fadeIn .18s ease}@media(prefers-reduced-motion:reduce){details[open]>*:not(summary){animation:none}}.topbar{padding-top:env(safe-area-inset-top);height:calc(60px + env(safe-area-inset-top))}.person-avatar-camera-btn{position:absolute;bottom:-6px;right:-6px;border-radius:50%;width:36px;height:36px;min-width:36px;min-height:36px;padding:0;justify-content:center;box-shadow:var(--shadow-sm)}@media(hover:none),(pointer:coarse){.person-avatar-camera-btn{width:48px;height:48px;min-width:48px;min-height:48px;bottom:-10px;right:-10px}.tree-controls .btn{width:48px;height:48px;min-width:48px;min-height:48px}.tree-coverage-pill,.tree-legend-toggle,.tree-topstrip .tree-legend:not(.is-open) .tree-legend-toggle{min-height:48px;min-width:48px}.person-row-edit,.rel-edit,.howto-close,.howto-card.is-compact .howto-close,.tree-panel-actions>.tree-panel-more-toggle{min-width:48px;min-height:48px}.tree-panel-actions .btn,.tree-panel-secondary .btn,.action-menu .menu-item,.input,.select,button.chip,a.chip,button.photo-filter-chip{min-height:48px}}.tree-panel-drag-handle{display:none}@media(max-width:640px){.tree-panel{padding-top:20px;touch-action:pan-y;padding-bottom:max(14px,calc(env(safe-area-inset-bottom) + 10px))}.tree-panel-drag-handle{display:block;position:absolute;top:7px;left:50%;transform:translate(-50%);width:36px;height:4px;border-radius:999px;background:var(--line-strong)}}.input-clear-btn{min-width:36px;min-height:36px;padding:0 8px;border-radius:999px;color:var(--ink-soft);flex:none}.input-with-icon:has(.input-clear-inside) .input{padding-right:44px}.input-clear-inside{position:absolute;right:4px;top:50%;transform:translateY(-50%)}@media(hover:none),(pointer:coarse){.input-clear-btn{min-width:48px;min-height:48px}.input-clear-inside{right:0}}.add-relative-chooser-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(max-width:420px){.add-relative-chooser-grid{grid-template-columns:1fr}}.add-relative-choice-card{display:flex;align-items:center;gap:12px;padding:14px 16px;min-height:64px;border-radius:var(--radius-md);border:1px solid var(--line);background:var(--bg-card);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .1s ease}.add-relative-choice-card:hover{border-color:var(--accent);background:var(--bg-raised)}.add-relative-choice-card:active{transform:scale(.985)}.add-relative-choice-icon{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.add-relative-choice-text{display:flex;flex-direction:column;gap:2px;min-width:0}.add-relative-choice-title{font-weight:600;font-size:var(--text-base);line-height:1.25}.add-relative-choice-sub{font-size:var(--text-sm);color:var(--ink-soft);line-height:1.25}.quick-add-check-row{min-height:48px;align-items:flex-start}.quick-add-check-row>input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;flex:none;width:32px;height:32px;margin:-4px -4px -4px -6px;padding:0;border:none;background:transparent;cursor:pointer}.quick-add-check-row>input[type=checkbox]:before{content:"";position:absolute;inset:6px;border:1.5px solid var(--ink-soft);border-radius:5px;background:var(--bg-raised)}.quick-add-check-row>input[type=checkbox]:checked:before{background:var(--accent);border-color:var(--accent)}.quick-add-check-row>input[type=checkbox]:checked:after{content:"";position:absolute;left:13px;top:9.5px;width:6px;height:11px;border:solid var(--accent-ink);border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}.quick-add-check-row>input[type=checkbox]:focus-visible{outline:none}.quick-add-check-row>input[type=checkbox]:focus-visible:before{outline:2px solid var(--accent);outline-offset:2px}.tree-panel-kinship{display:inline-flex;align-items:center;gap:5px;margin-top:4px;padding:2px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:var(--text-xs);font-weight:600;line-height:1.4}@media(max-width:640px){.tree-panel{animation:sheetUp .2s cubic-bezier(.22,1,.36,1)}}.desc-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.desc-fold-btn{display:inline-flex;align-items:center;justify-content:center;gap:3px;min-width:30px;min-height:30px;padding:0 6px;border-radius:999px;border:1px solid var(--line);background:var(--bg-raised);color:var(--ink-soft);font:inherit;font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}.desc-fold-btn:hover{border-color:var(--accent);color:var(--accent)}.desc-fold-count{font-variant-numeric:tabular-nums}.desc-initials{position:relative;overflow:hidden}.desc-avatar-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}@media(hover:none),(pointer:coarse){.desc-fold-btn{min-width:48px;min-height:48px}}.existing-candidate-row{border:1px solid var(--line);background:var(--bg-card);width:100%;text-align:left;min-height:48px;transition:border-color .15s ease,background .15s ease}.existing-candidate-row:hover{border-color:var(--accent);background:var(--bg-raised)}.scroll-top-fab{position:fixed;right:16px;bottom:24px;z-index:18;width:48px;height:48px;min-width:48px;min-height:48px;padding:0;border-radius:999px;justify-content:center;background:var(--bg-raised);color:var(--ink);border:1px solid var(--line-strong);box-shadow:var(--shadow-md)}@media(max-width:899px){.scroll-top-fab{bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 16px)}body:has(.people-az) .scroll-top-fab{right:48px}}@media print{.tree-controls,.tree-actions,.tree-minimap,.tree-era-toggle{display:none!important}.book-entry{break-inside:avoid;page-break-inside:avoid}}.person-row-name,.person-row-sub,.person-name,.dialog-body,.tree-panel,.card{overflow-wrap:break-word;word-break:break-word}.relation-path-name{white-space:normal;overflow-wrap:anywhere;max-width:100%}html.big-text .chip{font-size:.96rem;padding:5px 13px}html.big-text .person-row-name{font-size:1.12rem}html.big-text .person-row-sub{font-size:.98rem}html.big-text .segmented-btn{min-height:46px;font-size:.98rem;padding:7px 14px}html.big-text .toast{font-size:1.06rem;padding:13px 22px}html.big-text .toast-action{min-height:40px;padding:5px 15px;font-size:1rem}html.big-text .dialog-close,html.big-text .page-back{min-width:48px;min-height:48px}html.big-text .display-menu label.row,html.big-text .share-menu label.row{min-height:44px}html.big-text .display-menu input[type=checkbox]{width:22px;height:22px}.input:focus,.textarea:focus,.select:focus{scroll-margin-bottom:calc(var(--nav-h) + 84px);scroll-margin-top:76px}@media(max-width:380px){.topbar-logo .topbar-logo-text{display:none}}@media(max-width:359px){.topbar{gap:6px;padding-left:8px;padding-right:8px}.topbar-actions{gap:1px}.topbar-actions .btn{padding-left:7px;padding-right:7px}.page{padding-left:14px;padding-right:14px}}@media(max-height:500px)and (orientation:landscape){.dialog{max-height:94dvh}.dialog-header{padding-top:10px;padding-bottom:8px}.dialog-footer{flex-direction:row;padding-top:8px;padding-bottom:max(10px,env(safe-area-inset-bottom))}.dialog-footer>.btn{width:auto;min-height:42px}.tree-panel{max-height:calc(100dvh - 76px)}}.kt-sparkle-layer{position:fixed;inset:0;pointer-events:none;z-index:9999;overflow:hidden;contain:layout style paint}.kt-sparkle-particle{position:fixed;display:inline-block;font-size:13px;line-height:1;pointer-events:none;-webkit-user-select:none;user-select:none;will-change:transform,opacity;transform:translate(-50%,-50%) scale(.2);opacity:0;text-shadow:0 0 6px currentColor;animation:ktSparkleFly .62s cubic-bezier(.16,1,.3,1) forwards}.kt-sparkle-ring{position:fixed;width:28px;height:28px;border-radius:999px;border:1.5px solid var(--gold);pointer-events:none;will-change:transform,opacity;transform:translate(-50%,-50%) scale(.25);opacity:.72;animation:ktSparkleRing .52s cubic-bezier(.16,1,.3,1) forwards}@keyframes ktSparkleFly{0%{opacity:.96;transform:translate(-50%,-50%) scale(.35) rotate(0)}42%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--kt-dx, 0px)),calc(-50% + var(--kt-dy, -18px))) scale(var(--kt-scale, 1)) rotate(var(--kt-rot, 45deg))}}@keyframes ktSparkleRing{0%{opacity:.68;transform:translate(-50%,-50%) scale(.3)}to{opacity:0;transform:translate(-50%,-50%) scale(1.75)}}@keyframes ktNavIconPop{0%{transform:scale(1) translateY(0)}38%{transform:scale(1.22) translateY(-2.5px) rotate(-4deg)}72%{transform:scale(.95) translateY(.5px) rotate(2deg)}to{transform:scale(1) translateY(0) rotate(0)}}.top-tab,.bottom-tab,.more-tile{transition:background-color .18s cubic-bezier(.22,1,.36,1),color .18s cubic-bezier(.22,1,.36,1),border-color .18s cubic-bezier(.22,1,.36,1),transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s cubic-bezier(.22,1,.36,1)}.top-tab-icon,.bottom-tab-icon,.more-tile-icon,.brand-mark{transition:transform .24s cubic-bezier(.34,1.56,.64,1);will-change:transform}.top-tab:hover .top-tab-icon,.bottom-tab:hover .bottom-tab-icon,.more-tile:hover .more-tile-icon{transform:translateY(-1.5px) scale(1.08)}.top-tab.active .top-tab-icon,.bottom-tab.active .bottom-tab-icon{animation:ktNavIconPop .44s cubic-bezier(.34,1.56,.64,1)}.brand:hover .brand-mark{transform:rotate(-6deg) scale(1.06)}.top-tab:active,.bottom-tab:active,.more-tile:active{transform:scale(.95)}@keyframes ktPageSpringEnter{0%{opacity:0;transform:translateY(7px) scale(.996)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ktStaggerUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:ktPageSpringEnter .26s cubic-bezier(.22,1,.36,1) both}html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .page-enter>.stack>.card:nth-child(-n+6),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .more-grid>.more-tile:nth-child(-n+8),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .quiz-choices>.quiz-choice:nth-child(-n+6){animation:ktStaggerUp .3s cubic-bezier(.22,1,.36,1) both}html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .page-enter>.stack>.card:nth-child(2),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .more-grid>.more-tile:nth-child(2),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .quiz-choices>.quiz-choice:nth-child(2){animation-delay:35ms}html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .page-enter>.stack>.card:nth-child(3),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .more-grid>.more-tile:nth-child(3),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .quiz-choices>.quiz-choice:nth-child(3){animation-delay:70ms}html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .page-enter>.stack>.card:nth-child(4),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .more-grid>.more-tile:nth-child(4),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .quiz-choices>.quiz-choice:nth-child(4){animation-delay:105ms}html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .page-enter>.stack>.card:nth-child(5),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .more-grid>.more-tile:nth-child(5){animation-delay:.14s}html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .page-enter>.stack>.card:nth-child(6),html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .more-grid>.more-tile:nth-child(6){animation-delay:175ms}.card{box-shadow:0 1px 2px #1814100a,0 4px 14px -4px #1814100d,inset 0 1px #ffffff73}[data-theme=dark] .card{box-shadow:0 2px 6px #00000047,0 8px 22px -6px #00000057,inset 0 1px #ffffff0d}.card-interactive,.more-tile,.person-row,.who-choice{transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s cubic-bezier(.22,1,.36,1),border-color .2s cubic-bezier(.22,1,.36,1),background-color .2s cubic-bezier(.22,1,.36,1)}@media(hover:hover){.card-interactive:hover,.more-tile:hover,.who-choice:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 22px -6px #1814101c,0 2px 6px #1814100d}}.card-interactive:active,.who-choice:active:not(:disabled),.person-row:active{transform:scale(.985)}.avatar{transition:transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .22s cubic-bezier(.22,1,.36,1)}@media(hover:hover){a:hover .avatar,button:hover .avatar,.card-interactive:hover .avatar,.who-choice:hover .avatar{transform:scale(1.045);box-shadow:0 0 0 2px var(--accent-soft),0 4px 10px #1814101f}}.btn{transition:transform .15s cubic-bezier(.34,1.56,.64,1),background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.btn:active:not(:disabled){transform:scale(.965)}@keyframes ktFestivePulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.anniversary-birthday,.anniversary-anniversary,.anniversary-gio,.anniversary-festival{position:relative;border-radius:var(--radius-md);transition:transform .18s cubic-bezier(.22,1,.36,1),background-color .18s ease,box-shadow .18s ease}.anniversary-birthday .anniversary-icon,.anniversary-anniversary .anniversary-icon,.anniversary-gio .anniversary-icon,.anniversary-festival .anniversary-icon{box-shadow:0 2px 8px #b47d202e}html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .anniversary-birthday .anniversary-icon,html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .anniversary-anniversary .anniversary-icon{animation:ktFestivePulse 3.2s ease-in-out infinite}.quiz-progress-track{width:100%;height:6px;border-radius:999px;background:var(--bg-sunken);overflow:hidden;margin-bottom:12px}.quiz-progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--gold));transition:width .32s cubic-bezier(.22,1,.36,1)}.quiz-streak-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:var(--text-xs);font-weight:700;color:var(--gold);background:var(--gold-soft);border:1px solid rgba(180,130,40,.28);animation:ktNavIconPop .38s cubic-bezier(.34,1.56,.64,1)}@keyframes ktQuizRightPop{0%{transform:scale(1)}40%{transform:scale(1.025)}to{transform:scale(1)}}@keyframes ktQuizWrongShake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.quiz-choice{transition:transform .18s cubic-bezier(.34,1.56,.64,1),border-color .18s ease,background-color .18s ease,box-shadow .18s ease}@media(hover:hover){.quiz-choice:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px -6px #1814101f}}.quiz-choice.quiz-right{animation:ktQuizRightPop .36s cubic-bezier(.34,1.56,.64,1)}.quiz-choice.quiz-wrong{animation:ktQuizWrongShake .3s ease-in-out}.quiz-trophy-badge{width:64px;height:64px;margin:0 auto 10px;border-radius:999px;display:flex;align-items:center;justify-content:center;color:var(--gold);background:var(--gold-soft);border:1.5px solid rgba(180,130,40,.32);box-shadow:0 6px 18px -4px #b4822840;animation:ktNavIconPop .52s cubic-bezier(.34,1.56,.64,1)}@keyframes ktGentleFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}html:not([data-motion-tier=lite]):not([data-motion-tier=off]) .empty-state-icon{animation:ktGentleFloat 4s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.kt-sparkle-layer{display:none!important}.top-tab.active .top-tab-icon,.bottom-tab.active .bottom-tab-icon,.page-enter,.quiz-streak-pill,.quiz-choice.quiz-right,.quiz-choice.quiz-wrong,.quiz-trophy-badge,.empty-state-icon,.anniversary-birthday .anniversary-icon,.anniversary-anniversary .anniversary-icon{animation:none!important}.top-tab,.bottom-tab,.more-tile,.top-tab-icon,.bottom-tab-icon,.more-tile-icon,.brand-mark,.card-interactive,.avatar,.btn,.quiz-choice,.quiz-progress-fill{transition:none!important;transform:none!important}}
