:root{--bg:#f7f6f3;--panel:#fff;--panel-2:#fbfaf8;--ink:#1b1a19;--ink-2:#57534e;--ink-3:#8c847c;--line:#e5e1db;--line-2:#d6d0c8;--accent:#8a5a2b;--accent-soft:#f0e6da;--accent-ink:#6d4520;--male:#5b7fa6;--female:#a8607a;--warn:#9a6b1e;--warn-soft:#fbf1dd;--shadow:0 1px 2px rgba(28,25,23,.06), 0 4px 12px rgba(28,25,23,.05);--shadow-lg:0 2px 4px rgba(28,25,23,.08), 0 12px 32px rgba(28,25,23,.12)}@media (prefers-color-scheme: dark){:root{--bg:#16151a;--panel:#201f26;--panel-2:#1a191f;--ink:#ece9e4;--ink-2:#a8a29a;--ink-3:#7c766e;--line:#302e38;--line-2:#3d3a46;--accent:#d09a63;--accent-soft:#33291f;--accent-ink:#e6b884;--male:#7fa3c9;--female:#c98aa3;--warn:#d9ab5e;--warn-soft:#2c2417;--shadow:0 1px 2px rgba(0,0,0,.4), 0 4px 12px rgba(0,0,0,.3);--shadow-lg:0 2px 4px rgba(0,0,0,.5), 0 12px 32px rgba(0,0,0,.45)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);overflow:hidden;font:400 14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer}.center{height:100%;display:flex;align-items:center;justify-content:center}.spin{color:var(--ink-3)}.err{max-width:420px;padding:16px 18px;border-radius:12px;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);display:grid;gap:10px}.err.inline{padding:8px 11px;font-size:13px;color:var(--warn);background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 28%,transparent)}.login{width:320px;display:grid;gap:11px;padding:26px;border-radius:16px;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg)}.login h1{margin:0;font-size:21px;letter-spacing:-.02em}.login .muted{margin:-6px 0 6px;color:var(--ink-3);font-size:13px}.login input{height:38px;padding:0 12px;border-radius:9px;border:1px solid var(--line);background:var(--panel-2);outline:none}.login input:focus{border-color:var(--accent);background:var(--panel)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:34px;padding:0 13px;border-radius:9px;font-size:13px;font-weight:520;border:1px solid var(--line);background:var(--panel);color:var(--ink-2)}.btn:hover{border-color:var(--line-2);color:var(--ink)}.btn.primary{height:38px;background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:disabled{opacity:.5;cursor:default}.btn.ghost{border-color:transparent;background:transparent}.topbar{position:fixed;inset:0 0 auto 56px;height:56px;z-index:30;display:flex;align-items:center;gap:12px;padding:0 14px;background:color-mix(in srgb,var(--panel) 88%,transparent);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid var(--line)}.brand{font-weight:640;letter-spacing:-.01em;white-space:nowrap}.brand .sub{font-weight:400;color:var(--ink-3);font-size:12.5px}.spacer{flex:1}.search{position:relative;flex:0 1 260px}.search input{width:100%;height:34px;padding:0 12px;font-size:13px;border-radius:9px;border:1px solid var(--line);background:var(--panel-2);outline:none}.search input:focus{border-color:var(--accent);background:var(--panel)}.sresults{position:absolute;top:40px;left:0;right:0;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);padding:4px;z-index:40;max-height:320px;overflow:auto}.sresults div{padding:7px 9px;border-radius:7px;cursor:pointer;font-size:13px}.sresults div:hover{background:var(--panel-2)}.sresults span{color:var(--ink-3);font-size:12px;margin-left:6px}.seg{display:flex;background:var(--panel-2);border:1px solid var(--line);border-radius:9px;padding:2px}.seg button{padding:5px 11px;font-size:12.5px;border-radius:7px;color:var(--ink-2);white-space:nowrap}.seg button.on{background:var(--panel);color:var(--ink);font-weight:560;box-shadow:var(--shadow)}.seg.islands em{font-style:normal;color:var(--ink-3);font-size:11px;margin-left:4px}.depth{display:flex;align-items:center;background:var(--panel-2);border:1px solid var(--line);border-radius:9px;padding:2px;gap:2px}.depth button{width:24px;height:24px;border-radius:6px;color:var(--ink-2)}.depth button:hover:not(:disabled){background:var(--panel);color:var(--ink)}.depth button:disabled{opacity:.35;cursor:default}.depth span{font-size:12.5px;color:var(--ink-3);padding:0 3px;white-space:nowrap}.depth b{color:var(--ink);font-weight:600}.canvas{position:fixed;top:56px;right:0;bottom:0;left:56px;overflow:hidden;cursor:grab;touch-action:none}.canvas.drag{cursor:grabbing}.canvas:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.5;background-image:radial-gradient(circle at 1px 1px,var(--line-2) 1px,transparent 0);background-size:26px 26px}.world{position:absolute;left:50%;top:50%;width:0;height:0;transform-origin:0 0}.links{position:absolute;left:-6000px;top:-4000px;width:12000px;height:8000px;overflow:visible;pointer-events:none}.links path{fill:none;stroke:var(--line-2);stroke-width:1.6}.links path.hl{stroke:var(--accent);stroke-width:2.2}.card{position:absolute;left:0;top:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);display:flex;align-items:center;padding:0 8px 0 13px;gap:8px;overflow:hidden;will-change:transform,opacity;cursor:pointer;text-align:left}.card:hover{border-color:var(--line-2);box-shadow:var(--shadow-lg)}.card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--male)}.card.f:before{background:var(--female)}.card.root{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft),var(--shadow-lg)}.card.dim{opacity:.72}.av{flex:0 0 auto;width:38px;height:38px;border-radius:50%;object-fit:cover;background:var(--panel-2)}.av.ph{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:640;color:#fff;background:linear-gradient(140deg,#7f6a52,#4b3d30)}.meta{min-width:0;flex:1}.nm{font-size:13px;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dt{font-size:11.5px;color:var(--ink-3);white-space:nowrap;margin-top:1px}.kids{flex:0 0 auto;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--panel-2);border:1px solid var(--line);font-size:10.5px;font-weight:600;color:var(--ink-3);display:flex;align-items:center;justify-content:center}.open{flex:0 0 auto;width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--ink-3);background:var(--panel-2);border:1px solid var(--line);font-size:12px;line-height:1;opacity:.55}.card:hover .open{opacity:1}.open:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);opacity:1}.card.add{background:transparent;border:1.5px dashed var(--line-2);box-shadow:none;justify-content:center;color:var(--ink-3);font-size:12.5px;font-weight:520}.card.add:before{display:none}.card.add:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.zoombox{position:fixed;left:72px;bottom:16px;z-index:20;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}.zoombox button{width:34px;height:32px;color:var(--ink-2);font-size:15px}.zoombox button:hover{background:var(--panel-2);color:var(--ink)}.zoombox button+button{border-top:1px solid var(--line)}.panel{position:fixed;right:0;top:56px;bottom:0;width:340px;z-index:25;overflow:auto;background:var(--panel);border-left:1px solid var(--line);box-shadow:var(--shadow-lg);padding:18px}.panel .close{position:absolute;right:10px;top:8px;font-size:20px;color:var(--ink-3);line-height:1}.panel .close:hover{color:var(--ink)}.phead{display:flex;gap:14px;align-items:center;margin-bottom:16px}.phead h2{margin:0 0 2px;font-size:17px;letter-spacing:-.015em}.phead .muted{color:var(--ink-3);font-size:12.5px}.big{width:72px;height:72px;border-radius:14px;object-fit:cover;flex:0 0 auto}.big.ph{display:flex;align-items:center;justify-content:center;color:#fff;font-size:22px;font-weight:600;background:linear-gradient(145deg,var(--male),#33475c)}.big.ph.f{background:linear-gradient(145deg,var(--female),#5c3343)}.panel dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0 0 16px;font-size:13px}.panel dt{color:var(--ink-3)}.panel dd{margin:0}.rel{margin-bottom:14px}.rel .lbl{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:600;margin-bottom:5px}.mini{display:flex;width:100%;align-items:center;gap:9px;padding:6px 8px;border-radius:8px;margin:0 -8px}.mini:hover{background:var(--panel-2)}.mini .mn{font-size:13px;font-weight:520}.mini .md{font-size:11.5px;color:var(--ink-3);margin-left:auto}.warn{padding:9px 11px;border-radius:9px;font-size:12.5px;background:var(--warn-soft);color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 25%,transparent)}@media (max-width:1100px){.seg.islands{display:none}}@media (max-width:900px){.depth,.search{display:none}}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;background:#14121073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);padding:20px}.modal{width:420px;max-width:100%;max-height:90vh;overflow:auto;display:grid;gap:13px;padding:22px;border-radius:16px;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg)}.modal h2{margin:0;font-size:18px;letter-spacing:-.015em}.modal label{display:grid;gap:5px;font-size:12px;color:var(--ink-3);font-weight:560}.modal input{height:36px;padding:0 11px;border-radius:9px;border:1px solid var(--line);background:var(--panel-2);outline:none;font-size:13.5px;color:var(--ink);font-weight:400}.modal input:focus{border-color:var(--accent);background:var(--panel)}.modal input.bad{border-color:var(--warn);background:var(--warn-soft)}.modal .hint{font-size:11.5px;color:var(--ink-3);font-weight:400;line-height:1.45}.modal .two{display:grid;grid-template-columns:1fr 1fr;gap:11px}.radios{display:flex;gap:6px}.radios button{flex:1;height:32px;border-radius:8px;border:1px solid var(--line);background:var(--panel-2);font-size:12.5px;color:var(--ink-2);font-weight:400}.radios button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:560}.modal .actions{display:flex;gap:9px;justify-content:flex-end;margin-top:4px}.btn.wide{width:100%;height:36px}.rail{position:fixed;left:0;top:0;bottom:0;width:56px;z-index:40;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 0;background:var(--panel);border-right:1px solid var(--line)}.rail button,.railout{position:relative;width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:var(--ink-3)}.rail button:hover,.railout:hover{background:var(--panel-2);color:var(--ink)}.rail button.on{background:var(--accent-soft);color:var(--accent-ink)}.railout{position:fixed;left:8px;bottom:10px;z-index:41}.tip{position:absolute;left:48px;top:50%;transform:translateY(-50%);padding:5px 9px;border-radius:7px;white-space:nowrap;font-size:12.5px;background:var(--ink);color:var(--bg);opacity:0;pointer-events:none;transition:opacity .12s;box-shadow:var(--shadow)}.rail button:hover .tip,.railout:hover .tip{opacity:.95}.page{position:fixed;top:0;right:0;bottom:0;left:56px;overflow:auto;padding:26px 28px 60px}.pagehead{display:flex;align-items:baseline;gap:12px;margin-bottom:18px}.pagehead h1{margin:0;font-size:23px;letter-spacing:-.02em}.pagehead .muted{color:var(--ink-3);font-size:13px}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}.search.wide{flex:0 1 320px}.search .ico{position:absolute;left:10px;top:10px;color:var(--ink-3);pointer-events:none}.search input{padding-left:30px}.btn.active{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}.btn em{font-style:normal;color:var(--ink-3);margin-left:5px;font-size:12px}.rows{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}.prow{display:flex;align-items:center;gap:12px;padding:9px 13px;background:var(--panel);cursor:default}.prow:hover{background:var(--panel-2)}.prow .who{flex:1;min-width:0}.prow .n{font-size:13.5px;font-weight:540}.prow .d{font-size:12px;color:var(--ink-3);margin-top:1px}.prow .d .none{color:var(--warn)}.prow .gid{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.icobtn{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--ink-3);border:1px solid transparent}.icobtn:hover{background:var(--panel-2);border-color:var(--line);color:var(--ink)}.icobtn.accent:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.empty{padding:30px;text-align:center;color:var(--ink-3);background:var(--panel)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.tile{display:block;border-radius:11px;overflow:hidden;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow)}.tile:hover{border-color:var(--accent);box-shadow:var(--shadow-lg)}.tile img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:var(--panel-2)}.tile span{display:block;padding:7px 9px;font-size:11.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prow{padding:10px 14px}.prow .av{width:106px;height:106px;border-radius:13px;object-fit:cover}.prow .av.ph{font-size:27px;border-radius:13px}.prow .n{font-size:16px;font-weight:570;letter-spacing:-.01em}.prow .d{font-size:13px;margin-top:3px}.prow .gid{font-size:12px}.sel{height:34px;padding:0 30px 0 11px;border-radius:9px;font-size:13px;background:var(--panel-2);border:1px solid var(--line);color:var(--ink);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 16px) 15px,calc(100% - 11px) 15px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}.sel:hover{border-color:var(--line-2)}.modal.wide{width:520px}.block{display:grid;gap:11px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2)}.blabel{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:640}.blabel.sm{margin-top:2px}.kidsedit{display:grid;gap:7px}.picker{position:relative}.picker input{width:100%}.picked{display:flex;align-items:center;gap:9px;height:36px;padding:0 6px 0 11px;border-radius:9px;background:var(--panel);border:1px solid var(--line)}.picked .pn{font-size:13.5px;font-weight:520;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picked .pd{font-size:12px;color:var(--ink-3);margin-left:auto;white-space:nowrap}.modal .sresults .muted{padding:7px 9px;font-size:12.5px}.modal .hint svg{vertical-align:-2px;margin-right:2px}.job{display:grid;gap:7px;padding:10px;border-radius:10px;background:var(--panel);border:1px solid var(--line)}.job .two{gap:7px}.job input{width:100%;height:34px;padding:0 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel-2);outline:none;font-size:13px;color:var(--ink)}.job input:focus{border-color:var(--accent);background:var(--panel)}.job input.bad{border-color:var(--warn);background:var(--warn-soft)}.jobdates{display:grid;grid-template-columns:1fr 1fr auto;gap:7px;align-items:center}.btn.addrow{width:100%;justify-content:center;border-style:dashed;color:var(--ink-3)}.btn.addrow:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.btn.addrow svg{margin-right:4px}.facts{margin-top:6px;display:grid;gap:2px;font-size:12.5px;color:var(--ink-2);line-height:1.45}.facts b{font-weight:600;color:var(--ink-3);font-size:11.5px;margin-right:3px}.lnk{display:inline-flex;align-items:center;gap:5px;color:var(--accent-ink);font-size:12.5px;padding:2px 6px 2px 2px;border-radius:999px;border:1px solid transparent}.lnk:hover{background:var(--panel-2);border-color:var(--line)}.facts>div{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.facts>div b{flex:0 0 auto}@media (prefers-color-scheme: dark){.lnk{color:var(--accent)}}.mav{flex:0 0 auto;width:26px;height:26px;border-radius:50%;object-fit:cover;background:var(--panel-2)}.mav.ph{display:flex;align-items:center;justify-content:center;color:#fff;font-size:9.5px;font-weight:640;letter-spacing:.02em;background:linear-gradient(140deg,var(--male),#33475c)}.mav.ph.f{background:linear-gradient(140deg,var(--female),#5c3343)}.mini .md{margin-left:auto}.por{position:relative;display:inline-block;flex:0 0 auto;overflow:hidden;background:var(--panel-2)}.por.circle{border-radius:50%}.por.rounded{border-radius:13px}.por img{display:block;width:100%;height:100%;object-fit:cover}.por .ini{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#fff;font-weight:640;letter-spacing:.02em;background:linear-gradient(140deg,var(--male),#33475c)}.por .ini.f{background:linear-gradient(140deg,var(--female),#5c3343)}.por.dead:after{content:"";position:absolute;right:-26%;bottom:9%;width:80%;height:14%;background:linear-gradient(#2a2724,#0e0d0c);transform:rotate(-45deg);box-shadow:0 1px 2px #00000073}.modal label.check{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--ink);font-weight:400;cursor:pointer;padding:2px 0}.modal label.check input{width:17px;height:17px;accent-color:var(--accent);cursor:pointer;flex:0 0 auto}.mhead{display:flex;align-items:center;gap:12px}.mhead h2{flex:1;margin:0}.mhead .close{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--ink-3);border:1px solid transparent;flex:0 0 auto}.mhead .close:hover{background:var(--panel-2);border-color:var(--line);color:var(--ink)}.photoedit{display:flex;gap:14px;align-items:flex-start}.pshot{flex:0 0 auto;width:106px;height:106px;border-radius:13px;overflow:hidden;background:var(--panel-2);border:1px solid var(--line)}.pshot img{display:block;width:100%;height:100%;object-fit:cover}.pshot.empty{border-style:dashed;display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:12px}.pacts{display:grid;gap:7px;align-content:start;min-width:0;flex:1}.pacts .btn{justify-content:flex-start;gap:7px}.pacts .hint{display:block}.pacts .hint svg{vertical-align:-2px;margin-right:3px}.pagehead{align-items:center}.pagehead .btn{margin-left:auto;flex:0 0 auto}.pagehead .btn svg{margin-right:2px}
