:root{color:#1f2937;font-synthesis:none;text-rendering:optimizelegibility;background:#f6f8f5;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.family-grid .person-card{box-sizing:border-box;background:#fff;border:1px solid #dfe7dd;border-radius:16px;flex-direction:column;width:100%;min-width:0;max-width:100%;padding:16px;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex;overflow:hidden;box-shadow:0 6px 18px #1f29370b}.family-grid .person-card:hover{border-color:#bdd0bc;transform:translateY(-2px);box-shadow:0 12px 24px #1f293714}.family-grid .person-card-main{width:100%;min-width:0;color:inherit;text-align:left;cursor:pointer;box-sizing:border-box;background:0 0;border:0;flex-direction:row;align-items:center;gap:14px;margin:0;padding:0;display:flex}.family-grid .person-card-main:disabled{cursor:default}.family-grid .person-avatar{color:#285943;background:#e8f0e9;border-radius:50%;flex:0 0 64px;justify-content:center;align-items:center;width:64px;min-width:64px;max-width:64px;height:64px;min-height:64px;max-height:64px;font-size:18px;font-weight:800;line-height:1;display:flex;overflow:hidden}.family-grid .person-avatar img{object-fit:cover;object-position:center;border-radius:50%;width:64px;min-width:64px;max-width:64px;height:64px;min-height:64px;max-height:64px;display:block}.family-grid .person-avatar span{justify-content:center;align-items:center;width:100%;height:100%;line-height:1;display:flex}.family-grid .person-info{flex:auto;width:0;min-width:0;max-width:100%;overflow:hidden}.family-grid .person-info h3{color:#1f2937;text-overflow:ellipsis;white-space:nowrap;width:100%;min-width:0;margin:0;font-size:16px;font-weight:800;line-height:1.3;overflow:hidden}.family-grid .person-info span{color:#667085;text-overflow:ellipsis;white-space:nowrap;text-transform:capitalize;margin-top:5px;font-size:13px;line-height:1.3;display:block;overflow:hidden}.family-grid .person-info small{color:#35704e;margin-top:6px;font-size:11px;font-weight:800;display:inline-block}.family-grid .person-card-actions{box-sizing:border-box;border-top:1px solid #edf1eb;align-items:center;gap:8px;width:100%;margin-top:14px;padding-top:12px;display:flex}.family-grid .person-card-actions button{white-space:nowrap;flex:1 1 0;min-width:0}.family-grid .small-button{border-radius:9px;min-height:34px;padding:7px 10px;font-size:12px;font-weight:700}.family-grid .secondary-button{color:#285943;background:#fff;border:1px solid #cfd9ce}.family-grid .secondary-button:hover{background:#f5f8f4}.family-grid .danger-button{color:#9b3b3b;cursor:pointer;background:#fff7f7;border:1px solid #e3caca;border-radius:9px}.family-grid .danger-button:hover{background:#fff0f0}.family-grid .person-card,.family-grid .person-card *,.family-grid .person-card-main{box-sizing:border-box}.family-grid .person-card-main>*{min-width:0}@media (width<=900px){.family-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}}@media (width<=600px){.family-grid{grid-template-columns:1fr;gap:12px}.family-grid .person-card{padding:14px}.family-grid .person-avatar{flex-basis:58px;width:58px;min-width:58px;max-width:58px;height:58px;min-height:58px;max-height:58px}.family-grid .person-avatar img{width:58px;min-width:58px;max-width:58px;height:58px;min-height:58px;max-height:58px}.family-grid .person-info h3{font-size:15px}}@media (width<=380px){.family-grid .person-card{padding:12px}.family-grid .person-card-main{gap:10px}.family-grid .person-avatar{flex-basis:52px;width:52px;min-width:52px;max-width:52px;height:52px;min-height:52px;max-height:52px}.family-grid .person-avatar img{width:52px;min-width:52px;max-width:52px;height:52px;min-height:52px;max-height:52px}}.react-flow{direction:ltr}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1px;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background:#1a192b;border:1px solid #fff;border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-top{top:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{top:50%;right:-4px;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{background:#ffffff80;margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{color:#222;text-align:center;background-color:#fff;border:1px solid #1a192b;border-radius:3px;width:150px;padding:10px;font-size:12px}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted #0059dccc}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{box-sizing:content-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fefefe;border:none;border-bottom:1px solid #eee;justify-content:center;align-items:center;width:16px;height:16px;padding:5px;display:flex}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:#3367d9;border:1px solid #fff;border-radius:1px;width:4px;height:4px;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border:0 solid #3367d9}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}#root{min-height:100vh}*{box-sizing:border-box}html,body{min-width:320px;min-height:100%;margin:0}body{color:#1f2937;background:#f6f8f5;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.app{color:#1f2937;background:#f6f8f5;min-height:100vh}.loading-screen,.auth-screen{justify-content:center;align-items:center;min-height:100vh;display:flex}.loader-card{text-align:center;color:#667085}.logo-mark,.brand-mark,.small-logo{color:#fff;letter-spacing:-.04em;background:#285943;justify-content:center;align-items:center;font-weight:800;display:flex}.logo-mark{border-radius:16px;width:52px;height:52px;margin:0 auto 16px}.auth-container{width:min(440px,100% - 32px)}.brand{text-align:center;margin-bottom:28px}.brand-mark{border-radius:20px;width:64px;height:64px;margin:0 auto 18px;font-size:20px}.brand h1{letter-spacing:-.04em;margin:0;font-size:32px}.brand p{color:#667085;margin:8px 0 0}.auth-card{background:#fff;border:1px solid #e4e9e3;border-radius:20px;padding:24px;box-shadow:0 16px 50px #1f293714}.auth-tabs{background:#f2f5f1;border-radius:12px;grid-template-columns:1fr 1fr;margin-bottom:24px;padding:4px;display:grid}.auth-tabs button{color:#667085;cursor:pointer;background:0 0;border:0;border-radius:9px;padding:10px}.auth-tabs button.active{color:#285943;background:#fff;font-weight:700;box-shadow:0 2px 8px #0000000f}.auth-card form{flex-direction:column;gap:16px;display:flex}.auth-card label{flex-direction:column;gap:7px;font-size:14px;font-weight:600;display:flex}.auth-card input{color:#1f2937;background:#fff;border:1px solid #d7ded6;border-radius:10px;outline:none;width:100%;padding:12px 13px}.auth-card input:focus{border-color:#4b8a69;box-shadow:0 0 0 3px #4b8a691f}.text-button{color:#285943;background:0 0;width:100%;margin-top:12px;padding:0;font-size:13px;font-weight:700;display:block}.text-button:hover{color:#4b8a69;text-decoration:underline}.primary-button,.secondary-button,.logout-button,.back-button{cursor:pointer;border:0}.primary-button{color:#fff;background:#285943;border-radius:10px;padding:12px 18px;font-weight:700;transition:background .15s,transform .15s}.primary-button:hover{background:#214b38}.primary-button:active{transform:translateY(1px)}.primary-button:disabled{opacity:.6;cursor:wait}.secondary-button{color:#285943;background:#fff;border:1px solid #cfd9ce;border-radius:10px;padding:12px 18px;font-weight:700}.secondary-button:hover{background:#f5f8f4;border-color:#aebfae}.logout-button{color:#667085;background:0 0;padding:8px 10px}.logout-button:hover{color:#285943}.error-message{color:#b42318;background:#fff1f0;border:1px solid #f5c2c0;border-radius:9px;padding:10px 12px;font-size:14px}.topbar{z-index:10;background:#fff;border-bottom:1px solid #e5e9e4;justify-content:space-between;align-items:center;height:68px;padding:0 28px;display:flex;position:relative}.topbar-brand{align-items:center;gap:10px;font-weight:800;display:flex}.small-logo{border-radius:10px;width:36px;height:36px;font-size:12px}.user-area{align-items:center;gap:14px;font-size:14px;display:flex}.family-selection{width:min(1100px,100% - 40px);margin:0 auto;padding:56px 0}.page-heading{margin-bottom:30px}.eyebrow{color:#4b8a69;text-transform:uppercase;letter-spacing:.12em;margin:0 0 6px;font-size:12px;font-weight:800}.page-heading h1{letter-spacing:-.045em;margin:0;font-size:38px}.page-heading p:last-child{color:#667085;margin-top:10px}.page-error{margin-bottom:20px}.family-card{text-align:left;cursor:pointer;background:#fff;border:1px solid #dfe6de;border-radius:18px;align-items:flex-start;gap:16px;min-height:150px;padding:22px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.family-card:hover{border-color:#c7d5c6;transform:translateY(-2px);box-shadow:0 12px 30px #1f293714}.family-card:disabled{cursor:wait;opacity:.7}.family-card-icon{background:#edf5ed;border-radius:14px;flex:0 0 48px;justify-content:center;align-items:center;width:48px;height:48px;font-size:23px;display:flex}.family-card h2{margin:2px 0 5px;font-size:19px}.family-card p{color:#667085;margin:0 0 12px;font-size:14px}.family-card span{color:#4b8a69;text-transform:capitalize;font-size:12px;font-weight:700;display:inline-block}.create-card{background:0 0;border-style:dashed}.create-card:hover{background:#fff}.create-card .family-card-icon{color:#4b8a69;background:#fff;border:1px dashed #b8c7b7}.empty-state{text-align:center;background:#fff;border:1px solid #e1e8df;border-radius:20px;padding:60px 30px}.empty-icon{margin-bottom:16px;font-size:46px}.empty-state h2{margin:0}.empty-state p{color:#667085;margin:10px 0 24px}.empty-actions{justify-content:center;gap:12px;display:flex}.tree-app{background:#f6f8f5;min-height:100vh}.tree-page{max-width:1800px;margin:0 auto;padding:28px}.tree-toolbar{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px;display:flex}.tree-toolbar h1{letter-spacing:-.04em;margin:14px 0 4px;font-size:32px}.tree-toolbar p{color:#667085;margin:0;font-size:14px}.back-button{color:#4b8a69;background:0 0;padding:0;font-weight:700}.back-button:hover{color:#285943}.tree-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.tree-export-select{color:#285943;min-height:42px;font:inherit;background:#fff;border:1px solid #dfe6de;border-radius:10px;padding:0 34px 0 12px;font-weight:700}.tree-canvas{background:#fbfcfa;border:1px solid #dfe6de;border-radius:20px;height:calc(100vh - 190px);min-height:520px;overflow:hidden;box-shadow:0 8px 30px #1f29370a}.flow-wrapper{width:100%;height:100%;position:relative;overflow:hidden}.tree-exporting .tree-node-actions,.tree-exporting .react-flow__controls,.tree-exporting .react-flow__minimap{display:none}.react-flow,.react-flow__background{background:#fbfcfa}.react-flow__controls{border:1px solid #dfe6de;border-radius:10px;overflow:hidden;box-shadow:0 5px 16px #1f293714}.react-flow__controls-button{color:#285943;background:#fff;border-bottom:1px solid #e5e9e4;width:34px;height:34px}.react-flow__controls-button:hover{background:#f5f8f4}.react-flow__minimap{background:#fff;border:1px solid #dfe6de;border-radius:12px;overflow:hidden;box-shadow:0 5px 16px #1f293714}.react-flow__edge-textbg{fill:#fbfcfa}.react-flow__edge-text{font-size:12px;font-weight:600}.react-flow__edge.parent-edge path{stroke:#4b8a69;stroke-width:2.5px}.react-flow__edge.spouse-edge path{stroke:#c38b4a;stroke-width:2.5px}.family-tree-node{box-sizing:border-box;background:#fff;border:1px solid #dfe6de;border-radius:16px;align-items:center;gap:12px;width:210px;height:128px;min-height:94px;padding:14px;transition:transform .15s,border-color .15s,box-shadow .15s;display:flex;box-shadow:0 8px 22px #1f293714}.spouse-handle{opacity:0}.family-tree-node:hover{border-color:#aebfae;transform:translateY(-2px);box-shadow:0 12px 28px #1f29371f}.viewer-node{border-color:#4b8a69;box-shadow:0 0 0 3px #4b8a6924,0 8px 22px #1f293714}.tree-node-avatar{color:#285943;background:#e7f0e7;border-radius:50%;flex:0 0 50px;justify-content:center;align-items:center;width:50px;height:50px;font-size:15px;font-weight:800;display:flex}.tree-node-content{min-width:0}.tree-node-actions{gap:6px;margin-top:8px;display:flex}.tree-node-actions button{color:#285943;background:#f8faf7;border:1px solid #dfe6de;border-radius:6px;padding:3px 7px;font-size:11px;font-weight:700}.tree-node-actions button:last-child{color:#a33a3a}.tree-node-name{color:#1f2937;font-size:15px;font-weight:800;line-height:1.25}.tree-node-gender{color:#667085;text-transform:capitalize;margin-top:5px;font-size:12px}.tree-node-you{color:#285943;text-transform:uppercase;background:#edf5ed;border-radius:5px;margin-top:7px;padding:3px 7px;font-size:10px;font-weight:800;display:inline-block}.tree-handle{background:#4b8a69;border:2px solid #fff;width:8px;height:8px}.tree-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;min-height:400px;display:flex}.tree-empty h2{margin:0}.tree-empty p{color:#667085}@media (width<=900px){.tree-page{padding:20px}.tree-toolbar{flex-direction:column;align-items:stretch}.tree-actions{width:100%}.tree-actions button{flex:1}.tree-canvas{height:calc(100vh - 250px);min-height:500px}}@media (width<=600px){.topbar{padding:0 16px}.user-area>span{display:none}.family-selection{width:min(100% - 24px,1100px);padding:34px 0}.page-heading h1{font-size:30px}.empty-actions{flex-direction:column}.tree-page{padding:16px}.tree-toolbar h1{font-size:28px}.tree-actions{flex-direction:column}.tree-actions button{width:100%}.tree-canvas{border-radius:16px;height:calc(100vh - 290px);min-height:460px}.family-tree-node{width:190px}}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#14231a6b;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-header{justify-content:space-between;gap:20px;margin-bottom:24px;display:flex}.modal-header p:last-child{color:#667085;margin:7px 0 0;font-size:14px}.modal-close{color:#667085;cursor:pointer;background:#f2f5f1;border:0;border-radius:10px;flex:0 0 36px;width:36px;height:36px;font-size:25px;line-height:1}.person-form input,.person-form select{color:#1f2937;background:#fff;border:1px solid #d7ded6;border-radius:10px;outline:none;width:100%;min-height:44px;padding:10px 12px}.person-form input:focus,.person-form select:focus{border-color:#4b8a69;box-shadow:0 0 0 3px #4b8a691f}.form-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.modal-actions{border-top:1px solid #edf0ec;justify-content:flex-end;gap:10px;margin-top:8px;padding-top:18px;display:flex}@media (width<=600px){.modal-overlay{align-items:flex-end;padding:0}.modal-card{border-radius:22px 22px 0 0;width:100%;max-height:92vh;padding:22px 18px}.form-row{grid-template-columns:1fr}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}.tree-section{margin:42px 0 18px}.tree-section h2{color:#1f2937;letter-spacing:-.03em;margin:2px 0 5px;font-size:25px}.tree-section>p{color:#667085;margin:0;font-size:14px}.tree-section-header{border-bottom:1px solid #dfe7dd;justify-content:space-between;align-items:flex-end;gap:20px;padding-bottom:14px;display:flex}.section-kicker{letter-spacing:.12em;text-transform:uppercase;font-weight:800;color:#4b8a69!important;margin:0!important;font-size:11px!important}.section-count{color:#285943;background:#f1f7f0;border:1px solid #d9e5d8;border-radius:999px;flex:none;padding:8px 11px;font-size:12px;font-weight:800}.relationship-list{flex-direction:column;gap:10px;max-width:1040px;margin-top:16px;display:flex}.relationship-card{background:#fff;border:1px solid #dfe6de;border-radius:14px;align-items:center;gap:12px;min-height:58px;padding:10px 14px;display:flex;box-shadow:0 5px 16px #1f293709}.relationship-card strong{color:#1f2937}.relationship-card span{color:#4b8a69;text-transform:capitalize;font-size:13px;font-weight:700}.relationship-type{letter-spacing:.06em;text-align:center;border-radius:6px;min-width:60px;padding:5px 7px;text-transform:uppercase!important;font-size:10px!important}.relationship-type.parent{background:#edf6ef;color:#35704e!important}.relationship-type.spouse{background:#fff5e8;color:#9a6728!important}.relationship-verb{color:#98a2b3!important;font-size:12px!important;font-weight:600!important}.empty-section{color:#667085;background:#fafcf9;border:1px dashed #ccd9ca;border-radius:14px;max-width:1040px;padding:20px}.empty-section p{margin:0}.modal-card{background:#fff;border:1px solid #dfe6de;border-radius:20px;width:min(720px,100%);max-height:calc(100vh - 48px);padding:24px;overflow-y:auto;box-shadow:0 24px 80px #1f293733}.modal-header h2{letter-spacing:-.035em;margin:0;font-size:26px}.modal-close{color:#667085;cursor:pointer;background:#f2f5f1;border:0;border-radius:10px;width:36px;height:36px;font-size:24px;line-height:1}.modal-close:hover{color:#285943;background:#e8eee7}.person-form{flex-direction:column;gap:18px;display:flex}.form-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.person-form label{flex-direction:column;gap:7px;font-size:14px;font-weight:600;display:flex}.person-form input,.person-form select,.person-form textarea{color:#1f2937;background:#fff;border:1px solid #d7ded6;border-radius:10px;outline:none;width:100%;padding:11px 12px}.person-form textarea{resize:vertical;min-height:100px}.person-form input:focus,.person-form select:focus,.person-form textarea:focus{border-color:#4b8a69;box-shadow:0 0 0 3px #4b8a691f}.checkbox-label{cursor:pointer;align-items:center;flex-direction:row!important;gap:9px!important}.checkbox-label input{width:auto}.modal-actions{justify-content:flex-end;gap:10px;padding-top:6px;display:flex}@media (width<=600px){.modal-backdrop{align-items:flex-end;padding:12px}.modal-card{border-radius:18px;max-height:calc(100vh - 24px);padding:20px}.form-grid{grid-template-columns:1fr}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}.review-button{position:relative}.review-list{flex-direction:column;gap:14px;display:flex}.review-item{background:#fbfcfb;border:1px solid #dfe6de;border-radius:14px;padding:16px}.review-item-header{justify-content:space-between;gap:16px;display:flex}.review-item-header div{flex-direction:column;gap:4px;display:flex}.review-item-header span,.review-item-header small{color:#667085;font-size:13px}.review-diff{grid-template-columns:1fr 1fr;gap:10px;margin:14px 0;display:grid}.review-diff>div{background:#fff;border:1px solid #e4e9e3;border-radius:10px;padding:10px}.review-diff small{color:#667085}.review-diff p{margin:5px 0 0}.review-warning{color:#7b4b16;background:#fff8e8;border:1px solid #f0dfb7;border-radius:10px;margin:14px 0;padding:11px;font-size:14px}.review-actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.mapping-picker{color:#475467;flex-direction:column;gap:7px;margin-top:14px;font-size:13px;font-weight:700;display:flex}.mapping-picker select{color:#1f2937;min-height:42px;font:inherit;background:#fff;border:1px solid #d7ded6;border-radius:9px;padding:8px 10px;font-weight:500}.compact{padding:20px}@media (width<=600px){.person-card{align-items:flex-start}.person-card-actions{flex-direction:column}.review-diff{grid-template-columns:1fr}.tree-section-header,.relationship-card{align-items:flex-start}.relationship-delete{text-align:left;width:100%;margin:2px 0 0}}.toast-message{z-index:120;color:#285943;background:#eef7f0;border:1px solid #cfe1d2;border-radius:12px;align-items:center;gap:12px;max-width:min(420px,100vw - 48px);padding:12px 14px;font-size:14px;font-weight:600;display:flex;position:fixed;top:78px;right:24px;box-shadow:0 12px 30px #1f29371f}.toast-message button{color:inherit;cursor:pointer;background:0 0;border:0;font-size:20px;line-height:1}.review-tabs{background:#f2f5f1;border-radius:12px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:18px;padding:4px;display:grid}.review-tabs button{color:#667085;cursor:pointer;background:0 0;border:0;border-radius:9px;padding:10px;font-weight:600}.review-tabs button.active{color:#285943;background:#fff;box-shadow:0 2px 8px #0000000f}.review-request-message{color:#4b5563;background:#fff;border:1px solid #e4e9e3;border-radius:10px;margin:14px 0 0;padding:11px;font-size:14px}.page-actions{align-items:center;gap:10px;display:flex}.modal-backdrop{z-index:1000;background:#0f172a73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.family-modal{width:min(620px,100%);max-height:85vh;overflow:auto}.modal-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.modal-header h2{margin:4px 0 0}.modal-close{cursor:pointer;background:0 0;border:0;padding:2px 6px;font-size:28px;line-height:1}.modal-actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.optional{opacity:.6;font-weight:400}.success-message{color:#166534;background:#ecfdf5;border-radius:8px;margin:12px 0;padding:10px 12px}.search-row{gap:10px;display:flex}.search-row input{flex:1}.family-search-results{gap:10px;margin-top:18px;display:grid}.family-search-result{border:1px solid #e5e7eb;border-radius:10px;justify-content:space-between;align-items:center;gap:16px;padding:14px;display:flex}.family-search-result p{opacity:.7;margin:4px 0 0;font-size:13px}.member-badge{background:#eef2ff;border-radius:999px;padding:5px 9px;font-size:12px}.join-person-picker{background:#f7fbf6;border:1px solid #d9e5d8;border-radius:14px;margin-top:18px;padding:16px}.join-person-picker p{color:#667085;margin:6px 0 12px;font-size:13px}.join-person-picker select{color:#1f2937;background:#fff;border:1px solid #d7ded6;border-radius:10px;width:100%;min-height:44px;padding:9px 11px}@media (width<=700px){.page-heading,.page-actions{flex-direction:column;align-items:stretch}.search-row{flex-direction:column}}.relationship-card{flex-wrap:wrap;align-items:center;gap:10px;display:flex;position:relative}.relationship-delete{color:#a33b3b;cursor:pointer;background:0 0;border:0;margin-left:auto;font-weight:700}.relationship-delete:hover{text-decoration:underline}.person-avatar img,.tree-node-avatar img,.invite-avatar img{object-fit:cover;width:100%;height:100%;display:block}.profile-photo-editor{background:#fafcf9;border:1px solid #e1e8df;border-radius:14px;align-items:center;gap:18px;padding:14px;display:flex}.profile-photo-preview{color:#285943;background:#e4efe6;border-radius:50%;justify-content:center;align-items:center;width:82px;height:82px;font-size:25px;font-weight:800;display:flex;overflow:hidden}.profile-photo-preview img{object-fit:cover;width:100%;height:100%}.profile-photo-copy{flex:1}.profile-photo-copy input[type=file]{margin-top:7px}.invite-modal{width:min(980px,100vw - 28px);max-height:calc(100vh - 28px);overflow:auto}.invite-stats{flex-wrap:wrap;gap:10px;margin:14px 0;display:flex}.invite-stats span{color:#667085;background:#f2f6f1;border:1px solid #e0e8de;border-radius:999px;padding:8px 12px;font-size:13px}.invite-stats strong{color:#285943}.invite-toolbar{flex-wrap:wrap;gap:8px;margin:12px 0 16px;display:flex}.invite-toolbar button{padding:9px 12px}.invite-recipient-list{border:1px solid #e0e7de;border-radius:14px;overflow:hidden}.invite-recipient{background:#fff;border-bottom:1px solid #edf1eb;justify-content:space-between;align-items:center;gap:12px;padding:11px 14px;display:flex}.invite-recipient:last-child{border-bottom:0}.invite-recipient.selected{background:#f4faf4}.invite-check{cursor:pointer;flex:1;align-items:center;gap:12px;min-width:0;display:flex}.invite-check input{width:18px;height:18px}.invite-avatar{color:#285943;background:#e4efe6;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;font-weight:800;display:flex}.invite-check>span:last-child{flex-direction:column;min-width:0;display:flex}.invite-check small{color:#667085;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;overflow:hidden}.invite-recipient-actions{flex:none}.whatsapp-button{color:#24613f;background:#eef8f0;border:1px solid #c9dfce;border-radius:9px;align-items:center;padding:8px 11px;font-weight:700;text-decoration:none;display:inline-flex}.invite-note{color:#667085;background:#f8faf7;border-radius:11px;margin-top:14px;padding:12px 14px;font-size:13px;line-height:1.5}.muted-text{color:#98a2b3;font-size:13px}.notification-wrap{position:relative}.notification-button{cursor:pointer;background:#fff;border:1px solid #dbe4da;border-radius:10px;width:40px;height:40px;position:relative}.notification-badge{color:#fff;background:#285943;border-radius:10px;justify-content:center;align-items:center;min-width:19px;height:19px;padding:0 5px;font-size:10px;font-weight:800;display:flex;position:absolute;top:-6px;right:-5px}.notification-popover{z-index:100;background:#fff;border:1px solid #dfe6dd;border-radius:14px;width:min(370px,100vw - 28px);position:absolute;top:48px;right:0;overflow:hidden;box-shadow:0 18px 45px #1f293724}.notification-heading{border-bottom:1px solid #edf1eb;justify-content:space-between;padding:13px 15px;display:flex}.notification-heading span{color:#4b8a69;font-size:12px;font-weight:700}.notification-item{text-align:left;cursor:pointer;background:#fff;border:0;border-bottom:1px solid #edf1eb;flex-direction:column;gap:4px;width:100%;padding:12px 15px;display:flex}.notification-item.unread{background:#f4faf4}.notification-item strong{color:#1f2937}.notification-item span{color:#667085;font-size:13px;line-height:1.4}.notification-item small{color:#98a2b3}@media (width<=720px){.topbar{height:auto;min-height:60px;padding:10px 14px}.topbar-brand span{display:none}.user-area{gap:7px}.user-area>span{text-overflow:ellipsis;white-space:nowrap;max-width:120px;overflow:hidden}.family-selection{width:calc(100% - 24px);padding:28px 0}.page-heading{flex-direction:column;gap:16px;display:flex}.page-actions{grid-template-columns:1fr 1fr;width:100%;display:grid}.page-actions button{width:100%}.tree-page{width:calc(100% - 20px);padding:18px 0 40px}.tree-toolbar{flex-direction:column;align-items:stretch;gap:14px}.tree-actions{grid-template-columns:1fr 1fr;display:grid}.tree-actions button{width:100%}.flow-wrapper{height:58vh;min-height:420px}.family-tree-node{min-width:240px}.invite-toolbar{grid-template-columns:1fr 1fr;display:grid}.invite-toolbar button{width:100%}.invite-recipient{align-items:flex-start}.invite-recipient-actions{padding-top:6px}.profile-photo-editor{align-items:flex-start}}@media (width<=480px){.page-actions,.tree-actions,.invite-toolbar{grid-template-columns:1fr}.invite-modal{width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.invite-recipient{padding:10px}.invite-check small{white-space:normal}}.inspector-modal{width:min(1200px,100vw - 24px);max-height:calc(100vh - 24px);overflow:auto}.inspector-summary{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.inspector-summary span{color:#667085;background:#f3f7f2;border:1px solid #e1e9df;border-radius:999px;padding:8px 12px;font-size:13px}.inspector-summary strong{color:#285943}.inspector-tabs{border-bottom:1px solid #e5ebe3;gap:5px;padding-bottom:8px;display:flex;overflow:auto}.inspector-tabs button{white-space:nowrap;color:#667085;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:9px 11px}.inspector-tabs button.active{color:#285943;background:#e7f0e8;font-weight:800}.inspector-tabs span{opacity:.75;font-size:11px}.inspector-table-wrap{border:1px solid #e1e7df;border-radius:12px;margin-top:12px;overflow:auto}.inspector-table-wrap table{border-collapse:collapse;width:100%;min-width:760px;font-size:12px}.inspector-table-wrap th,.inspector-table-wrap td{text-align:left;vertical-align:top;border-bottom:1px solid #edf1eb;max-width:260px;padding:9px 10px}.inspector-table-wrap th{z-index:1;color:#475467;background:#f7f9f6;position:sticky;top:0}.inspector-table-wrap td{white-space:nowrap;text-overflow:ellipsis;color:#667085;overflow:hidden}.tree-exporting,.tree-exporting .flow-wrapper{overflow:visible!important}.tree-exporting .tree-node-actions,.tree-exporting .react-flow__controls,.tree-exporting .react-flow__minimap,.tree-exporting .react-flow__attribution{display:none!important}.family-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;width:100%;min-width:0;display:grid}.person-card-main{box-sizing:border-box;text-align:left;align-items:center;gap:14px;width:100%;min-width:0;max-width:100%;display:flex;overflow:hidden}.person-avatar{box-sizing:border-box;color:#285943;background:#e8f0e9;border-radius:50%;flex:0 0 64px;justify-content:center;align-items:center;width:64px;min-width:64px;max-width:64px;height:64px;min-height:64px;max-height:64px;font-size:20px;font-weight:700;display:flex;position:relative;overflow:hidden}.person-avatar img{object-fit:cover;object-position:center;border:0;border-radius:50%;flex:0 0 64px;width:64px;min-width:64px;max-width:64px;height:64px;min-height:64px;max-height:64px;display:block}.person-avatar span{-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;width:100%;height:100%;line-height:1;display:flex}.person-info{flex:auto;min-width:0;max-width:100%;overflow:hidden}.person-info h3{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;margin:0;overflow:hidden}.person-info span,.person-info small{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;display:block;overflow:hidden}.person-card-actions{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.person-card,.person-card *,.person-card-main{box-sizing:border-box}.person-card-main>*{min-width:0}
