.family-tree-surface{font-family:var(--type-family-tree-font-family);font-size:var(--type-family-tree-font-size);line-height:var(--type-family-tree-line-height)}.family-tree-surface__title{font-family:var(--type-family-tree-title-font-family);font-size:var(--type-family-tree-title-font-size);line-height:var(--type-family-tree-title-line-height);font-weight:600}.family-tree-surface__intro{font-family:var(--type-family-tree-font-family);font-size:var(--type-family-tree-card-meta-font-size);line-height:var(--type-family-tree-card-meta-line-height)}.family-tree-surface__card-title{font-weight:600}.family-tree-canvas .family-tree-person__name,.family-tree-surface__card-title{font-family:var(--type-family-tree-card-font-family);font-size:var(--type-family-tree-card-font-size);line-height:var(--type-family-tree-card-line-height)}.family-tree-canvas .family-tree-person__name{font-weight:500;color:var(--color-brand-ink)}.family-tree-canvas .family-tree-person__meta{font-size:var(--type-family-tree-card-meta-font-size);color:color-mix(in srgb,var(--node-tone) 55%,var(--color-brand-ink-soft))}.family-tree-canvas .family-tree-person__badge,.family-tree-canvas .family-tree-person__meta{font-family:var(--type-family-tree-card-meta-font-family);line-height:var(--type-family-tree-card-meta-line-height)}.family-tree-canvas .family-tree-person__badge{font-size:.6875rem}.family-tree-canvas--empty{background:transparent}.family-tree-empty-state{max-width:22rem;text-align:center}.family-tree-empty-state__eyebrow{margin:0 0 .5rem;font-family:var(--type-family-tree-card-meta-font-family);font-size:var(--type-family-tree-card-meta-font-size);line-height:var(--type-family-tree-card-meta-line-height);letter-spacing:.08em;text-transform:uppercase;color:var(--color-foreground-muted)}.family-tree-empty-state__title{margin:0 0 .75rem;font-family:var(--type-family-tree-title-font-family);font-size:clamp(1.5rem,2.6vw,1.6875rem);line-height:1.15;font-weight:400;color:var(--color-foreground)}.family-tree-empty-state__copy{margin:0 0 1.25rem;line-height:var(--type-family-tree-card-meta-line-height);color:var(--color-foreground-muted)}.family-tree-empty-state__copy,.family-tree-empty-state__cta{font-family:var(--type-family-tree-font-family);font-size:var(--type-family-tree-card-meta-font-size)}.family-tree-empty-state__cta{display:inline-flex;align-items:center;justify-content:center;min-height:2.5rem;padding:0 1.25rem;border-radius:999px;font-weight:600;cursor:pointer}.family-tree-canvas{min-height:14rem;border-radius:1.25rem;border:1px solid color-mix(in srgb,var(--color-brand-gold) 28%,var(--color-border));overflow:hidden;isolation:isolate;color:var(--color-brand-ink)}.family-tree-canvas:not(.family-tree-canvas--empty){height:min(720px,78vh)}.family-tree-canvas__backdrop{pointer-events:none;position:absolute;inset:0;z-index:0;overflow:hidden;border-radius:inherit;background-color:var(--color-celestial-base)}.family-tree-canvas__nebula{position:absolute;inset:0;background-image:radial-gradient(ellipse 72% 64% at 50% 38%,color-mix(in srgb,var(--color-brand-gold) 24%,transparent) 0,transparent 58%),radial-gradient(circle at 50% 115%,color-mix(in srgb,var(--color-navy-700) 48%,transparent) 0,transparent 52%)}.family-tree-canvas__starfield{pointer-events:none;position:absolute;inset:0;z-index:3;width:100%;height:100%;opacity:1}@keyframes family-tree-orrery-orbit{to{transform:rotate(1turn)}}@keyframes family-tree-orrery-orbit-rev{to{transform:rotate(-1turn)}}@keyframes family-tree-orrery-surface{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}@keyframes family-tree-orrery-glow{0%,to{opacity:.45;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.family-tree-canvas__orrery{pointer-events:none;position:absolute;top:50%;left:50%;z-index:2;width:min(760px,118%);aspect-ratio:1;opacity:.58;transform:translate(-50%,-50%)}.family-tree-canvas__orrery-inner{position:relative;width:100%;height:100%;container-type:inline-size}.family-tree-canvas__orrery-glow{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--color-marketing-accent-bright) 22%,transparent),color-mix(in srgb,var(--color-accent) 8%,transparent) 42%,transparent 64%);filter:blur(14px);pointer-events:none}.family-tree-canvas__orrery-orbit-wrap{position:absolute;top:50%;left:50%;width:var(--orrery-orbit-size,33%);aspect-ratio:1/1;height:auto;transform:translate(-50%,-50%) rotate(var(--orrery-start-angle,0deg))}.family-tree-canvas__orrery-orbit{position:absolute;inset:0;animation:family-tree-orrery-orbit var(--orbit-duration,48s) linear infinite;transform-origin:center center}.family-tree-canvas__orrery-orbit--rev{animation-name:family-tree-orrery-orbit-rev}.family-tree-canvas__orrery-orbit-holder{position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.family-tree-canvas__orrery-planet-counter{position:relative;width:var(--orrery-orb-size,20px);height:var(--orrery-orb-size,20px);animation:family-tree-orrery-orbit-rev var(--orbit-duration,48s) linear infinite;transform-origin:center center}.family-tree-canvas__orrery-orbit--rev .family-tree-canvas__orrery-planet-counter{animation-name:family-tree-orrery-orbit}.family-tree-canvas__orrery-planet-upright{position:absolute;inset:0;transform:rotate(calc(-1 * var(--orrery-start-angle, 0deg)));transform-origin:center center}.family-tree-canvas__orrery-planet-orb{width:100%!important;height:100%!important;display:block}.family-tree-canvas__orrery-sun{position:absolute;top:50%;left:50%;z-index:3;width:17%;aspect-ratio:1/1;overflow:visible;transform:translate(-50%,-50%);border-radius:50%;opacity:.85;box-shadow:0 0 30px 7px color-mix(in srgb,var(--color-marketing-accent-bright) 60%,transparent),0 0 66px 20px color-mix(in srgb,var(--color-marketing-accent-bright) 28%,transparent)}.family-tree-canvas__orrery-sun:before{content:"";inset:-75%;background:radial-gradient(circle,color-mix(in srgb,var(--color-marketing-accent-bright) 38%,transparent),transparent 62%);z-index:0}.family-tree-canvas__orrery-sun-glow,.family-tree-canvas__orrery-sun:before{position:absolute;border-radius:50%;animation:family-tree-orrery-glow 4s ease-in-out infinite;pointer-events:none}.family-tree-canvas__orrery-sun-glow{inset:-35%;background:radial-gradient(circle,color-mix(in srgb,var(--color-marketing-accent-bright) 35%,transparent),transparent 60%);z-index:1}.family-tree-canvas__orrery-sun-orb{position:relative;z-index:2;width:100%!important;height:100%!important;display:block}.family-tree-canvas__orrery .panchang-planet{position:relative;display:block;border-radius:50%;overflow:hidden;flex:none;aspect-ratio:1/1;box-sizing:border-box}.family-tree-canvas__orrery .panchang-planet__body,.family-tree-canvas__orrery .panchang-planet__shade{position:absolute;inset:0;border-radius:50%}.family-tree-canvas__orrery .panchang-planet__body{overflow:hidden;z-index:1}.family-tree-canvas__orrery .panchang-planet__surface{position:absolute;top:0;left:0;z-index:2;width:200%;height:100%;border-radius:0;background-size:50% 100%;background-repeat:repeat-x;animation:family-tree-orrery-surface var(--planet-axis-duration,13s) linear infinite}.family-tree-canvas__orrery .panchang-planet__shade{z-index:3;pointer-events:none;background:radial-gradient(circle at 33% 27%,rgba(255,255,255,.4),transparent 44%),radial-gradient(circle at 73% 79%,rgba(0,0,0,.55),transparent 58%)}.family-tree-canvas__orrery .panchang-planet--center-sun .panchang-planet__body{box-shadow:inset -3px -3px 10px color-mix(in srgb,var(--color-brand-gold-deep) 45%,transparent)}.family-tree-canvas__orrery .panchang-planet--fill{width:100%;height:100%}.family-tree-canvas__orrery .panchang-planet--center-sun{overflow:hidden}.family-tree-canvas__orrery .panchang-planet--saturn{overflow:visible}.family-tree-canvas__orrery .panchang-planet--saturn .panchang-planet__body{overflow:hidden}.family-tree-canvas__orrery .panchang-planet__saturn-ring{position:absolute;top:50%;left:50%;width:190%;height:56%;transform:translate(-50%,-50%) rotate(20deg);border-radius:50%;border:1.5px solid rgba(224,206,160,.7);box-shadow:0 0 7px rgba(224,206,160,.3);pointer-events:none;z-index:4}@media (prefers-reduced-motion:reduce){.family-tree-canvas__orrery .panchang-planet__surface,.family-tree-canvas__orrery-orbit,.family-tree-canvas__orrery-planet-counter,.family-tree-canvas__orrery-sun-glow,.family-tree-canvas__orrery-sun:before{animation:none!important}}.family-tree-canvas__backdrop--paused .family-tree-canvas__orrery .panchang-planet__surface,.family-tree-canvas__backdrop--paused .family-tree-canvas__orrery-orbit,.family-tree-canvas__backdrop--paused .family-tree-canvas__orrery-planet-counter,.family-tree-canvas__backdrop--paused .family-tree-canvas__orrery-sun-glow,.family-tree-canvas__backdrop--paused .family-tree-canvas__orrery-sun:before{animation-play-state:paused!important}.family-tree-person-node{--node-tone:var(--color-brand-gold);--node-surface-top:color-mix(in srgb,var(--node-tone) 38%,var(--color-navy-900));--node-surface-bottom:color-mix(in srgb,var(--color-navy-950) 78%,var(--node-tone) 22%);--node-halo:color-mix(in srgb,var(--color-celestial-base) 92%,var(--node-tone) 8%);overflow:visible}.family-tree-person-node[data-relation-kind=self]{--node-tone:var(--color-brand-gold);--node-surface-top:color-mix(in srgb,var(--color-brand-gold) 48%,var(--color-navy-900));--node-surface-bottom:color-mix(in srgb,var(--color-navy-950) 70%,var(--color-brand-gold) 30%)}.family-tree-person-node[data-relation-kind=child],.family-tree-person-node[data-relation-kind=parent]{--node-tone:var(--color-gold-400)}.family-tree-person-node[data-relation-kind=spouse]{--node-tone:var(--color-accent-joint);--node-surface-top:color-mix(in srgb,var(--color-accent-joint) 42%,var(--color-navy-900));--node-surface-bottom:color-mix(in srgb,var(--color-navy-950) 76%,var(--color-accent-joint) 24%)}.family-tree-person-node[data-relation-kind=sibling]{--node-tone:var(--color-gold-300)}.family-tree-person-node[data-relation-kind=grandparent]{--node-tone:var(--color-gold-500)}.family-tree-person-node[data-relation-kind=uncle_aunt]{--node-tone:var(--color-gold-200);--node-surface-top:color-mix(in srgb,var(--color-gold-200) 44%,var(--color-navy-900));--node-surface-bottom:color-mix(in srgb,var(--color-navy-950) 72%,var(--color-gold-300) 28%)}.family-tree-person-node[data-relation-kind=cousin]{--node-tone:var(--color-rose-300);--node-surface-top:color-mix(in srgb,var(--color-rose-300) 40%,var(--color-navy-900));--node-surface-bottom:color-mix(in srgb,var(--color-navy-950) 78%,var(--color-rose-300) 22%)}.family-tree-person-node[data-relation-kind=niece_nephew]{--node-tone:var(--color-rose-200)}.family-tree-person-node[data-relation-kind=inlaw]{--node-tone:var(--color-navy-300);--node-surface-top:color-mix(in srgb,var(--color-navy-300) 36%,var(--color-navy-900));--node-surface-bottom:color-mix(in srgb,var(--color-navy-950) 82%,var(--color-gold-400) 18%)}.family-tree-person-node[data-relation-kind=family_friend],.family-tree-person-node[data-relation-kind=friend]{--node-tone:var(--color-accent-joint)}.family-tree-person-node[data-relation-kind=colleague]{--node-tone:var(--color-navy-400)}.family-tree-person-node[data-relation-kind=match]{--node-tone:var(--color-gold-300)}.family-tree-person-node[data-relation-kind=subtype]{--node-tone:var(--color-gold-200)}.family-tree-person-node[data-relation-kind=family_relative]{--node-tone:var(--color-navy-400)}.family-tree-canvas .react-flow__node.family-tree-person-node{transition:transform .4s ease-out;overflow:visible!important}.family-tree-canvas .react-flow__node.family-tree-person-node:focus-within,.family-tree-canvas .react-flow__node.family-tree-person-node:hover{z-index:30}button.family-tree-person{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:1.125rem 1.125rem 1.125rem .3125rem;border:1px solid color-mix(in srgb,var(--node-tone) 72%,var(--color-border));background:linear-gradient(158deg,var(--node-surface-top) 0,var(--node-surface-bottom) 100%);padding:.625rem .75rem;box-shadow:0 0 0 5px var(--node-halo),0 0 24px color-mix(in srgb,var(--node-tone) 32%,transparent),inset 0 1px 0 color-mix(in srgb,var(--node-tone) 22%,transparent);cursor:grab;backdrop-filter:blur(10px);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.family-tree-person-node:focus-within button.family-tree-person,.family-tree-person-node:hover button.family-tree-person{border-color:color-mix(in srgb,var(--node-tone) 88%,var(--color-border));box-shadow:0 0 0 5px var(--node-halo),0 0 36px color-mix(in srgb,var(--node-tone) 42%,transparent),inset 0 1px 0 color-mix(in srgb,var(--node-tone) 28%,transparent)}.family-tree-person-node--self button.family-tree-person{border-color:color-mix(in srgb,var(--color-brand-gold) 78%,var(--color-border))}.family-tree-person--blocked{border-style:dashed;background:var(--color-background-recessed);text-align:center;padding:.75rem}.family-tree-person__eyebrow{display:block;margin-bottom:.25rem;font-family:var(--type-family-tree-card-meta-font-family);font-size:.5625rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent-brand)}.family-tree-person__row{display:flex;align-items:center;gap:.5rem}.family-tree-person__avatar{display:inline-flex;height:2.25rem;width:2.25rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:999px;background:linear-gradient(145deg,color-mix(in srgb,var(--node-tone) 46%,var(--color-navy-900)),color-mix(in srgb,var(--color-navy-950) 82%,var(--node-tone) 18%));box-shadow:0 0 16px color-mix(in srgb,var(--node-tone) 28%,transparent);font-family:var(--type-family-tree-card-font-family);font-size:var(--type-family-tree-card-meta-font-size);font-weight:600;color:color-mix(in srgb,var(--node-tone) 72%,var(--color-brand-ink))}.family-tree-person__avatar--subject{box-shadow:0 0 0 2px color-mix(in srgb,var(--color-brand-gold) 52%,var(--color-border)),0 0 16px color-mix(in srgb,var(--color-brand-gold) 28%,transparent)}.family-tree-person__avatar--atlas{box-shadow:0 0 0 2px color-mix(in srgb,var(--color-brand-gold) 72%,var(--color-border)),0 0 0 4px color-mix(in srgb,var(--brass-glow) 28%,transparent),0 0 20px color-mix(in srgb,var(--color-brand-gold) 36%,transparent);color:var(--color-brand-ink)}.family-tree-person-node--self .family-tree-person__avatar--atlas{box-shadow:0 0 0 2px color-mix(in srgb,var(--color-brand-gold) 82%,var(--color-border)),0 0 0 4px color-mix(in srgb,var(--brass-glow) 34%,transparent),0 0 24px color-mix(in srgb,var(--color-brand-gold) 42%,transparent)}.family-tree-person-orbit{position:absolute;top:-.45rem;right:-.45rem;z-index:40;display:inline-flex;flex-direction:row;align-items:center;gap:.25rem;opacity:0;pointer-events:none;transition:opacity .15s ease}.family-tree-person-node:focus-within .family-tree-person-orbit,.family-tree-person-node:hover .family-tree-person-orbit{opacity:1;pointer-events:auto}.family-tree-person-orbit__btn{display:inline-flex;height:1.375rem;width:1.375rem;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--color-border);background:color-mix(in srgb,var(--color-background) 92%,transparent);color:var(--color-foreground-muted);font-size:.625rem;line-height:1;cursor:pointer;box-shadow:var(--shadow-elevation-1);backdrop-filter:blur(6px);transition:border-color .15s ease,color .15s ease,background-color .15s ease}.family-tree-person-orbit__btn:hover{border-color:color-mix(in srgb,var(--color-brand-gold) 45%,var(--color-border));color:var(--color-accent)}.family-tree-person-orbit__btn--delete{border-color:color-mix(in srgb,var(--color-error) 45%,var(--color-border));color:var(--color-error)}.family-tree-person-orbit__btn--delete:hover{background:color-mix(in srgb,var(--color-error) 12%,var(--color-background-elevated))}.family-tree-canvas .react-flow__node.family-tree-satellite-node>div .family-tree-person{border-style:dashed}.family-tree-canvas .react-flow__edge path{stroke-linejoin:round}.family-tree-canvas .react-flow__edge.edge-spouse path{stroke:var(--color-accent);stroke-width:2.6}.family-tree-canvas .react-flow__edge.edge-parent path{stroke:var(--color-accent-brand);stroke-width:2.2}.family-tree-canvas .react-flow__edge.edge-sibling path{stroke:var(--color-accent-brand);stroke-width:1.8;stroke-dasharray:7 7}.family-tree-canvas .react-flow__edge.edge-friend path{stroke:color-mix(in srgb,var(--color-accent-joint) 55%,var(--color-foreground-muted));stroke-width:1.8;stroke-dasharray:1.5 6;stroke-linecap:round}.family-tree-canvas .react-flow__edge.edge-colleague path{stroke:color-mix(in srgb,var(--color-accent-brand) 50%,var(--color-foreground-muted));stroke-width:1.8;stroke-dasharray:11 5 2 5}.family-tree-canvas .react-flow__edge.edge-potential-match path{stroke:color-mix(in srgb,var(--color-accent) 45%,var(--color-foreground-muted));stroke-width:2;stroke-dasharray:8 6;animation:family-tree-bond-flow 2.4s linear infinite}.family-tree-canvas .react-flow__edge.edge-inlaw path{stroke:color-mix(in srgb,var(--color-accent) 35%,var(--color-foreground-muted));stroke-width:1.8;stroke-dasharray:5 6}@keyframes family-tree-bond-flow{to{stroke-dashoffset:-28}}.family-tree-canvas-skeleton{background-color:var(--color-background-recessed);background-image:radial-gradient(color-mix(in srgb,var(--color-foreground-muted) 28%,transparent) 1px,transparent 1px);background-size:16px 16px}.family-tree-canvas .react-flow{position:relative;z-index:1;width:100%;height:100%;background:transparent!important;background-color:transparent!important;--xy-background-color:transparent;--xy-background-color-default:transparent;--xy-background-color-props:transparent;--xy-controls-button-background-color-default:var(--color-background-elevated);--xy-controls-button-background-color-hover-default:var(--color-background-recessed);--xy-controls-button-color-default:var(--color-foreground-muted);--xy-controls-button-color-hover-default:var(--color-accent);--xy-controls-button-border-color-default:var(--color-border);--xy-controls-box-shadow-default:var(--shadow-elevation-1)}.family-tree-canvas .react-flow.dark,.family-tree-canvas .react-flow.light{background:transparent!important;background-color:transparent!important;--xy-background-color:transparent;--xy-background-color-default:transparent;--xy-background-color-props:transparent}.family-tree-canvas .react-flow__background{display:none}.family-tree-canvas .react-flow__controls{z-index:10;border:1px solid var(--color-border);border-radius:.375rem;overflow:hidden;box-shadow:var(--shadow-elevation-1);background:var(--color-background-elevated)}@media (max-width:1023px){.app-workspace__main:has(.family-tree-surface){display:flex;flex-direction:column;overflow:hidden;padding:0}.app-workspace__main:has(.family-tree-surface)>main{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.app-workspace__main:has(.family-tree-surface) .family-tree-surface{display:flex;flex:1;flex-direction:column;gap:0;min-height:0}.app-workspace__main:has(.family-tree-surface) .family-tree-dashboard{flex:1;min-height:0}.app-workspace__main:has(.family-tree-surface) .family-tree-canvas{flex:1 1 auto;height:auto;min-height:0;border-radius:0}.family-tree-canvas .react-flow__panel.react-flow__controls{top:auto;bottom:0;margin:12px}}.family-tree-canvas .react-flow__controls-button{width:28px;height:28px;color:var(--color-foreground-muted);background:var(--color-background-elevated);border-bottom-color:var(--color-border);transition:background-color .15s ease,color .15s ease}.family-tree-canvas .react-flow__controls-button:hover{background:color-mix(in srgb,var(--color-accent) 14%,var(--color-background-elevated));color:var(--color-accent)}.family-tree-canvas .react-flow__controls-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-brand-gold-focus)}.family-tree-canvas .react-flow__controls-button:disabled{opacity:.45;cursor:not-allowed}.family-tree-canvas .react-flow__controls-button svg{max-width:14px;max-height:14px;fill:currentColor}.family-tree-canvas .react-flow__controls-button.family-tree-reorganize-btn svg{display:block}.family-tree-canvas .react-flow__edges,.family-tree-canvas .react-flow__nodes,.family-tree-canvas .react-flow__pane,.family-tree-canvas .react-flow__renderer,.family-tree-canvas .react-flow__viewport{overflow:visible;background:transparent!important}.family-tree-canvas .react-flow__node.family-tree-satellite-node>div{border-style:none}