:root{--bg:#f7f6f3;--surface:#fff;--surface-2:#f1efe9;--text:#1f2328;--muted:#6b6f76;--border:#e2ded6;--accent:#2f7d5b;--accent-text:#fff;--danger:#c0392b;--edge:#8a8f98;--spouse:#d0558a;--male:#4a7fd1;--female:#d0558a;--other:#8e6bd1;--unknown:#9aa0a6;--deceased-bg:#e3e3e3;--radius:10px;--topbar-h:56px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#15171a;--surface:#1d2024;--surface-2:#262a30;--text:#e8eaed;--muted:#9aa0a6;--border:#33373d;--accent:#4fb386;--accent-text:#0d1f17;--danger:#ef6f61;--edge:#6b7079;--deceased-bg:#3a3d42;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0 0 8px;line-height:1.25}h2{font-size:18px}h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:13px}code{background:var(--surface-2);border-radius:4px;padding:1px 5px}.topbar{height:var(--topbar-h);background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:0 16px;display:flex}.brand{color:var(--text);font-size:16px;font-weight:700}.topbar nav{gap:16px;display:flex}.topbar nav a{color:var(--muted)}.header-end{align-items:center;gap:12px;margin-left:auto;display:flex}.api-status~.header-end{margin-left:12px}.language-switcher{color:var(--muted);align-items:center;gap:4px;display:inline-flex}.language-switcher select{width:auto;padding:4px 6px;font-size:13px}.api-status{color:var(--muted);align-items:center;gap:6px;margin-left:auto;font-size:12px;display:inline-flex}.api-status .dot{background:var(--unknown);border-radius:50%;width:8px;height:8px}.api-status.ok .dot{background:#2ea043}.api-status.error .dot{background:var(--danger)}main{height:calc(100vh - var(--topbar-h))}.btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:8px;padding:6px 12px}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.6;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn.danger{color:var(--danger)}.link{appearance:none;font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0}.icon-btn{appearance:none;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:4px;margin-left:auto;padding:2px 6px;font-size:16px;line-height:1}.icon-btn:hover{color:var(--danger);background:var(--surface-2)}input,select,textarea{width:100%;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--danger)}.center{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:100%;padding:24px;display:flex}.export-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:center;gap:6px;padding:6px 8px;display:flex;box-shadow:0 1px 4px #00000014}.export-panel .btn{padding:4px 10px}.export-error{text-align:right;max-width:260px;margin:6px 0 0}.settings-list{border:1px solid var(--border);border-radius:8px;max-width:640px;margin:16px 0 0;padding:0;list-style:none}.settings-list li+li{border-top:1px solid var(--border)}.setting{cursor:pointer;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.setting input{margin-top:3px}.setting>span{gap:4px;display:grid}.sample-offer{border-top:1px solid var(--border);justify-items:center;gap:8px;max-width:380px;margin-top:16px;padding-top:16px;display:grid}.sample-offer p{margin:0}.explorer{grid-template-columns:1fr 380px;height:100%;display:grid}.canvas{flex-direction:column;min-width:0;display:flex}.toolbar{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 16px;display:flex}.toolbar .spacer{margin-left:auto}label.inline{align-items:center;gap:6px;display:inline-flex}label.inline select{width:auto}.canvas-body{flex:1;min-height:0}.panel{border-left:1px solid var(--border);background:var(--surface);padding:20px;overflow-y:auto}.panel-empty .legend{gap:8px;margin:16px 0 0;padding:0;list-style:none;display:grid}.swatch{vertical-align:middle;border-top:2px solid var(--edge);width:28px;margin-right:6px;display:inline-block}.swatch.dashed{border-top:2px dashed var(--spouse)}@media (max-width:860px){main{height:auto}.explorer{grid-template-columns:1fr}.canvas{height:65vh}.panel{border-left:0;border-top:1px solid var(--border)}.api-status-label{display:none}}.person-node{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);border-left:5px solid var(--unknown);cursor:pointer;flex-direction:column;justify-content:center;padding:8px 12px;transition:box-shadow .15s;display:flex;box-shadow:0 1px 3px #00000014}.person-node:hover{box-shadow:0 3px 10px #00000026}.person-node.gender-male{border-left-color:var(--male)}.person-node.gender-female{border-left-color:var(--female)}.person-node.gender-other{border-left-color:var(--other)}.person-node.selected{outline:2px solid var(--accent);outline-offset:2px}.person-node.deceased{background:var(--deceased-bg)}.react-flow__minimap-node.deceased{fill:var(--deceased-bg)}.person-node.deceased .person-node-name:after{content:" †";color:var(--muted)}.person-node-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.person-node-years{color:var(--muted);font-size:12px}.person-node{position:relative}.kinship-badge{background:var(--accent);max-width:calc(100% - 20px);color:var(--accent-text);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600;line-height:18px;position:absolute;top:-11px;left:10px;overflow:hidden;box-shadow:0 1px 2px #00000026}.kinship-toggle input{width:auto;margin:0}.person-node .react-flow__handle,.union-node .react-flow__handle{opacity:0;pointer-events:none}.union-node{pointer-events:none}.react-flow__node-union{cursor:default;pointer-events:none!important}.react-flow__minimap-node.union{display:none}.person-header{align-items:center;gap:12px;margin-bottom:12px;display:flex}.person-header h2{margin:0;font-size:20px}.person-header p{margin:0}.avatar{object-fit:cover;border:1px solid var(--border);border-radius:50%;width:56px;height:56px}.facts{grid-template-columns:auto 1fr;gap:4px 16px;margin:0 0 12px;display:grid}.facts dt{color:var(--muted)}.facts dd{margin:0}.bio{white-space:pre-wrap;background:var(--surface-2);border-radius:8px;padding:10px 12px}.actions{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.relatives{margin-top:18px}.relatives ul{margin:0;padding:0;list-style:none}.relatives li{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:4px 0;display:flex}.form{gap:10px;display:grid}.form label{color:var(--muted);gap:4px;font-size:12px;display:grid}.form .row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.photo-field{color:var(--muted);gap:6px;font-size:12px;display:grid}.photo-field .photo-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.photo-field .avatar.empty{background:var(--surface-2);border-style:dashed;display:inline-block}.photo-field input[type=file]{display:none}.add-relative{border-top:1px solid var(--border);margin-top:24px;padding-top:16px}.person-picker{gap:6px;display:grid}.pick-list{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);max-height:220px;margin:0;padding:4px;list-style:none;overflow-y:auto}.pick-list:empty{display:none}.pick-list button{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;gap:8px;padding:6px 8px;display:flex}.pick-list button:hover{background:var(--surface-2)}.pick-list button:disabled{opacity:.55;cursor:not-allowed;background:0 0}.pick-list button.selected{background:var(--accent);color:var(--accent-text)}.pick-list button.selected .muted{color:inherit}.user-menu{align-items:center;gap:8px;display:flex}.user-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:28px;height:28px}.user-avatar.fallback{background:var(--accent);color:var(--accent-text);justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.user-name{white-space:nowrap}.user-link{color:inherit;text-decoration:none}.user-link:hover .user-name{text-decoration:underline}.topbar .btn{white-space:nowrap}.login-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:14px;width:100%;max-width:400px;padding:32px 28px;box-shadow:0 4px 24px #0000000f}.login-card h1{font-size:22px}.provider-list{gap:10px;margin:0 0 20px;display:grid}.login-card .form{text-align:left;margin:16px 0 20px}.tabs{background:var(--surface-2);border-radius:10px;grid-template-columns:1fr 1fr;gap:4px;margin-top:16px;padding:4px;display:grid}.tabs button{appearance:none;font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:6px}.tabs button.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px #00000014}.hint{font-size:11px}.forgot-link{justify-self:end;margin-top:-4px}.account-card{max-width:420px}.btn.block{width:100%;padding:9px 14px;font-weight:600}.divider{color:var(--muted);align-items:center;gap:10px;margin:0 0 14px;font-size:12px;display:flex}.divider:before,.divider:after{content:"";border-top:1px solid var(--border);flex:1}.btn.provider{justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-weight:600;display:flex}.btn.provider svg{flex:none}.badge{background:var(--spouse);color:#fff;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600}.user-cell{align-items:center;gap:10px;display:flex}tr.row-pending td{background:color-mix(in srgb, var(--spouse) 8%, transparent)}@media (max-width:860px){.user-name{display:none}.topbar{gap:12px}}.tree-switcher select{width:auto;max-width:260px;font-weight:600}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.badge.neutral{background:var(--surface-2);color:var(--muted);border:1px solid var(--border)}.success{color:#2ea043}.invite-banner{background:color-mix(in srgb, var(--accent) 10%, var(--surface));border-bottom:1px solid var(--border);gap:6px;padding:10px 16px;display:grid}.invite-banner-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.invite-banner .actions{margin:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:16px}.card .table-wrap{border:0}.inline-form{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.inline-form input{flex:220px;width:auto}.inline-form select{width:auto}td.actions{margin:0;display:table-cell}td.actions .btn+.btn{margin-left:6px}a.btn{text-align:center;text-decoration:none;display:inline-block}@media (max-width:860px){.brand-name{display:none}.tree-switcher select{max-width:150px}}.page{max-width:960px;margin:0 auto;padding:24px 16px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.page-header input{max-width:320px}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px}th{color:var(--muted);background:var(--surface-2);font-size:12px;font-weight:600}tr:last-child td{border-bottom:0}th.check-cell,td.check-cell{width:1%;padding-right:0}.check-cell input{vertical-align:middle;width:16px;height:16px;accent-color:var(--accent);cursor:pointer;margin:0;padding:0}tr.selected-row td{background:color-mix(in srgb, var(--accent) 10%, transparent)}.selection-bar{z-index:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #0000000f}.selection-bar span{flex:1;font-weight:600}.import-page .card h2{margin:0 0 8px;font-size:16px}.import-page .card h2:not(:first-child){margin-top:20px}.import-page td{white-space:normal}.import-page td.nowrap{white-space:nowrap}.import-page details{margin:12px 0}.import-page summary{cursor:pointer;margin-bottom:8px}.button-row{flex-wrap:wrap;gap:8px;display:flex}tr.row-error td{background:color-mix(in srgb, var(--danger) 10%, transparent)}.import-done{max-width:560px;margin:0 auto}
