:root{--bg: #faf8f4;--panel-bg: #ffffff;--input-bg: #ffffff;--border: #e2dccf;--text: #2a2620;--muted: #7a7368;--accent: #9a5b3a;--accent-light: #f1e3d8;--match: #ffe9a8;--gender-m-bg: #dbeafe;--gender-m-text: #1e4e8c;--gender-f-bg: #fbe0ea;--gender-f-text: #9c2361;--error-bg: #fde3e3;--error-text: #942626;--danger-border: #f0c4c4;--modal-shadow: rgba(0, 0, 0, .25)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #1c1a17;--panel-bg: #262320;--input-bg: #2e2b27;--border: #45403a;--text: #ede8e0;--muted: #a39c8f;--accent: #d38a5f;--accent-light: #3a2f26;--match: #6b5820;--gender-m-bg: #1e3a5f;--gender-m-text: #a8c8f0;--gender-f-bg: #4a2038;--gender-f-text: #f0b8d8;--error-bg: #4a2020;--error-text: #f5a8a8;--danger-border: #6b3030;--modal-shadow: rgba(0, 0, 0, .6)}}:root[data-theme=dark]{--bg: #1c1a17;--panel-bg: #262320;--input-bg: #2e2b27;--border: #45403a;--text: #ede8e0;--muted: #a39c8f;--accent: #d38a5f;--accent-light: #3a2f26;--match: #6b5820;--gender-m-bg: #1e3a5f;--gender-m-text: #a8c8f0;--gender-f-bg: #4a2038;--gender-f-text: #f0b8d8;--error-bg: #4a2020;--error-text: #f5a8a8;--danger-border: #6b3030;--modal-shadow: rgba(0, 0, 0, .6)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.app{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:1px solid var(--border);background:var(--panel-bg);flex-wrap:wrap;gap:12px}.app-header h1{margin:0;font-size:1.4rem}.env-badge{display:inline-block;vertical-align:middle;margin-left:10px;padding:2px 8px;font-size:.65rem;font-weight:700;letter-spacing:.05em;border-radius:4px;background:#d94f4f;color:#fff}.subtitle{margin:2px 0 0;color:var(--muted);font-size:.85rem}.header-actions{display:flex;gap:8px;align-items:center}.search{padding:8px 12px;border:1px solid var(--border);border-radius:6px;min-width:220px;font-size:.9rem}.header-actions button{padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--panel-bg);color:var(--text);cursor:pointer;font-size:.85rem}.header-actions button:hover{background:var(--accent-light)}.view-toggle{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.view-toggle button{padding:8px 12px;border:none;background:var(--panel-bg);color:var(--text);cursor:pointer;font-size:.85rem}.view-toggle button+button{border-left:1px solid var(--border)}.view-toggle button.active{background:var(--accent);color:#fff}.app-body{flex:1;display:flex;overflow:hidden}.diagram-pane{flex:1;overflow:hidden;position:relative}.diagram-svg{display:block}.diagram-edge{fill:none;stroke:var(--border);stroke-width:1.5}.diagram-node{cursor:pointer}.diagram-node.selected .diagram-node-box{fill:var(--accent);stroke:var(--accent)}.diagram-node.selected .diagram-node-name,.diagram-node.selected .diagram-node-muted,.diagram-node.selected .diagram-node-spouse,.diagram-node.selected .diagram-gender,.diagram-node.selected .diagram-branch-tag{fill:#fff}.diagram-node.match .diagram-node-box{stroke:var(--match);stroke-width:3}.diagram-node-box{fill:var(--panel-bg);stroke:var(--border);stroke-width:1.5}.diagram-node-name{font-size:12px;font-weight:600;fill:var(--text)}.diagram-gender{font-weight:600;font-size:10px}.diagram-gender-M{fill:var(--gender-m-text)}.diagram-gender-F{fill:var(--gender-f-text)}.diagram-node-muted{font-size:10px;fill:var(--muted)}.diagram-node-spouse{font-size:11px;fill:var(--text)}.diagram-node-spouse-link{fill:var(--accent);text-decoration:underline;cursor:pointer}.diagram-branch-tag{font-size:9px;font-weight:600;fill:var(--accent)}.tree-pane{flex:1;overflow:auto;padding:16px 24px}.loading{color:var(--muted)}.tree-node{margin:0}.tree-row{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:6px;cursor:pointer;font-size:.92rem}.tree-row:hover{background:var(--accent-light)}.tree-row.selected{background:var(--accent);color:#fff}.tree-row.match{outline:2px solid var(--match)}.tree-row.dragging{opacity:.4}.tree-row.drop-target{background:var(--accent-light);outline:2px dashed var(--accent)}.drag-handle{cursor:grab;color:var(--muted);font-size:.85rem;padding:0 2px}.tree-row.selected .drag-handle{color:#f1e3d8}.drag-handle.disabled{cursor:default;opacity:.35}.hint{color:var(--muted);font-size:.78rem;margin:0 0 10px}.move-error{margin-bottom:10px}.toggle{border:none;background:none;cursor:pointer;width:18px;font-size:.8rem;color:var(--muted);padding:0}.tree-row.selected .toggle{color:#fff}.toggle-spacer{width:18px;display:inline-block}.name{flex:1}.gender-tag{font-size:.68rem;font-weight:600;padding:0 5px;border-radius:8px;margin-left:6px}.gender-tag.gender-M{background:var(--gender-m-bg);color:var(--gender-m-text)}.gender-tag.gender-F{background:var(--gender-f-bg);color:var(--gender-f-text)}.tree-row.selected .gender-tag{background:#ffffff4d;color:#fff}.spouse-name{font-size:1em;margin-left:8px}.spouse-name-link{cursor:pointer;text-decoration:underline}.panel-header h2 .gender-tag,.panel-header h2 .spouse-name{font-size:.6em;vertical-align:middle}.gen{color:var(--muted);font-size:.75rem}.tree-row.selected .gen{color:#f1e3d8}.branch-tag{font-size:.7rem;padding:1px 6px;border-radius:10px;background:var(--accent-light);color:var(--accent)}.tree-row.selected .branch-tag{background:#ffffff40;color:#fff}.note-flag{font-size:.65rem;color:var(--muted);border:1px solid var(--border);border-radius:8px;padding:0 6px}.tree-children{margin-left:26px;border-left:1px dashed var(--border);padding-left:8px}.panel{width:360px;border-left:1px solid var(--border);background:var(--panel-bg);padding:20px;overflow:auto}.person-photo{display:block;width:280px;height:280px;border-radius:50%;object-fit:cover;margin:0 auto 14px;border:1px solid var(--border)}.panel-header{display:flex;justify-content:space-between;align-items:flex-start}.panel-header h2{margin:0 0 4px;font-size:1.2rem}.close{border:none;background:none;font-size:1.4rem;cursor:pointer;color:var(--muted);line-height:1}.panel-meta{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:.8rem;margin:8px 0 12px}.siblings{font-size:.85rem;margin-bottom:16px;color:var(--muted)}.field{margin-bottom:12px}.field label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:4px}.field input,.field textarea,.field select{width:100%;padding:8px;border:1px solid var(--border);border-radius:6px;font-size:.9rem;font-family:inherit;background:var(--input-bg);color:var(--text)}.spouse-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:4px}.spouse-list li{display:flex;flex-direction:column;gap:6px;padding:6px 8px;background:var(--accent-light);border-radius:6px;font-size:.85rem}.spouse-line{display:flex;align-items:center;justify-content:space-between;gap:6px}.spouse-status{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.spouse-gender{font-size:.72rem;padding:1px 4px;border:1px solid var(--border);border-radius:4px;background:var(--input-bg)}.spouse-details{display:flex;align-items:center;gap:6px}.spouse-year{width:70px;font-size:.75rem;padding:3px 5px;border:1px solid var(--border);border-radius:4px;background:var(--input-bg)}.spouse-actions,.year-row{display:flex;align-items:center;gap:8px}.year-row input{width:50%;padding:8px;border:1px solid var(--border);border-radius:6px;font-size:.9rem}.year-sep{color:var(--muted)}.years{color:var(--muted);font-size:.85em;margin-left:6px}.tree-row.selected .years{color:#f1e3d8}.make-current{border:none;background:none;color:var(--accent);cursor:pointer;font-size:.72rem;text-decoration:underline;padding:0}.remove-spouse{border:none;background:none;color:var(--accent);cursor:pointer;font-size:1rem;line-height:1;padding:0 2px}.field-hint{margin:4px 0 0;font-size:.75rem;color:var(--muted)}.gender-radios{display:flex;gap:14px}.radio-option{display:flex;align-items:center;gap:4px;font-size:.85rem;color:var(--text)}.field.checkbox label{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--text)}.error{background:var(--error-bg);color:var(--error-text);padding:8px 10px;border-radius:6px;font-size:.82rem;margin-bottom:10px}.save{width:100%;padding:10px;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem}.save:disabled{opacity:.6;cursor:default}.view-info{margin-bottom:16px}.view-note{font-size:.85rem;color:var(--muted);margin:0 0 12px}.edit-actions{display:flex;gap:8px;margin-top:16px}.edit-actions .save{flex:1;width:auto}.cancel-edit{padding:10px 16px;background:var(--panel-bg);color:var(--text);border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:.9rem}.cancel-edit:disabled{opacity:.6;cursor:default}hr{border:none;border-top:1px solid var(--border);margin:20px 0}.add-child label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:6px}.add-child-row{display:flex;gap:8px}.add-child-row input{flex:1;padding:8px;border:1px solid var(--border);border-radius:6px}.add-child-row select{padding:8px;border:1px solid var(--border);border-radius:6px;background:var(--input-bg)}.add-child-row button{padding:8px 14px;border:1px solid var(--accent);background:var(--panel-bg);color:var(--accent);border-radius:6px;cursor:pointer}.add-child-row button:hover{background:var(--accent-light)}.edit-fieldset{border:none;padding:0;margin:0;min-width:0}.edit-fieldset:disabled{opacity:.55}.no-edit-hint{background:var(--accent-light);padding:8px 10px;border-radius:6px;margin:0 0 16px}.claim-status{font-size:.8rem;font-weight:600;color:var(--accent);margin-bottom:14px}.claim-box{display:flex;align-items:center;gap:10px;margin-bottom:14px}.claim-box button{padding:6px 12px;border:1px solid var(--accent);background:var(--panel-bg);color:var(--accent);border-radius:6px;cursor:pointer;font-size:.85rem}.claim-message{font-size:.78rem;color:var(--muted)}.auth-widget{display:flex;align-items:center;gap:8px;margin-left:8px;padding-left:8px;border-left:1px solid var(--border)}.auth-gate-checking{align-items:center;justify-content:center}.auth-gate-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px}.auth-gate-hint{color:var(--muted);font-size:.9rem;margin:0}.auth-card.embedded{background:var(--panel-bg);border:1px solid var(--border);border-radius:10px;padding:28px;width:340px;max-width:calc(100vw - 32px)}.current-user{font-size:.85rem}.user-role{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-left:4px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--panel-bg);border-radius:10px;padding:24px;width:340px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto;box-shadow:0 12px 40px var(--modal-shadow)}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.modal-header h2{margin:0;font-size:1.1rem}.modal-switch{text-align:center;font-size:.82rem;color:var(--muted);margin:14px 0 0}.link-button{border:none;background:none;color:var(--accent);cursor:pointer;text-decoration:underline;font-size:inherit;padding:0}.claims-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.claims-list li{background:var(--accent-light);border-radius:8px;padding:10px 12px;font-size:.85rem}.claim-actions{display:flex;gap:8px;margin-top:8px}.approve-claim,.reject-claim{padding:5px 10px;border-radius:6px;font-size:.78rem;cursor:pointer;border:1px solid var(--border);background:var(--panel-bg)}.approve-claim{border-color:var(--accent);color:var(--accent)}.reject-claim{color:var(--error-text);border-color:var(--danger-border)}.login-log-modal{width:420px}.login-log-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:60vh;overflow:auto}.login-log-entry{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;padding:8px 10px;border-radius:8px;font-size:.82rem;background:var(--accent-light)}.login-log-entry.failure{background:var(--error-bg)}.login-log-entry.rate-limited{background:var(--match)}.login-log-event{font-weight:600;text-transform:uppercase;font-size:.68rem;letter-spacing:.03em}.login-log-entry.failure .login-log-event{color:var(--error-text)}.login-log-entry.success .login-log-event{color:var(--accent)}.login-log-email{font-weight:500}.login-log-reason{color:var(--muted);font-style:italic}.login-log-meta{flex-basis:100%;color:var(--muted);font-size:.72rem}
