:root{color-scheme:light dark;--app-bg:#f1ede5;--canvas-bg:#f8f5ef;--surface:#ffffff;--surface-elevated:#fffdf9;--text:#1e2d29;--text-muted:#6d7873;--border:#ded8cf;--brand:#216b52;--brand-strong:#15513d;--on-brand:#ffffff;--accent:#e47c61;--focus:#2f80ed;--line-parent:#2f8f62;--line-partner:#c8715a;--line-sibling:#87938e;--radius-control:12px;--radius-card:16px;--radius-panel:20px;--radius-pill:999px;--shadow-card:0 4px 18px rgba(30,45,41,0.08);--shadow-panel:0 16px 48px rgba(30,45,41,0.16)}html[data-theme=light]{color-scheme:light}html[data-theme=dark]{color-scheme:dark;--app-bg:#111715;--canvas-bg:#161e1b;--surface:#202a26;--surface-elevated:#26322d;--text:#f3f6f4;--text-muted:#adb8b3;--border:#3b4742;--brand:#63c29b;--brand-strong:#83d6b4;--on-brand:#111715;--accent:#f09a82;--focus:#78a9ff;--line-parent:#68c995;--line-partner:#eea18d;--line-sibling:#aeb8b3;--shadow-card:0 4px 18px rgba(0,0,0,0.24);--shadow-panel:0 16px 48px rgba(0,0,0,0.36)}*{box-sizing:border-box}body{margin:0;background:var(--app-bg);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body:has(.tree-shell){height:100dvh;overflow:hidden}[role=button]:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.person-node-avatar,img{filter:none}.app-shell{min-height:100svh;display:grid;place-items:center;padding:24px}.welcome-panel{width:min(720px,100%);border:1px solid var(--border);border-radius:24px;background:var(--surface);padding:32px;box-shadow:0 20px 60px rgba(0,0,0,.1)}.eyebrow{margin:0 0 8px;color:var(--brand);font-weight:700}h1{margin:0 0 12px;font-size:clamp(32px,7vw,56px);line-height:1.04;letter-spacing:0}p{color:var(--text-muted);line-height:1.5}.primary-button{border:0;border-radius:14px;background:var(--brand);color:var(--on-brand)}.primary-button,.secondary-button{min-height:44px;font-weight:700;padding:0 18px;cursor:pointer}.secondary-button{border:1px solid var(--border);border-radius:14px}.secondary-button,.toolbar-action{background:var(--surface);color:var(--text)}.toolbar-action{display:inline-flex;min-height:36px;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:999px;font-size:14px;font-weight:700;padding:0 12px;text-decoration:none}.toolbar-action.primary{border-color:transparent;background:var(--brand);color:var(--on-brand)}.danger-button{min-height:40px;border:1px solid rgba(255,59,48,.3);border-radius:12px;background:rgba(255,59,48,.1);color:#d70015;font-weight:700;padding:0 14px}.tree-picker{display:grid;grid-gap:12px;gap:12px;margin-top:22px}.tree-picker-item{display:grid;grid-gap:4px;gap:4px;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:inherit;padding:16px;text-decoration:none}.tree-picker-item span{color:var(--brand);font-size:14px;font-weight:700}.tree-picker-item small{color:var(--text-muted)}.tree-switch-item{display:flex;min-height:54px;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:inherit;padding:12px;text-decoration:none}.tree-switch-item span{color:var(--brand);font-size:14px;font-weight:700}.tree-switch-item.active{border-color:rgba(0,122,255,.45);background:rgba(0,122,255,.08)}.admin-layout{width:min(1180px,100%);margin:0 auto;padding:28px}.admin-header{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:20px}.admin-header-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.duplicate-review-heading{margin-bottom:16px}.duplicate-person h3,.duplicate-person p,.duplicate-review-heading h2,.duplicate-review-heading p{margin-top:0}.duplicate-pair,.duplicate-pair-list{display:grid;grid-gap:16px;gap:16px}.duplicate-pair-actions,.duplicate-pair-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.duplicate-reasons,.duplicate-tree-chips{display:flex;flex-wrap:wrap;gap:6px}.duplicate-reasons span,.duplicate-tree-chips span{border-radius:999px;background:rgba(0,122,255,.09);color:var(--text);font-size:13px;padding:5px 9px}.duplicate-people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.duplicate-person{display:grid;grid-template-columns:72px minmax(0,1fr);grid-gap:12px;gap:12px;border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:14px}.duplicate-person-photo{width:72px;height:72px;border-radius:50%;object-fit:cover}.duplicate-person-initials{display:grid;place-items:center;background:#e8f2ff;color:#245f99;font-weight:800}.duplicate-pair-actions small{color:var(--text-muted)}.duplicate-pair-actions .primary-button:disabled{cursor:not-allowed;opacity:.5}.duplicate-review-status:empty{display:none}.merge-conflict-alert,.merge-inline-error{border:1px solid color-mix(in srgb,var(--accent) 58%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--accent) 10%,var(--surface));padding:12px}.person-merge-backdrop{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;background:rgba(10,18,15,.62);padding:20px}.person-merge-dialog{width:min(1040px,100%);max-height:calc(100dvh - 40px);overflow:auto;border:1px solid var(--border);border-radius:20px;background:var(--surface-elevated);box-shadow:0 24px 80px rgba(0,0,0,.24);padding:20px}.person-merge-footer,.person-merge-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.person-merge-header h2,.person-merge-header p{margin-top:0}.person-merge-header>button{flex:0 0 44px;min-height:44px;font-size:24px}.merge-destination,.merge-position-choice{display:flex;flex-wrap:wrap;gap:10px 18px;border:1px solid var(--border);border-radius:14px;margin:16px 0;padding:14px}.merge-destination legend,.merge-position-choice legend{font-weight:750;padding:0 6px}.merge-choice-group label,.merge-destination label,.merge-final-confirmation,.merge-position-choice label{display:flex;align-items:center;gap:8px;min-height:44px}.person-merge-table-wrap{overflow-x:auto}.person-merge-table{width:100%;border-collapse:collapse}.person-merge-table caption{text-align:left;font-size:18px;font-weight:750;padding:10px 0}.person-merge-table td,.person-merge-table th{border-top:1px solid var(--border);text-align:left;vertical-align:top;padding:12px 10px}.person-merge-table th:first-child{width:130px}.merge-choice-group{border:0;margin:0;padding:0}.merge-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.merge-photo{width:72px;height:72px;border-radius:50%;object-fit:cover}.merge-notes{display:block;max-width:28ch;white-space:pre-wrap}.merge-appearances{margin-top:20px}.merge-appearance-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.merge-appearance-columns section{border:1px solid var(--border);border-radius:12px;padding:12px}.merge-appearance-columns h4{margin:0 0 8px}.merge-conflict-alert:focus{outline:3px solid var(--focus);outline-offset:3px}.merge-final-confirmation{border:1px solid var(--border);border-radius:12px;margin:16px 0;padding:12px;font-weight:700}.person-merge-footer{align-items:center;justify-content:flex-end}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}.admin-grid.three{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.admin-panel{border:1px solid var(--border);border-radius:18px;background:var(--surface);padding:18px}.admin-row{min-height:44px;display:flex;justify-content:space-between;gap:12px;align-items:center;border-top:1px solid var(--border);padding:10px 0}.admin-row span{display:grid;grid-gap:2px;gap:2px}.admin-row small{color:var(--text-muted)}.admin-list{display:grid}.editor-form{display:grid;grid-gap:10px;gap:10px}.editor-form.inline{grid-template-columns:minmax(0,1fr) auto;margin:12px 0}.editor-form input,.editor-form select,.editor-form textarea{width:100%;min-height:40px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);padding:10px 12px;font:inherit}.editor-form textarea{min-height:88px;resize:vertical}.editor-form label{display:grid;grid-gap:5px;gap:5px;color:var(--text-muted);font-size:13px;font-weight:700}.editor-label-hint{font-size:12px;font-weight:400;color:var(--text-muted);font-style:italic}.editor-multiselect{min-height:80px!important;border-radius:12px;padding:4px 0!important}.editor-multiselect option{padding:4px 12px;border-radius:6px}.editor-form .editor-checkbox{display:flex;align-items:center;gap:8px;color:var(--text)}.editor-form .editor-checkbox input{width:20px;min-height:20px;margin:0}.audit-row code{max-width:min(42ch,50%);overflow-wrap:anywhere;color:var(--text-muted);font-size:12px}.editor-list{display:grid;grid-gap:10px;gap:10px}.editor-item,.editor-row{border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:12px}.editor-item summary{cursor:pointer;font-weight:700;margin-bottom:10px}.editor-row{display:flex;justify-content:space-between;gap:12px;align-items:center}.tree-editor-drawer{position:fixed;z-index:20;top:0;right:0;width:min(420px,calc(100vw - 28px));height:100svh;overflow-y:auto;border-left:1px solid var(--border);background:color-mix(in srgb,var(--surface-elevated) 96%,transparent);box-shadow:-24px 0 70px rgba(0,0,0,.16);padding:20px;transform:translateX(108%);transition:transform .18s ease}.tree-editor-drawer.wide{width:min(560px,calc(100vw - 28px))}.tree-editor-drawer:target{transform:translateX(0)}.tree-editor-drawer:target~.drawer-scrim{opacity:1;pointer-events:auto}.drawer-scrim{position:fixed;z-index:19;inset:0;background:rgba(0,0,0,.18);opacity:0;pointer-events:none;transition:opacity .18s ease}.drawer-header{position:-webkit-sticky;position:sticky;top:-20px;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface-elevated) 96%,transparent);padding:6px 0 14px;margin-bottom:16px}.drawer-header h2{margin:0;font-size:24px}.drawer-header a{color:var(--brand);font-weight:700;text-decoration:none}.tree-editor-drawer h3{margin:22px 0 12px;font-size:17px}.theme-switcher{display:inline-grid;gap:4px;min-width:0;color:var(--text-muted);font-size:12px;font-weight:700}.theme-switcher select{min-width:116px;min-height:44px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);color:var(--text);padding:0 36px 0 12px;font:inherit;font-size:14px;cursor:pointer}.theme-switcher select:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.theme-switcher.is-compact select{min-width:102px}@media (max-width:760px){.admin-grid,.admin-grid.three{grid-template-columns:1fr}.admin-header{align-items:flex-start}.admin-header-actions,.duplicate-pair-actions,.duplicate-pair-header{align-items:stretch;flex-direction:column}.duplicate-people{grid-template-columns:1fr}.person-merge-backdrop{align-items:end;padding:0}.person-merge-dialog{width:100%;max-height:94dvh;border-radius:20px 20px 0 0;padding:16px}.person-merge-table,.person-merge-table tbody,.person-merge-table td,.person-merge-table th,.person-merge-table tr{display:block;width:100%}.person-merge-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.person-merge-table tr{border-top:1px solid var(--border);padding:10px 0}.person-merge-table td,.person-merge-table th{border:0;padding:6px 0}.person-merge-table td:before{content:attr(data-label);display:block;color:var(--text-muted);font-size:12px;font-weight:700;margin-bottom:4px}.merge-appearance-columns{grid-template-columns:1fr}.person-merge-footer{align-items:stretch;flex-direction:column-reverse}.editor-form.inline,.editor-row{display:grid}.audit-row{align-items:flex-start;flex-direction:column}.audit-row code{max-width:100%}.tree-editor-drawer,.tree-editor-drawer.wide{top:auto;bottom:0;width:100vw;height:min(82svh,720px);border-top:1px solid var(--border);border-left:0;border-radius:22px 22px 0 0;box-shadow:0 -24px 70px rgba(0,0,0,.16);transform:translateY(108%)}.tree-editor-drawer:target{transform:translateY(0)}}