:root{--font-sans:"Karla", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display:"DM Serif Display", Georgia, "Times New Roman", serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--canvas:#f4ead7;--canvas-deep:#eedfc4;--surface:#fffcf3;--surface-2:#f6eedd;--track:#ede0c8;--overlay:#3a241270;--ink:#332417;--ink-soft:#574838;--ink-faint:#6f5f4d;--clay:#c56a3c;--clay-deep:#a94e1f;--clay-ink:#9c4419;--clay-tint:#a94e1f1a;--clay-tint-2:#a94e1f33;--clay-paper:#f6e2d2;--cream-ink:#fff6e6;--danger:#dc2626;--danger-ink:#b3261e;--danger-tint:#fbe9e5;--ok:#16a34a;--ok-ink:#1b7a45;--ok-tint:#e7f3e9;--warn:#d97706;--warn-ink:#8a5a0b;--warn-tint:#fbf0da;--line:#5e3e2226;--line-2:#5e3e224d;--shadow-sm:0 1px 2px #472d1612;--shadow-md:0 1px 2px #472d160d, 0 14px 30px -20px #472d1673;--shadow-lg:0 2px 8px #472d161a, 0 34px 80px -28px #472d168c;--r-sm:9px;--r-md:14px;--r-lg:20px;--focus:#9c4419;--focus-ring:0 0 0 3px #c56a3c47}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font:16px/1.6 var(--font-sans);color:var(--ink);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:radial-gradient(1100px 640px at 88% -12%, #c56a3c24, transparent 60%), radial-gradient(900px 700px at -12% 16%, #d1975c29, transparent 60%), radial-gradient(1000px 720px at 50% 118%, #b078461f, transparent 55%), linear-gradient(180deg, #f8f0e0 0%, var(--canvas) 46%, #f0e2c9 100%);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed}body:before{content:"";z-index:0;pointer-events:none;opacity:.07;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px;position:fixed;inset:0}#root{z-index:1;min-height:100vh;position:relative}h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink);letter-spacing:.2px;margin:0 0 6px;font-weight:400;line-height:1.16}h1{font-size:38px}h2{font-size:30px}h3{font-size:23px}h4{font-size:19px}p{margin:0 0 12px}em,i{font-style:italic}button,input,select,textarea{font:inherit;color:inherit}::selection{background:var(--clay-tint-2);color:var(--ink)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--clay-ink);box-shadow:var(--focus-ring);outline:none}.muted{color:var(--ink-soft)}.fineprint{color:var(--ink-faint);margin:10px 0 0;font-size:12.5px;line-height:1.55}.error{color:var(--danger-ink);margin:2px 0 10px;font-size:14px;font-weight:600}.info{color:var(--ok-ink);margin:2px 0 10px;font-size:14px;font-weight:600}.spacer{flex:1}.icon-text{align-items:center;gap:7px;display:inline-flex}.primary,.ghost,.danger{cursor:pointer;justify-content:center;align-items:center;gap:8px;text-decoration:none;transition:background .16s,border-color .16s,color .16s,box-shadow .16s,transform 80ms;display:inline-flex}.primary svg,.ghost svg,.danger svg,.seg svg{flex:none}.primary{border:1px solid var(--clay-deep);color:var(--cream-ink);background:var(--clay-deep);border-radius:11px;padding:10px 18px;font-size:15px;font-weight:700;box-shadow:inset 0 1px #fff6e647,0 1px 3px #472d1638}.primary:hover{background:#983e12;border-color:#983e12}.primary:active{transform:translateY(1px);box-shadow:inset 0 2px 4px #472d1640}.primary:disabled{opacity:.55;cursor:default;box-shadow:none}.primary.big{border-radius:14px;padding:13px 28px;font-size:16.5px}.primary.small{border-radius:9px;padding:6px 12px;font-size:13px}.primary.wide{width:100%}.ghost{border:1px solid var(--line-2);color:var(--ink-soft);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:11px;padding:9px 15px;font-size:14.5px;font-weight:700}.ghost:hover{color:var(--ink);background:var(--surface-2);border-color:var(--line-2)}.ghost:active{transform:translateY(1px)}.ghost:disabled{opacity:.55;cursor:default}.ghost.small{border-radius:9px;padding:5px 11px;font-size:13px}.danger{color:var(--danger-ink);background:var(--danger-tint);border:1px solid #b3261e4d;border-radius:11px;padding:9px 15px;font-size:14px;font-weight:700}.danger:hover{background:#f6d9d3}.danger:disabled{opacity:.55;cursor:default}.link-danger{color:var(--ink-faint);text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;font-weight:600;text-decoration:underline}.link-danger:hover{color:var(--danger-ink)}.icon-btn{background:var(--danger-tint);width:28px;height:28px;color:var(--danger-ink);cursor:pointer;border:1px solid #b3261e38;border-radius:9px;flex:none;justify-content:center;align-items:center;transition:background .15s;display:inline-flex}.icon-btn:hover{background:#f6d9d3}input,select,textarea{width:100%;font-family:var(--font-sans);background:var(--surface);border:1px solid var(--line-2);color:var(--ink);border-radius:10px;padding:10px 13px;transition:border-color .15s,box-shadow .15s}input:hover,select:hover,textarea:hover{border-color:var(--clay)}input::placeholder,textarea::placeholder{color:var(--ink-faint)}select{appearance:auto}select option{color:var(--ink);background:var(--surface)}label{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);flex-direction:column;gap:6px;margin-bottom:14px;font-size:11px;font-weight:700;display:flex}label.check{font-family:var(--font-sans);letter-spacing:0;text-transform:none;color:var(--ink-soft);flex-direction:row;align-items:center;gap:8px;font-size:14px;font-weight:600}label.check input{width:auto;accent-color:var(--clay-deep)}.field-row{gap:12px;display:flex}.field-row>label{flex:1}.align-end{align-items:flex-end}.align-end label{margin-bottom:0}.auth-wrap{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:440px;max-width:100%;box-shadow:var(--shadow-md);padding:42px 38px 28px;position:relative;overflow:hidden}.auth-card:before{content:"";background:linear-gradient(90deg, var(--clay-deep), var(--clay) 55%, #dda07a);height:5px;position:absolute;inset:0 0 auto}.brand{text-align:center;margin-bottom:22px}.brand-mark{background:var(--clay-deep);width:40px;height:40px;color:var(--cream-ink);box-shadow:inset 0 1px 0 #fff6e64d, var(--shadow-sm);border-radius:13px;place-items:center;display:inline-grid}.brand .brand-mark{border-radius:18px;width:58px;height:58px;margin-bottom:14px}.brand h1{font-size:44px;line-height:1}.tagline{color:var(--ink-soft);margin:10px 0 0;font-size:15px}.auth-card form{flex-direction:column;gap:2px;display:flex}.auth-card .primary{margin-top:10px}.auth-card .fineprint{text-align:center;margin-top:18px}.auth-card .fineprint:empty{display:none}.tabs{background:var(--track);border:1px solid var(--line);border-radius:14px;gap:5px;margin-bottom:20px;padding:5px;display:flex}.tab{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:10px;flex:1;padding:9px 8px;font-size:14px;font-weight:700;transition:background .15s,color .15s,box-shadow .15s}.tab:hover{color:var(--ink)}.tab.on{background:var(--surface);color:var(--clay-deep);box-shadow:var(--shadow-sm)}.tabs.under{border:none;border-bottom:1px solid var(--line);background:0 0;border-radius:0;gap:24px;width:fit-content;max-width:100%;margin:6px 0 20px;padding:0}.tabs.under .tab{color:var(--ink-soft);box-shadow:none;letter-spacing:.1px;background:0 0;border-bottom:3px solid #0000;border-radius:0;flex:none;margin-bottom:-1px;padding:8px 2px 12px;font-size:15px}.tabs.under .tab:hover{color:var(--ink)}.tabs.under .tab.on{color:var(--ink);border-bottom-color:var(--clay-deep)}.seg-row{background:var(--track);border:1px solid #5e3e221f;border-radius:13px;gap:6px;margin-bottom:12px;padding:5px;display:flex}.seg{min-width:0;font-family:var(--font-sans);color:var(--ink-soft);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:9px;flex:1;justify-content:center;align-items:center;gap:7px;padding:8px 10px;font-size:13.5px;font-weight:700;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex;overflow:hidden}.seg:hover{color:var(--ink)}.seg.on{background:var(--surface);color:var(--clay-deep);box-shadow:var(--shadow-sm)}.app-shell{min-height:100vh;padding-bottom:56px}.topbar{z-index:30;-webkit-backdrop-filter:blur(10px)saturate(1.15);backdrop-filter:blur(10px)saturate(1.15);border:1px solid var(--line);max-width:1080px;box-shadow:var(--shadow-sm);background:#fffcf3db;border-radius:16px;justify-content:space-between;align-items:center;gap:14px;margin:12px auto 0;padding:8px 10px 8px 14px;display:flex;position:sticky;top:12px}.topbar-left,.topbar-right{align-items:center;gap:10px;min-width:0;display:flex}.topbar-left>strong{font-family:var(--font-display);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:20px;font-weight:400;overflow:hidden}.topbar .brand-mark{border-radius:10px;width:32px;height:32px}.who{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:14px;overflow:hidden}.back-btn{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--ink-soft);cursor:pointer;border-radius:10px;flex:none;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.back-btn:hover{background:var(--surface-2);color:var(--ink)}.pill{font-family:var(--font-mono);letter-spacing:.04em;border:1px solid var(--line);white-space:nowrap;cursor:default;color:var(--ink-soft);background:#5e3e220f;border-radius:999px;padding:5px 12px;font-size:11.5px;font-weight:700}button.pill{cursor:pointer}.sub-pill{color:var(--warn-ink);background:var(--warn-tint);border-color:#d8770652}.sub-pill:hover{border-color:var(--warn)}.sub-pill.active{color:var(--ok-ink);background:var(--ok-tint);border-color:#1b7a4552}.sub-pill.active:hover{border-color:var(--ok)}.page{max-width:1060px;margin:0 auto;padding:22px 22px 0}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin:8px 0 20px;display:flex}.page-head h2{margin-bottom:2px}.page-head p{margin:0}.head-actions{align-items:center;gap:10px;display:flex}.family-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.family-card{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-sm);align-items:center;gap:14px;padding:18px;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex}.family-card:hover{border-color:var(--clay);box-shadow:var(--shadow-md);transform:translateY(-2px)}.family-card-icon{background:var(--clay-tint);width:46px;height:46px;color:var(--clay-deep);border-radius:14px;flex:none;place-items:center;display:grid}.family-card-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.family-card-body strong{text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:700;overflow:hidden}.family-card-body .muted{font-size:13px}.chev{color:var(--ink-faint);flex:none;display:inline-flex}.person-grid{grid-template-columns:repeat(auto-fill,minmax(252px,1fr));gap:12px;display:grid}.person-card{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:13px;align-items:center;gap:12px;padding:12px 14px;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex}.person-card:hover{border-color:var(--clay);box-shadow:var(--shadow-md);transform:translateY(-2px)}.person-avatar{width:40px;height:40px;color:var(--clay-deep);font-family:var(--font-display);background:#f1e4cc;border:1px solid #5e3e2224;border-radius:50%;flex:none;place-items:center;padding-top:2px;font-size:16px;line-height:1;display:grid}.person-info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.person-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.person-info .muted{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.empty{text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);margin-top:10px;padding:54px 30px 48px}.empty h3{margin-bottom:8px;font-size:28px}.empty p{max-width:470px;color:var(--ink-soft);margin:0 auto 22px}.empty-inline{text-align:center;color:var(--ink-soft);border:1px dashed var(--line-2);background:#fffcf380;border-radius:13px;grid-column:1/-1;padding:24px;font-size:14px}.hero-empty .steps{text-align:left;max-width:460px;color:var(--ink-soft);flex-direction:column;gap:10px;margin:4px auto 26px;padding:0;list-style:none;display:flex}.hero-empty .steps li{align-items:center;gap:12px;font-size:15px;display:flex}.hero-empty .steps b{background:var(--clay-deep);width:25px;height:25px;color:var(--cream-ink);font-family:var(--font-sans);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:700;display:inline-grid}.nudge{color:var(--ink-soft);background:var(--surface-2);border:1px solid var(--line);border-left:4px solid var(--clay);border-radius:12px;align-items:center;gap:10px;margin:0 0 16px;padding:13px 16px 13px 18px;font-size:14px;display:flex}.toolbar{gap:10px;margin-bottom:16px;display:flex}.toolbar .search{flex:1}.modal-scrim{background:var(--overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:60;justify-content:center;align-items:flex-start;padding:7vh 18px 24px;animation:.18s both fade-in;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:min(520px,100%);box-shadow:var(--shadow-lg);margin-bottom:auto;padding:24px 24px 18px}.modal h3{margin-bottom:4px}.modal>.muted,.modal form>.muted{margin-bottom:16px;font-size:14px}.modal-actions{align-items:center;gap:10px;margin-top:18px;display:flex}.code-box,.connect-box,.rel-box,.notice{background:var(--surface-2);border:1px solid var(--line);border-radius:14px}.connect-box{margin-bottom:14px;padding:14px 14px 4px}.connect-box>strong,.rel-box>strong{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--clay-deep);margin-bottom:10px;font-size:11px;font-weight:700;display:block}.connect-box .fineprint{margin-top:6px}.code-box{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.code-box .muted{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;font-size:10.5px;display:block}.code-text{font-family:var(--font-mono);letter-spacing:.14em;color:var(--clay-deep);font-size:19px;font-weight:700}.rel-box{margin-bottom:12px;padding:12px 14px}.rel-box>strong{margin-bottom:8px}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:999px;padding:4px 11px;font-size:12.5px;font-weight:600}.rel-row{align-items:center;gap:8px;padding:6px 0;display:flex}.rel-row+.rel-row{border-top:1px dashed var(--line)}.rel-glyph{color:var(--clay-deep);flex:none;display:inline-flex}.rel-desc{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:14.5px;overflow:hidden}.rel-kind{background:var(--surface);border-radius:9px;width:auto;min-width:120px;padding:5px 8px;font-size:12.5px}.paywall-banner{background:var(--warn-tint);max-width:1080px;color:var(--warn-ink);border:1px solid #d8770659;border-radius:14px;justify-content:space-between;align-items:center;gap:14px;margin:14px auto 0;padding:13px 18px;font-size:14px;font-weight:600;display:flex}.paywall-banner .banner-copy{align-items:center;gap:10px;display:inline-flex}.paywall-banner .primary{flex:none}.plan-row{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:16px;justify-content:space-between;align-items:center;gap:16px;margin:6px 0 16px;padding:18px;display:flex}.plan-price{flex-direction:column;line-height:1.2;display:flex}.plan-price strong{font-family:var(--font-display);letter-spacing:.5px;font-size:42px;font-weight:400}.plan-price span{color:var(--ink-soft);font-size:13px}.plan-meta{color:var(--ink-soft);flex-direction:column;align-items:flex-end;gap:3px;font-size:14px;display:flex}.plan-total{color:var(--clay-deep);font-size:15px;font-weight:800}.notice{color:var(--ink-soft);margin:6px 0 10px;padding:13px 15px;font-size:14px}.notice strong{color:var(--ink)}.tree-scroll{border:1px solid var(--line);background:#fffbf080;border-radius:18px;max-width:100%;overflow:auto}.tree-svg{display:block}.tree-legend{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);font-variant-emoji:text;border-radius:14px;flex-wrap:wrap;align-items:center;gap:8px 20px;margin-bottom:12px;padding:9px 16px;display:flex}.lg-item{color:var(--ink-soft);align-items:center;gap:7px;font-size:12.5px;font-weight:600;display:inline-flex}.lg-item svg{flex:none}.lg-focus{border:2px solid var(--clay-deep);box-sizing:border-box;border-radius:4px;width:13px;height:13px;display:inline-block}.view-label{font-family:var(--font-display);color:var(--clay-deep);margin:2px 4px 12px;font-size:17px;font-style:italic}.tree-focus-ring{fill:none;stroke:var(--clay-deep);stroke-width:2px}.tree-edge{fill:none;stroke:#8a6247;stroke-width:1.6px}.tree-edge.dashed{stroke:var(--clay);stroke-width:1.8px;stroke-dasharray:5 4}.tree-beam{fill:none;stroke:#8a6247;stroke-width:1.6px;opacity:.55}.tree-node{fill:#fffdf6;stroke:var(--line-2);stroke-width:1px;cursor:pointer;transition:stroke .14s,fill .14s}.tree-node:hover{stroke:var(--clay-deep);stroke-width:1.5px}.tree-node.dead{fill:#f1e5d0}.tree-node.active{fill:#f9e7d8;stroke:var(--clay);stroke-width:1.5px}.tree-node-g{cursor:pointer}.tree-icon{fill:var(--clay-deep);font-variant-emoji:text;font-size:13px;font-weight:700}.tree-name{fill:var(--ink);font-size:14.5px;font-weight:700}.tree-years{fill:var(--ink-faint);font-size:11.5px;font-weight:500}.chart-controls{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:16px;margin-bottom:16px;padding:14px 14px 8px}.focus-pick{font-family:var(--font-sans);letter-spacing:0;text-transform:none;color:var(--ink-soft);flex-flow:wrap;align-items:center;gap:10px;margin:4px 0 8px;font-size:13.5px;font-weight:600}.focus-pick select{flex:1;width:auto;min-width:220px}.danger-zone{text-align:center;border-top:1px dashed var(--line-2);margin-top:48px;padding-top:18px}.toast{z-index:100;background:var(--surface);max-width:min(560px,100vw - 32px);color:var(--ink);border:1px solid var(--line-2);border-left:4px solid var(--clay-deep);box-shadow:var(--shadow-lg);border-radius:13px;align-items:center;gap:10px;padding:12px 20px;font-size:14.5px;font-weight:600;animation:.35s cubic-bezier(.22,1,.36,1) both toast-in;display:flex;position:fixed;top:20px;left:50%;transform:translate(-50%)}.center-screen{text-align:center;border:none;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100vh;padding:24px;display:flex}.center-screen p{color:var(--ink-soft);margin:0;font-size:15px}.center-screen .brand-mark{border-radius:24px;width:72px;height:72px;animation:3.2s ease-in-out infinite float}.center-screen .brand-name{margin:0;font-size:40px}.app-shell .center-screen{min-height:60vh}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-14px)}to{opacity:1;transform:translate(-50%)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=560px){.page{padding:14px 12px 0}.topbar{margin:8px 10px 0;padding:7px 8px 7px 12px}.topbar-left>strong{font-size:18px}.who{display:none}.page-head{flex-direction:column;align-items:flex-start;gap:12px}.head-actions{width:100%}.head-actions .primary,.head-actions .ghost{flex:1}.field-row{flex-direction:column;gap:0}.tabs.under{gap:16px}.auth-card{padding:36px 22px 24px}.modal-scrim{padding:4vh 10px 18px}.modal{border-radius:17px;padding:20px 16px 16px}.modal-actions,.seg-row{flex-wrap:wrap}.seg{white-space:normal}.paywall-banner{text-align:left;flex-direction:column;align-items:stretch}.paywall-banner .primary{width:100%}.code-box{flex-direction:column;align-items:stretch}.code-box .ghost{align-self:flex-end}.rel-row{flex-wrap:wrap}.rel-kind{min-width:0}.empty{padding:40px 20px 36px}.hero-empty .steps li{font-size:14px}.toolbar{flex-wrap:wrap}.toolbar .search{min-width:100%}.center-screen .brand-mark{border-radius:20px;width:62px;height:62px}}
