*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;margin:0;padding:0}body{color:var(--text-main);background-color:#0f172a;background-image:radial-gradient(at 0 0,#6366f126 0,#0000 50%),radial-gradient(at 100% 100%,#ec489926 0,#0000 50%);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:fixed;background-origin:padding-box;background-clip:border-box;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes pulseGlow{0%,to{box-shadow:0 0 15px #6366f14d}50%{box-shadow:0 0 25px #a855f780}}.login-page{background:radial-gradient(circle,#1e293b 0%,#0f172a 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:24px;width:100%;max-width:420px;padding:45px 35px;animation:.6s cubic-bezier(.16,1,.3,1) fadeInUp;box-shadow:0 25px 50px -12px #00000040}.login-card h1{text-align:center;background:var(--primary-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin:0;font-size:32px;font-weight:800}.login-subtitle{text-align:center;color:var(--text-muted);margin-top:8px;margin-bottom:32px;font-size:15px}.form-group{margin-bottom:22px}.form-group label{color:var(--text-main);margin-bottom:8px;font-size:14px;font-weight:600;display:block}.form-group input,.form-group select{background:#ffffffe6;border:2px solid #e2e8f0;border-radius:12px;width:100%;padding:14px 16px;font-size:15px;transition:all .3s}.form-group input:focus,.form-group select:focus{box-shadow:0 0 0 4px var(--accent-glow);border-color:#6366f1;outline:none;transform:translateY(-1px)}.login-button{background:var(--primary-gradient);color:#fff;cursor:pointer;border:none;border-radius:12px;width:100%;padding:15px;font-size:16px;font-weight:700;transition:all .3s cubic-bezier(.16,1,.3,1);box-shadow:0 10px 20px -5px #6366f166}.login-button:hover{transform:translateY(-2px);box-shadow:0 15px 25px -5px #6366f199}.login-button:active{transform:translateY(0)}.register-link{text-align:center;margin-top:25px;font-size:14px}.register-link span{color:var(--text-muted)}.register-link button{color:#6366f1;cursor:pointer;background:0 0;border:none;font-weight:700;transition:color .2s}.register-link button:hover{color:#4f46e5;text-decoration:underline}.family-form-page{background:#f8fafc;min-height:100vh;padding:60px 20px}.family-form-container{max-width:900px;box-shadow:var(--shadow-soft);background:#fff;border-radius:24px;margin:0 auto;padding:50px;animation:.5s fadeInUp}.family-form-container h1{text-align:center;color:#0f172a;margin-top:0;font-size:36px;font-weight:800}.form-description{text-align:center;color:var(--text-muted);margin-bottom:40px;font-size:16px}.family-section h2{color:#334155;margin-top:0;margin-bottom:20px;font-size:20px}.family-section input[type=text],.family-section select{border:1.5px solid #e2e8f0;border-radius:10px;width:100%;margin-bottom:16px;padding:12px 16px;font-size:15px;transition:border-color .2s}.family-section input[type=text]:focus,.family-section select:focus{border-color:#6366f1;outline:none}.family-person,.dynamic-person{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;margin-bottom:20px;padding:24px;transition:all .3s}.dynamic-person:hover{border-style:solid;border-color:#94a3b8}.add-button{color:#fff;cursor:pointer;background:#0f172a;border:none;border-radius:10px;padding:12px 24px;font-weight:600;transition:all .2s}.add-button:hover{background:#334155;transform:translateY(-1px)}.remove-button{color:#ef4444;cursor:pointer;background:#fee2e2;border:none;border-radius:8px;padding:8px 16px;font-weight:600;transition:background .2s}.remove-button:hover{background:#fca5a5}.submit-family-button:disabled{opacity:.5;cursor:not-allowed}.tree-page{color:#fff;background:#0f172a radial-gradient(#ffffff0d 1px,#0000 0) 0 0/24px 24px;width:100%;min-height:100vh;padding:40px 20px}.tree-header{text-align:center;margin-bottom:40px;animation:.5s fadeInUp}.tree-header h1{letter-spacing:-.5px;background:var(--primary-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin:0;font-size:40px;font-weight:800}.tree-header p{color:#94a3b8;margin-top:10px;font-size:16px}.tree-header button{color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;background:#ffffff0d;border:1px solid #ffffff26;border-radius:30px;margin:6px;padding:10px 20px;font-size:14px;font-weight:500;transition:all .3s}.tree-header button:hover{background:#fff3;border-color:#ffffff4d;transform:translateY(-2px)}.tree-scroll{scroll-behavior:smooth;width:100%;padding:40px 60px 120px;overflow:auto visible}.person-card{-webkit-backdrop-filter:blur(12px);background:#1e293bb3;border:1px solid #ffffff1f;border-radius:20px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;width:190px;min-height:230px;padding:20px;transition:all .4s cubic-bezier(.175,.885,.32,1.275);animation:.6s backwards fadeInUp;display:flex;position:relative;box-shadow:0 10px 25px -5px #0000004d}.person-card:hover{z-index:10;background:#1e293be6;border-color:#818cf8;transform:translateY(-8px)scale(1.03);box-shadow:0 20px 30px -10px #6366f166}.current-person{border:2px solid #a855f7;animation:3s infinite alternate pulseGlow}.current-person:after{content:"YOU";background:var(--primary-gradient);color:#fff;letter-spacing:1px;border-radius:12px;padding:3px 10px;font-size:10px;font-weight:800;position:absolute;top:-12px}.person-photo,.person-photo-placeholder{object-fit:cover;border:3px solid #fff3;border-radius:50%;width:90px;height:90px;margin-bottom:14px;transition:transform .3s,border-color .3s;box-shadow:0 4px 12px #0003}.person-card:hover .person-photo,.person-card:hover .person-photo-placeholder{border-color:#818cf8;transform:scale(1.05)}.person-photo-placeholder{color:#94a3b8;background:linear-gradient(135deg,#334155 0%,#1e293b 100%);justify-content:center;align-items:center;font-size:32px;font-weight:700;display:flex}.person-name{text-align:center;word-break:break-word;color:#f8fafc;margin-top:4px;font-size:16px;font-weight:700}.person-gender{color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:4px;font-size:12px}.couple-connector,.spouse-line{background:linear-gradient(90deg,#6366f1,#a855f7);flex-shrink:0;width:40px;height:2px;box-shadow:0 0 8px #a855f799}.children-section:before,.parent-to-children-line,.child-item:before,.child-vertical-line{background:linear-gradient(#6366f1,#a855f7);width:2px;box-shadow:0 0 6px #6366f180}.children-section:after,.children-horizontal-line{background:linear-gradient(90deg,#6366f1,#a855f7);height:2px;box-shadow:0 0 6px #6366f180}.siblings-list .person-card{opacity:.9;width:155px;min-height:190px;padding:14px}.siblings-list .person-card:hover{opacity:1}.siblings-list .person-photo,.siblings-list .person-photo-placeholder{width:70px;height:70px}@media (width<=768px){.tree-page{padding:20px 10px}.tree-header h1{font-size:28px}.login-card,.family-form-container{border-radius:18px;padding:25px 20px}.tree-scroll{-webkit-overflow-scrolling:touch;padding-left:15px;padding-right:15px}.generation-row{gap:20px}.person-card{border-radius:14px;width:140px;min-height:185px;padding:12px}.person-photo,.person-photo-placeholder{width:65px;height:65px;font-size:24px}.person-name{font-size:14px}.couple-connector,.spouse-line{width:18px}.children-list{gap:15px}.siblings-list .person-card{width:125px;min-height:165px}}:root{--primary-gradient:linear-gradient(135deg, #6366f1 0%, #a855f7 50%, #ec4899 100%);--accent-glow:#6366f159;--glass-bg:#1e293bbf;--glass-border:#ffffff1f;--text-main:#f8fafc;--text-muted:#94a3b8;--shadow-soft:0 10px 30px -5px #0000004d;--shadow-hover:0 20px 35px -5px #6366f140}.family-form-page{width:100%;min-height:100vh;color:var(--text-main);background-color:#0f172a;background-image:radial-gradient(at 0 0,#6366f126 0,#0000 50%),radial-gradient(at 100% 100%,#ec489926 0,#0000 50%),radial-gradient(#ffffff0a 1px,#0000 0);background-position:0 0;background-repeat:repeat;background-size:100% 100%,100% 100%,24px 24px;background-attachment:fixed;background-origin:padding-box;background-clip:border-box;padding:50px 20px 80px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.family-form-container{background:var(--glass-bg);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:24px;width:100%;max-width:900px;margin:0 auto;padding:45px;animation:.6s cubic-bezier(.16,1,.3,1) fadeInUp;box-shadow:0 25px 50px -12px #0006}.family-form-header{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:20px;margin-bottom:35px;padding-bottom:25px;display:flex}.family-form-header h1{letter-spacing:-.5px;background:var(--primary-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin:0;font-size:34px;font-weight:800}.form-description{color:var(--text-muted);margin-top:8px;font-size:15px;line-height:1.6}.back-to-tree-button{color:var(--text-main);cursor:pointer;white-space:nowrap;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0d;border:1px solid #ffffff26;border-radius:30px;padding:10px 20px;font-size:14px;font-weight:600;transition:all .3s cubic-bezier(.16,1,.3,1)}.back-to-tree-button:hover{background:#ffffff26;border-color:#ffffff4d;transform:translateY(-2px);box-shadow:0 8px 20px #0003}.family-section{background:#0f172a66;border:1px solid #ffffff14;border-radius:20px;margin-bottom:35px;padding:30px;transition:border-color .3s}.family-section:focus-within{border-color:#6366f180}.family-section h2{color:#f1f5f9;margin-top:0;margin-bottom:12px;font-size:22px;font-weight:700}.section-description{color:var(--text-muted);margin-bottom:24px;font-size:14px}.family-person,.dynamic-person{background:#1e293b99;border:1px dashed #ffffff26;border-radius:16px;margin-bottom:20px;padding:24px;transition:all .3s;animation:.4s backwards fadeInUp;position:relative}.family-person:hover,.dynamic-person:hover{border-style:solid;border-color:#818cf8;box-shadow:0 10px 25px -5px #0000004d}.family-person h3,.dynamic-person h3{color:#cbd5e1;margin-top:0;margin-bottom:18px;font-size:18px}.family-section label,.family-person label,.dynamic-person label{color:#cbd5e1;margin-top:16px;margin-bottom:8px;font-size:14px;font-weight:600;display:block}.family-section input[type=text],.family-section select{color:#fff;background:#0f172a99;border:1.5px solid #ffffff1f;border-radius:12px;outline:none;width:100%;padding:13px 16px;font-size:15px;transition:all .3s}.family-section select option{color:#fff;background:#1e293b}.family-section input[type=text]:focus,.family-section select:focus{box-shadow:0 0 0 4px var(--accent-glow);border-color:#6366f1;transform:translateY(-1px)}.family-section input[type=file]{width:100%;color:var(--text-muted);cursor:pointer;background:#0f172a66;border:1.5px dashed #fff3;border-radius:12px;margin-top:8px;padding:10px;transition:border-color .3s}.family-section input[type=file]:hover{border-color:#818cf8}.photo-label{color:#cbd5e1;font-size:14px}.existing-photo{background:#0f172a80;border:1px solid #ffffff14;border-radius:12px;align-items:center;gap:16px;margin-top:18px;padding:10px;display:flex}.photo-preview{object-fit:cover;border:2px solid #6366f1;border-radius:50%;width:70px;height:70px;box-shadow:0 4px 12px #6366f14d}.existing-photo span{color:var(--text-muted);font-size:13px}.add-button{color:#a5b4fc;cursor:pointer;background:#6366f126;border:1px solid #6366f166;border-radius:12px;padding:12px 22px;font-size:14px;font-weight:600;transition:all .3s}.add-button:hover{color:#fff;background:#6366f14d;border-color:#6366f1;transform:translateY(-2px)}.remove-button{color:#fca5a5;cursor:pointer;background:#ef444426;border:1px solid #ef44444d;border-radius:10px;margin-top:18px;padding:9px 16px;font-weight:600;transition:all .3s}.remove-button:hover{color:#fff;background:#ef44444d;border-color:#ef4444}.submit-family-button{background:var(--primary-gradient);color:#fff;cursor:pointer;border:none;border-radius:14px;width:100%;padding:18px;font-size:18px;font-weight:700;transition:all .3s cubic-bezier(.16,1,.3,1);box-shadow:0 10px 25px -5px #6366f166}.submit-family-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 15px 30px -5px #6366f199}.submit-family-button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}@media (width<=768px){.family-form-page{padding:20px 10px 50px}.family-form-container{border-radius:18px;padding:25px 18px}.family-form-header{flex-direction:column-reverse;align-items:flex-start;gap:15px}.back-to-tree-button{align-self:flex-start}.family-section{border-radius:14px;padding:20px 15px}.family-person,.dynamic-person{border-radius:12px;padding:18px 14px}.family-form-header h1{font-size:26px}.submit-family-button{padding:15px;font-size:16px}}.nested-person,.nested-list{background:#ffffff08;border-left:2px solid #a855f773;border-radius:12px;margin-top:18px;padding:16px}.nested-person h4,.nested-list h4{color:#c7d2fe;margin:0 0 12px;font-size:14px;font-weight:700}.nested-list .dynamic-person,.dynamic-person .remove-button,.nested-person .remove-button{margin-top:12px}:root{--ft-line:linear-gradient(180deg, #6366f1, #a855f7);--ft-line-h:linear-gradient(90deg, #6366f1, #a855f7, #ec4899);--ft-card-bg:#1e293bbf;--ft-card-border:#ffffff1f;--ft-text:#f8fafc;--ft-muted:#94a3b8}.ft-page{width:100%;min-height:100vh;color:var(--ft-text);background-color:#0f172a;background-image:radial-gradient(at 0 0,#6366f126 0,#0000 50%),radial-gradient(at 100% 100%,#ec489926 0,#0000 50%);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:fixed;background-origin:padding-box;background-clip:border-box;flex-direction:column;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;display:flex}.ft-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:50;background:#0f172ad9;border-bottom:1px solid #ffffff14;flex-direction:row;justify-content:space-between;align-items:center;gap:20px;padding:24px 32px;display:flex;position:sticky;top:0}.ft-header h1{letter-spacing:-.5px;background:linear-gradient(135deg,#818cf8,#a855f7,#ec4899);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0;font-size:30px;font-weight:800}.ft-header p{color:var(--ft-muted);margin:4px 0 0;font-size:14px}.ft-actions{flex-direction:row;gap:12px;display:flex}.ft-actions button,.ft-message button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#6366f1,#a855f7);border:none;border-radius:30px;padding:10px 22px;font-size:14px;font-weight:600;transition:transform .2s,box-shadow .2s}.ft-actions button:hover,.ft-message button:hover{transform:translateY(-2px);box-shadow:0 10px 22px #6366f166}.ft-actions button:focus-visible,.ft-message button:focus-visible{outline-offset:2px;outline:2px solid #f8fafc}.ft-scroll{flex:1;width:100%;padding:50px 0 120px;overflow:auto}.ft-tree{box-sizing:border-box;flex-direction:row;justify-content:center;align-items:flex-start;gap:60px;width:max-content;min-width:100%;padding:0 48px;display:flex}.ft-node{flex-direction:column;flex:none;align-items:center;display:flex}.ft-couple{flex-flow:row;flex:none;align-items:center;display:flex}.ft-spouse{flex-direction:row;flex:none;align-items:center;display:flex}.ft-spouse-line{background:var(--ft-line-h);flex:0 0 58px;width:58px;height:2px;display:block;position:relative;box-shadow:0 0 10px #a855f780}.ft-spouse-tag{color:#cbd5e1;white-space:nowrap;background:#1e293b;border:1px solid #ffffff26;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ft-card{box-sizing:border-box;border:1px solid var(--ft-card-border);background:var(--ft-card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:20px;flex-direction:column;flex:0 0 160px;align-items:center;width:160px;padding:18px 12px;transition:transform .25s,border-color .25s;display:flex;position:relative;box-shadow:0 10px 30px -8px #00000073}.ft-card:hover{border-color:#818cf8;transform:translateY(-6px)}.ft-card-self{border-color:#a855f7;box-shadow:0 0 0 1px #a855f773,0 14px 34px -10px #a855f780}.ft-you{color:#fff;background:linear-gradient(135deg,#6366f1,#a855f7);border-radius:10px;padding:2px 9px;font-size:10px;font-weight:700;position:absolute;top:-10px;right:-8px}.ft-photo{object-fit:cover;border:3px solid #fff3;border-radius:50%;width:82px;height:82px;margin-bottom:12px}.ft-photo-empty{color:#94a3b8;background:linear-gradient(135deg,#334155,#1e293b);justify-content:center;align-items:center;font-size:28px;font-weight:700;display:flex}.ft-name{text-align:center;overflow-wrap:anywhere;max-width:136px;font-size:15px;font-weight:700;line-height:1.3}.ft-gender{color:var(--ft-muted);text-transform:uppercase;letter-spacing:.6px;margin-top:6px;font-size:11px;font-weight:600}.ft-children{flex-flow:row;justify-content:center;align-items:flex-start;margin-top:30px;padding-top:30px;display:flex;position:relative}.ft-children:before{content:"";background:var(--ft-line);width:2px;height:30px;margin-left:-1px;position:absolute;top:-30px;left:50%;box-shadow:0 0 8px #6366f180}.ft-branch{flex-direction:column;flex:none;align-items:center;padding:30px 26px 0;display:flex;position:relative}.ft-branch:before{content:"";background:var(--ft-line-h);height:2px;position:absolute;top:0;left:0;right:0;box-shadow:0 0 8px #a855f773}.ft-branch:after{content:"";background:var(--ft-line);width:2px;height:30px;margin-left:-1px;position:absolute;top:0;left:50%}.ft-branch:first-child:before{left:50%}.ft-branch:last-child:before{right:50%}.ft-branch:only-child:before{display:none}.ft-branch-root{padding-top:0}.ft-branch-root:before,.ft-branch-root:after{display:none}.ft-sibling-tag{color:#f472b6;white-space:nowrap;background:#0f172ae6;border:1px solid #ec4899;border-radius:10px;margin-bottom:8px;padding:2px 10px;font-size:10px;font-weight:700}.ft-message{text-align:center;color:var(--ft-muted);flex-direction:column;align-items:center;gap:14px;margin:auto;padding:40px;display:flex}.ft-message h2{color:var(--ft-text);margin:0;font-size:22px}@media (width<=720px){.ft-header{flex-direction:column;align-items:flex-start}.ft-branch{padding-left:14px;padding-right:14px}.ft-card{flex-basis:138px;width:138px}.ft-spouse-line{flex-basis:40px;width:40px}}@media (prefers-reduced-motion:reduce){.ft-card,.ft-actions button,.ft-message button{transition:none}}
