.tree-page{height:calc(100vh - 64px);padding:var(--space-4) var(--space-6) var(--space-2);box-sizing:border-box;flex-direction:column;max-width:1440px;margin:0 auto;display:flex}.tree-page-heading{font-family:var(--font-serif);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-navy-700);letter-spacing:var(--tracking-tight);margin:0 0 var(--space-1);flex-shrink:0}.tc-root{gap:var(--space-2);flex-direction:column;flex:1;min-height:0;display:flex}.tc-limit-banner{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-warning-surface);color:var(--color-warning);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-sm);border:1px solid #fcd34d;flex-shrink:0;display:flex}.tc-limit-banner svg{color:#d97706;flex-shrink:0}.tc-controls{justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;flex-shrink:0;display:flex}.tc-mode-group{gap:var(--space-1);background:var(--color-neutral-100);border-radius:var(--radius-lg);padding:var(--space-1);display:flex}.tc-mode-btn{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-neutral-600);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);cursor:pointer;transition:background var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default);background:0 0;border:none}.tc-mode-btn:hover{background:var(--color-neutral-200);color:var(--color-navy-700)}.tc-mode-active{box-shadow:var(--shadow-sm);background:var(--color-white)!important;color:var(--color-navy-700)!important}.tc-mode-active:focus-visible,.tc-mode-btn:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tc-action-group{align-items:center;gap:var(--space-2);display:flex}.tc-icon-btn{background:var(--color-neutral-100);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);width:36px;height:36px;color:var(--color-neutral-600);cursor:pointer;transition:background var(--duration-fast), color var(--duration-fast);justify-content:center;align-items:center;display:flex}.tc-icon-btn:hover{background:var(--color-neutral-200);color:var(--color-navy-700)}.tc-icon-btn:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tc-profile-link{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-paternal);padding:var(--space-1) var(--space-3);border:1px solid var(--color-paternal);border-radius:var(--radius-md);transition:background var(--duration-fast), color var(--duration-fast);text-decoration:none}.tc-profile-link:hover{background:var(--color-paternal);color:var(--color-white)}.tc-profile-link:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tc-root-label{align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-neutral-500);flex-shrink:0;display:flex}.tc-root-icon{font-size:var(--text-base);color:var(--color-navy-700)}.tc-canvas-wrap{border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);background:var(--color-neutral-50);outline:none;flex:1;min-height:0;position:relative;overflow:hidden}.tc-canvas-wrap:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tc-canvas-wrap .react-flow__renderer{border-radius:var(--radius-lg)}.tc-canvas-wrap .react-flow__handle{opacity:0;pointer-events:none}.tc-limit-overlay{z-index:5;align-items:center;gap:var(--space-3);padding:0 var(--space-4);background:var(--color-warning-surface);height:48px;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-warning);border-bottom:1px solid #92400e4d;display:flex;position:absolute;top:0;left:0;right:0}.tc-limit-overlay svg{flex-shrink:0}.tc-limit-text{flex:1}.tc-limit-dismiss{border-radius:var(--radius-sm);color:var(--color-warning);cursor:pointer;opacity:.7;font-size:18px;line-height:1;font-family:var(--font-sans);background:0 0;border:1px solid #92400e66;padding:0 8px}.tc-limit-dismiss:hover{opacity:1}.tc-ctrl-pill{bottom:var(--space-6);right:var(--space-6);z-index:5;background:var(--color-white);border:1px solid var(--color-neutral-200);border-radius:var(--radius-full);box-shadow:var(--shadow-md);align-items:center;gap:1px;padding:6px 10px;display:flex;position:absolute}.tc-ctrl-pill-btn{font-family:var(--font-sans);font-size:12px;font-weight:var(--weight-medium);color:var(--color-neutral-700);border-radius:var(--radius-full);cursor:pointer;transition:background var(--duration-fast), color var(--duration-fast);white-space:nowrap;background:0 0;border:none;padding:4px 10px}.tc-ctrl-pill-btn:hover{background:var(--color-neutral-100)}.tc-ctrl-pill-active{background:var(--color-paternal)!important;color:var(--color-white)!important}.tc-ctrl-pill-btn:focus-visible,.tc-ctrl-pill-active:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tc-ctrl-divider{background:var(--color-neutral-200);flex-shrink:0;width:1px;height:20px;margin:0 6px}.tc-zoom-btn{background:var(--color-neutral-100);cursor:pointer;border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-neutral-700);transition:background var(--duration-fast);border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;display:flex}.tc-zoom-btn:hover{background:var(--color-neutral-200)}.tc-zoom-btn:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tc-zoom-label{font-family:var(--font-mono);color:var(--color-neutral-600);text-align:center;min-width:36px;font-size:11px}.tc-depth-ctrl{top:var(--space-3);right:var(--space-3);z-index:5;background:var(--color-white);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-2) var(--space-3);flex-direction:column;gap:4px;display:flex;position:absolute}.tc-depth-row{align-items:center;gap:var(--space-2);display:flex}.tc-depth-label{font-family:var(--font-sans);color:var(--color-neutral-600);white-space:nowrap;flex:1;font-size:11px}.tc-depth-btn{background:var(--color-neutral-100);cursor:pointer;border-radius:var(--radius-sm);width:22px;height:22px;color:var(--color-neutral-700);transition:background var(--duration-fast);border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;display:flex}.tc-depth-btn:hover:not(:disabled){background:var(--color-neutral-200)}.tc-depth-btn:disabled{opacity:.4;cursor:default}.tc-depth-btn:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tc-depth-value{font-family:var(--font-mono);color:var(--color-neutral-700);text-align:center;min-width:14px;font-size:12px}.tc-reset-fab{bottom:var(--space-6);z-index:5;height:40px;padding:0 var(--space-4);border-radius:var(--radius-full,9999px);background:var(--color-navy-700);cursor:pointer;align-items:center;gap:var(--space-2);box-shadow:var(--shadow-md);color:var(--color-white);transition:background var(--duration-fast), box-shadow var(--duration-fast);border:none;display:flex;position:absolute;left:50%;transform:translate(-50%)}.tc-reset-fab:hover{background:var(--color-navy-600,#1b2a4a);box-shadow:var(--shadow-lg)}.tc-reset-fab:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tc-reset-fab svg{flex-shrink:0;width:16px;height:16px}.tc-reset-fab-label{font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;white-space:nowrap}.tc-mobile-mode-bar{display:none}.tc-kb-hint{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--color-neutral-600);text-align:center;flex-shrink:0;margin:0}.tc-kb-hint kbd{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-neutral-100);border:1px solid var(--color-neutral-300);border-radius:3px;padding:0 3px}.pn-root{background:var(--color-white);border:1.5px solid var(--color-neutral-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);cursor:default;-webkit-user-select:none;user-select:none;transition:box-shadow var(--duration-fast) var(--ease-default), border-color var(--duration-fast) var(--ease-default);box-sizing:border-box;align-items:stretch;display:flex;position:relative;overflow:hidden}.pn-root:hover{box-shadow:var(--shadow-md);border-color:var(--color-neutral-300)}.pn-focused{border-color:var(--focus-color)!important;box-shadow:0 0 0 3px #2563eb33, var(--shadow-md)!important}.pn-home{border:2px solid var(--color-navy-700)!important;box-shadow:var(--shadow-md), 0 0 0 3px #141f381a!important}.pn-terminal .pn-portrait,.pn-terminal .pn-accent{opacity:.55}.pn-home-badge{background:var(--color-navy-700);border:1.5px solid var(--color-white);z-index:1;border-radius:50%;width:8px;height:8px;position:absolute;top:3px;right:3px}.pn-accent{background:var(--accent,var(--color-neutral-300));flex-shrink:0;width:4px}.pn-portrait{width:48px;height:48px;margin:var(--space-2) var(--space-2) var(--space-2) var(--space-2);background:var(--color-neutral-100);border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-self:center;align-items:center;display:flex}.pn-portrait-svg{width:28px;height:28px;color:var(--color-neutral-400)}.pn-portrait-img{object-fit:cover;border-radius:var(--radius-sm);width:100%;height:100%;display:block}.pn-text{min-width:0;padding:var(--space-2) var(--space-2) var(--space-2) 0;flex-direction:column;flex:1;justify-content:center;gap:2px;display:flex;overflow:hidden}.pn-name{font-family:var(--font-serif);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-navy-700);line-height:var(--leading-snug);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pn-dates{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--color-neutral-500);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pn-terminal-badge{font-family:var(--font-sans);color:var(--color-neutral-700);background:var(--color-warning-surface);border-radius:var(--radius-sm);align-self:flex-start;padding:0 4px;font-size:10px}.pn-handle{opacity:0!important;pointer-events:none!important}.react-flow__attribution a{color:var(--color-neutral-700)!important;background:var(--color-white)!important}.fc-root{border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);background:var(--color-neutral-50);flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.fc-svg{width:100%;height:100%;max-height:100%}.fc-home-circle{cursor:pointer;transition:opacity var(--duration-fast)}.fc-home-circle:hover{opacity:.85}.fc-home-circle:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:3px}.fc-home-name{pointer-events:none;-webkit-user-select:none;user-select:none}.fc-tooltip{bottom:var(--space-4);background:var(--color-navy-700);color:var(--color-white);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);pointer-events:none;font-family:var(--font-sans);max-width:280px;box-shadow:var(--shadow-lg);z-index:var(--z-raised);flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.fc-tooltip-name{font-size:var(--text-sm);font-weight:var(--weight-semibold)}.fc-tooltip-dates{font-size:var(--text-xs);opacity:.8}.fc-tooltip-hint{opacity:.6;margin-top:2px;font-size:10px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:768px){.tree-page{padding:var(--space-3) var(--space-3) var(--space-1);height:calc(100vh - 56px)}.tree-page-heading{font-size:var(--text-xl)}.tc-depth-ctrl{top:48px;right:var(--space-2);padding:var(--space-1) var(--space-2)}.tc-ctrl-pill{box-shadow:var(--shadow-sm);border-top:none;border-left:none;border-right:none;border-bottom:1px solid var(--color-neutral-200);border-radius:0;gap:0;padding:0;inset:0 0 auto}.tc-ctrl-pill-btn{font-size:var(--text-xs);border-right:1px solid var(--color-neutral-200);text-align:center;border-radius:0;flex:1;padding:12px 4px}.tc-ctrl-pill-btn:last-of-type{border-right:none}.tc-ctrl-divider,.tc-zoom-btn,.tc-zoom-label{display:none}.tc-reset-fab{bottom:var(--space-5);height:36px;padding:0 var(--space-3)}.pn-portrait{width:36px;height:36px}.pn-portrait-svg{width:22px;height:22px}.pn-name{font-size:var(--text-xs)}.pn-dates:nth-of-type(3),.tc-kb-hint{display:none}.fc-tooltip{bottom:var(--space-2);font-size:var(--text-xs)}}.tc-workspace{gap:var(--space-3);flex:1;align-items:stretch;min-height:0;display:flex}.tcp-panel{background:var(--color-white);border:1px solid var(--color-neutral-200);border-radius:var(--radius-lg);width:256px;box-shadow:var(--shadow-sm);transition:width var(--duration-normal) var(--ease-default);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.tcp-panel--collapsed{width:42px}.tcp-toggle{align-items:center;gap:var(--space-2);padding:0 var(--space-3);border:none;border-bottom:1px solid var(--color-neutral-200);background:var(--color-neutral-50);cursor:pointer;height:40px;color:var(--color-neutral-600);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;text-align:left;flex-shrink:0;width:100%;display:flex;overflow:hidden}.tcp-toggle:hover{background:var(--color-neutral-100);color:var(--color-navy-700)}.tcp-toggle:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:-2px}.tcp-toggle-icon{flex-shrink:0}.tcp-toggle-label{letter-spacing:var(--tracking-wide);text-transform:uppercase;flex:1}.tcp-body{padding:var(--space-3);gap:var(--space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.tcp-section{gap:var(--space-2);flex-direction:column;display:flex}.tcp-section-label{font-family:var(--font-sans);font-size:.6875rem;font-weight:var(--weight-bold);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--color-neutral-600)}.tcp-divider{background:var(--color-neutral-100);height:1px;margin:0 calc(-1 * var(--space-3))}.tcp-search-wrap{position:relative}.tcp-search-icon{color:var(--color-neutral-400);pointer-events:none;position:absolute;top:50%;left:.5625rem;transform:translateY(-50%)}.tcp-input{width:100%;height:34px;padding:0 var(--space-3) 0 2rem;border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-neutral-700);background:var(--color-neutral-50);outline:none}.tcp-input:focus{border-color:var(--color-paternal);background:var(--color-white);box-shadow:0 0 0 3px var(--color-paternal-light)}.tcp-input::placeholder{color:var(--color-neutral-400)}.tcp-results{border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);background:var(--color-white);box-shadow:var(--shadow-md);margin:0;padding:0;list-style:none;overflow:hidden}.tcp-results li{border-bottom:1px solid var(--color-neutral-100)}.tcp-results li:last-child{border-bottom:none}.tcp-result-btn{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);cursor:pointer;text-align:left;background:0 0;border:none;display:flex}.tcp-result-btn:hover{background:var(--color-paternal-light)}.tcp-result-btn:hover .tcp-result-name{color:var(--color-paternal-dark)}.tcp-result-btn:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:-2px}.tcp-result-avatar{background:var(--color-neutral-100);border:1px solid var(--color-neutral-200);width:26px;height:26px;font-family:var(--font-serif);font-size:9px;font-weight:var(--weight-semibold);color:var(--color-neutral-600);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.tcp-result-info{flex-direction:column;gap:1px;min-width:0;display:flex}.tcp-result-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-neutral-700);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tcp-result-meta{font-family:var(--font-mono);color:var(--color-neutral-500);font-size:.6875rem}.tcp-no-results{font-size:var(--text-xs);color:var(--color-neutral-500);font-family:var(--font-sans);padding:var(--space-1) 0}.tcp-filter-active{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--weight-medium);font-family:var(--font-sans);background:var(--color-paternal-light);color:var(--color-paternal-dark);border:1px solid color-mix(in srgb, var(--color-paternal) 25%, transparent);display:flex}.tcp-filter-active--maternal{background:var(--color-maternal-light);color:var(--color-maternal-dark);border-color:color-mix(in srgb, var(--color-maternal) 25%, transparent)}.tcp-filter-active--unknown{background:var(--color-neutral-100);color:var(--color-neutral-700);border-color:var(--color-neutral-200)}.tcp-filter-clear{cursor:pointer;color:inherit;opacity:.7;background:0 0;border:none;flex-shrink:0;margin-left:auto;padding:0;font-size:1rem;line-height:1}.tcp-filter-clear:hover{opacity:1}.tcp-branches{flex-direction:column;gap:2px;display:flex}.tcp-branch{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast);border:1px solid #0000;display:flex}.tcp-branch:hover{background:var(--color-neutral-50)}.tcp-branch--active{background:var(--color-neutral-100);border-color:var(--color-neutral-200)}.tcp-branch--active-paternal{background:var(--color-paternal-light);border-color:color-mix(in srgb, var(--color-paternal) 20%, transparent)}.tcp-branch--active-maternal{background:var(--color-maternal-light);border-color:color-mix(in srgb, var(--color-maternal) 20%, transparent)}.tcp-radio{border:2px solid var(--color-neutral-300);background:var(--color-white);width:16px;height:16px;transition:border-color var(--duration-fast);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.tcp-branch--active-paternal .tcp-radio{border-color:var(--color-paternal)}.tcp-branch--active-maternal .tcp-radio{border-color:var(--color-maternal)}.tcp-branch--active-unknown .tcp-radio,.tcp-branch--active-all .tcp-radio{border-color:var(--color-neutral-500)}.tcp-radio-dot{border-radius:50%;width:8px;height:8px}.tcp-radio-dot--paternal{background:var(--color-paternal)}.tcp-radio-dot--maternal{background:var(--color-maternal)}.tcp-radio-dot--unknown,.tcp-radio-dot--all{background:var(--color-neutral-500)}.tcp-swatch{border-radius:2px;flex-shrink:0;width:10px;height:10px}.tcp-swatch--all{border:1.5px dashed var(--color-neutral-300);background:0 0}.tcp-swatch--paternal{background:var(--color-paternal)}.tcp-swatch--maternal{background:var(--color-maternal)}.tcp-swatch--unknown{background:var(--color-neutral-300)}.tcp-branch-label{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-neutral-700);flex:1}.tcp-home-card{align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--color-neutral-50);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);display:flex}.tcp-home-avatar{background:var(--color-navy-700);width:32px;height:32px;color:var(--color-white);font-family:var(--font-serif);font-size:10px;font-weight:var(--weight-semibold);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.tcp-avatar-img{object-fit:cover;width:100%;height:100%;display:block}.tcp-home-info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.tcp-home-name{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-neutral-700);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tcp-home-meta{font-family:var(--font-mono);color:var(--color-neutral-500);font-size:.6875rem}.tcp-home-edit-btn{border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);font-family:var(--font-sans);color:var(--color-neutral-600);cursor:pointer;white-space:nowrap;background:0 0;flex-shrink:0;align-items:center;gap:4px;font-size:.6875rem;display:flex}.tcp-home-edit-btn:hover{background:var(--color-neutral-100);color:var(--color-paternal);border-color:var(--color-paternal)}.tcp-home-edit-btn:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.tcp-home-editing{gap:var(--space-2);padding:var(--space-2);background:var(--color-neutral-50);border:1px solid var(--color-neutral-200);border-radius:var(--radius-md);flex-direction:column;display:flex}.tcp-home-editing-hint{font-size:var(--text-xs);color:var(--color-neutral-600);font-weight:var(--weight-medium);font-family:var(--font-sans)}.tcp-cancel-btn{border:1px solid var(--color-neutral-200);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);font-family:var(--font-sans);font-size:var(--text-xs);color:var(--color-neutral-600);cursor:pointer;background:0 0;align-self:flex-start}.tcp-cancel-btn:hover{background:var(--color-neutral-100)}.tcp-cancel-btn:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}@media (max-width:767px){.tc-workspace{flex-direction:column}.tcp-panel{border-radius:var(--radius-md);width:100%;max-height:44px;transition:max-height var(--duration-normal) var(--ease-default);overflow:hidden}.tcp-panel:not(.tcp-panel--collapsed){max-height:380px}.tcp-panel--collapsed{width:100%;max-height:44px}.tcp-toggle-label{display:block}}@media (prefers-reduced-motion:reduce){.tc-ctrl-pill-btn,.tc-zoom-btn,.tc-reset-fab,.pn-root,.fc-home-circle{transition:none}}
