.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-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);font-weight:600}.family-tree-canvas .family-tree-person__name{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);color:var(--color-brand-ink);font-weight:500}.family-tree-canvas .family-tree-person__meta{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);color:color-mix(in srgb, var(--node-tone) 55%, var(--color-brand-ink-soft))}.family-tree-canvas .family-tree-person__badge{font-family:var(--type-family-tree-card-meta-font-family);font-size:.6875rem;line-height:var(--type-family-tree-card-meta-line-height)}.family-tree-canvas--empty{background:0 0}.family-tree-empty-state{text-align:center;max-width:22rem}.family-tree-empty-state__eyebrow{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);margin:0 0 .5rem}.family-tree-empty-state__title{font-family:var(--type-family-tree-title-font-family);color:var(--color-foreground);margin:0 0 .75rem;font-size:clamp(1.5rem,2.6vw,1.6875rem);font-weight:400;line-height:1.15}.family-tree-empty-state__copy{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);color:var(--color-foreground-muted);margin:0 0 1.25rem}.family-tree-empty-state__cta{min-height:2.5rem;font-family:var(--type-family-tree-font-family);font-size:var(--type-family-tree-card-meta-font-size);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:0 1.25rem;font-weight:600;display:inline-flex}.family-tree-canvas{border:1px solid color-mix(in srgb, var(--color-brand-gold) 28%, var(--color-border));isolation:isolate;min-height:14rem;color:var(--color-brand-ink);border-radius:1.25rem;overflow:hidden}.family-tree-canvas:not(.family-tree-canvas--empty){height:min(720px,78vh)}.family-tree-canvas__backdrop{pointer-events:none;z-index:0;border-radius:inherit;background-color:var(--color-celestial-base);position:absolute;inset:0;overflow:hidden}.family-tree-canvas__nebula{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%);position:absolute;inset:0}.family-tree-canvas__starfield{pointer-events:none;z-index:3;opacity:1;width:100%;height:100%;position:absolute;inset:0}@keyframes family-tree-orrery-orbit{to{transform:rotate(360deg)}}@keyframes family-tree-orrery-orbit-rev{to{transform:rotate(-360deg)}}@keyframes family-tree-orrery-surface{0%{transform:translate(0,0)}to{transform:translate(-50%)}}@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;z-index:2;aspect-ratio:1;opacity:.58;width:min(760px,118%);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.family-tree-canvas__orrery-inner{width:100%;height:100%;position:relative;container-type:inline-size}.family-tree-canvas__orrery-glow{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;border-radius:50%;position:absolute;inset:0}.family-tree-canvas__orrery-orbit-wrap{width:var(--orrery-orbit-size,33%);aspect-ratio:1;height:auto;transform:translate(-50%, -50%) rotate(var(--orrery-start-angle,0deg));position:absolute;top:50%;left:50%}.family-tree-canvas__orrery-orbit{animation:family-tree-orrery-orbit var(--orbit-duration,48s) linear infinite;transform-origin:50%;position:absolute;inset:0}.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{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:50%;position:relative}.family-tree-canvas__orrery-orbit--rev .family-tree-canvas__orrery-planet-counter{animation-name:family-tree-orrery-orbit}.family-tree-canvas__orrery-planet-upright{transform:rotate(calc(-1 * var(--orrery-start-angle,0deg)));transform-origin:50%;position:absolute;inset:0}.family-tree-canvas__orrery-planet-orb{display:block;width:100%!important;height:100%!important}.family-tree-canvas__orrery-sun{z-index:3;aspect-ratio:1;opacity:.85;width:17%;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);border-radius:50%;position:absolute;top:50%;left:50%;overflow:visible;transform:translate(-50%,-50%)}.family-tree-canvas__orrery-sun:before{content:"";background:radial-gradient(circle, color-mix(in srgb, var(--color-marketing-accent-bright) 38%, transparent), transparent 62%);pointer-events:none;z-index:0;border-radius:50%;animation:4s ease-in-out infinite family-tree-orrery-glow;position:absolute;inset:-75%}.family-tree-canvas__orrery-sun-glow{background:radial-gradient(circle, color-mix(in srgb, var(--color-marketing-accent-bright) 35%, transparent), transparent 60%);pointer-events:none;z-index:1;border-radius:50%;animation:4s ease-in-out infinite family-tree-orrery-glow;position:absolute;inset:-35%}.family-tree-canvas__orrery-sun-orb{z-index:2;display:block;position:relative;width:100%!important;height:100%!important}.family-tree-canvas__orrery .panchang-planet{aspect-ratio:1;box-sizing:border-box;border-radius:50%;flex:none;display:block;position:relative;overflow:hidden}.family-tree-canvas__orrery .panchang-planet__body,.family-tree-canvas__orrery .panchang-planet__shade{border-radius:50%;position:absolute;inset:0}.family-tree-canvas__orrery .panchang-planet__body{z-index:1;overflow:hidden}.family-tree-canvas__orrery .panchang-planet__surface{z-index:2;width:200%;height:100%;animation:family-tree-orrery-surface var(--planet-axis-duration,13s) linear infinite;background-repeat:repeat-x;background-size:50% 100%;border-radius:0;position:absolute;top:0;left:0}.family-tree-canvas__orrery .panchang-planet__shade{z-index:3;pointer-events:none;background:radial-gradient(circle at 33% 27%,#fff6,#0000 44%),radial-gradient(circle at 73% 79%,#0000008c,#0000 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{pointer-events:none;z-index:4;border:1.5px solid #e0cea0b3;border-radius:50%;width:190%;height:56%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(20deg);box-shadow:0 0 7px #e0cea04d}@media (prefers-reduced-motion:reduce){.family-tree-canvas__orrery-orbit,.family-tree-canvas__orrery-planet-counter,.family-tree-canvas__orrery .panchang-planet__surface,.family-tree-canvas__orrery-sun-glow,.family-tree-canvas__orrery-sun:before{animation:none!important}}.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 .panchang-planet__surface,.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=parent],.family-tree-person-node[data-relation-kind=child]{--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=friend],.family-tree-person-node[data-relation-kind=family_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:hover,.family-tree-canvas .react-flow__node.family-tree-person-node:focus-within{z-index:30}button.family-tree-person{appearance:none;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%);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;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:1.125rem 1.125rem 1.125rem .3125rem;padding:.625rem .75rem;transition:border-color .18s,box-shadow .18s,transform .18s;position:relative}.family-tree-person-node:hover button.family-tree-person,.family-tree-person-node:focus-within 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{background:var(--color-background-recessed);text-align:center;border-style:dashed;padding:.75rem}.family-tree-person__eyebrow{font-family:var(--type-family-tree-card-meta-font-family);letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent-brand);margin-bottom:.25rem;font-size:.5625rem;display:block}.family-tree-person__row{align-items:center;gap:.5rem;display:flex}.family-tree-person__avatar{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%));width:2.25rem;height:2.25rem;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);color:color-mix(in srgb, var(--node-tone) 72%, var(--color-brand-ink));border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.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{z-index:40;opacity:0;pointer-events:none;flex-direction:row;align-items:center;gap:.25rem;transition:opacity .15s;display:inline-flex;position:absolute;top:-.45rem;right:-.45rem}.family-tree-person-node:hover .family-tree-person-orbit,.family-tree-person-node:focus-within .family-tree-person-orbit{opacity:1;pointer-events:auto}.family-tree-person-orbit__btn{border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-background) 92%, transparent);width:1.375rem;height:1.375rem;color:var(--color-foreground-muted);cursor:pointer;box-shadow:var(--shadow-elevation-1);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;justify-content:center;align-items:center;font-size:.625rem;line-height:1;transition:border-color .15s,color .15s,background-color .15s;display:inline-flex}.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.6px}.family-tree-canvas .react-flow__edge.edge-parent path{stroke:var(--color-accent-brand);stroke-width:2.2px}.family-tree-canvas .react-flow__edge.edge-sibling path{stroke:var(--color-accent-brand);stroke-width:1.8px;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.8px;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.8px;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:2px;stroke-dasharray:8 6;animation:2.4s linear infinite family-tree-bond-flow}.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.8px;stroke-dasharray:5 6}@keyframes family-tree-bond-flow{to{stroke-dashoffset:-28px}}.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{z-index:1;--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);width:100%;height:100%;position:relative;background:0 0!important}.family-tree-canvas .react-flow.dark,.family-tree-canvas .react-flow.light{--xy-background-color:transparent;--xy-background-color-default:transparent;--xy-background-color-props:transparent;background:0 0!important}.family-tree-canvas .react-flow__background{display:none}.family-tree-canvas .react-flow__controls{z-index:10;border:1px solid var(--color-border);box-shadow:var(--shadow-elevation-1);background:var(--color-background-elevated);border-radius:.375rem;overflow:hidden}@media (max-width:1023px){.app-workspace__main:has(.family-tree-surface){flex-direction:column;padding:0;display:flex;overflow:hidden}.app-workspace__main:has(.family-tree-surface)>main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.app-workspace__main:has(.family-tree-surface) .family-tree-surface{flex-direction:column;flex:1;gap:0;min-height:0;display:flex}.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{border-radius:0;flex:auto;height:auto;min-height:0}.family-tree-canvas .react-flow__panel.react-flow__controls{margin:12px;top:auto;bottom:0}}.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,color .15s}.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{box-shadow:0 0 0 3px var(--color-brand-gold-focus);outline:none}.family-tree-canvas .react-flow__controls-button:disabled{opacity:.45;cursor:not-allowed}.family-tree-canvas .react-flow__controls-button svg{fill:currentColor;max-width:14px;max-height:14px}.family-tree-canvas .react-flow__controls-button.family-tree-reorganize-btn svg{display:block}.family-tree-canvas .react-flow__renderer,.family-tree-canvas .react-flow__pane,.family-tree-canvas .react-flow__viewport,.family-tree-canvas .react-flow__nodes,.family-tree-canvas .react-flow__edges{overflow:visible;background:0 0!important}.family-tree-canvas .react-flow__node.family-tree-satellite-node>div{border-style:none}