*{box-sizing:border-box;margin:0;padding:0}html,body,#root{overscroll-behavior:none;width:100%;height:100%;overflow:hidden}#root{position:relative}@supports (height:100dvh){body,#root{height:100dvh}}@media (hover:none) and (pointer:coarse){html{overflow:hidden auto}body{scrollbar-width:none;height:calc(100% + 1px);overflow:hidden visible}#root{height:calc(100% - 1px)}@supports (height:100dvh){body{height:calc(100dvh + 1px)}#root{height:100dvh}}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#151515;background:#f4f4f1;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}html,body,#root{background:#f4f4f1}#root{flex-direction:column;display:flex}.flex{display:flex}.flex-col{flex-direction:column}.flex-1{flex:1}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-4{gap:1rem}.w-full{width:100%}.w-1\/4{width:25%}.h-screen{height:100vh}.h-full{height:100%}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.bg-gray-50{background-color:#f9fafb}.bg-white{background-color:#fff}.bg-gray-100{background-color:#f3f4f6}.bg-blue-600{background-color:#2563eb}.bg-red-600{background-color:#dc2626}.bg-gray-300{background-color:#d1d5db}.border{border:1px solid #e5e7eb}.border-r{border-right:1px solid #e5e7eb}.border-l{border-left:1px solid #e5e7eb}.border-2{border:2px solid}.border-gray-200{border-color:#e5e7eb}.border-blue-600{border-color:#2563eb}.rounded{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.p-4{padding:1rem}.p-3{padding:.75rem}.p-2{padding:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mt-1{margin-top:.25rem}.ml-2{margin-left:.5rem}.text-lg{font-size:1.125rem}.text-sm{font-size:.875rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-medium{font-weight:500}.text-gray-900{color:#111827}.text-gray-500{color:#6b7280}.text-gray-600{color:#4b5563}.text-gray-400{color:#9ca3af}.text-white{color:#fff}.text-red-600{color:#dc2626}.text-red-800{color:#991b1b}.text-blue-600{color:#2563eb}.text-center{text-align:center}.transition-colors{transition-property:background-color,border-color,color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:bg-blue-700:hover{background-color:#1d4ed8}.hover\:bg-red-700:hover{background-color:#b91c1c}.hover\:bg-gray-100:hover{background-color:#f3f4f6}.hover\:bg-gray-400:hover{background-color:#9ca3af}.hover\:text-red-800:hover{color:#991b1b}.space-y-2>*+*{margin-top:.5rem}input,textarea,select{border:1px solid #d1d5db;border-radius:.375rem;width:100%;padding:.5rem;font-size:.875rem}input:focus,textarea:focus,select:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}button{cursor:pointer;border:none;font-weight:500;transition:all .15s}button:focus{outline:none}:root{--red:#e5462f;--red-d:#c93a24;--red-s:#fdeeeb;--ink:#151515;--ink2:#3b3b3b;--muted:#8b8b88;--line:#ededea;--bg:#f4f4f1;--card:#fff;--green:#1f9d5c;--amber:#c98a00;--blue:#1e6fd9;--pink:#d6456b;--violet:#7a5cc5;--r:20px;--shadow:0 1px 2px #0000000a, 0 8px 24px #0000000f;--ease:cubic-bezier(.2,.8,.2,1);--sans:-apple-system, BlinkMacSystemFont, "Hiragino Sans", "Noto Sans JP", "Yu Gothic", sans-serif}.ft-app{background:var(--bg);width:100%;height:100%;font-family:var(--sans);color:var(--ink);flex-direction:column;display:flex;position:relative;overflow:hidden}.ft-toolbar{padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top,0px));padding-left:calc(16px + env(safe-area-inset-left,0px));padding-right:calc(16px + env(safe-area-inset-right,0px));-webkit-backdrop-filter:saturate(1.6)blur(16px);backdrop-filter:saturate(1.6)blur(16px);z-index:5;background:#ffffffd1;border-bottom:1px solid #0000000d;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;display:flex;position:relative}.ft-title{letter-spacing:-.01em;white-space:nowrap;align-items:baseline;gap:0;min-width:0;font-size:1.1rem;font-weight:800;display:flex}.ft-count{margin-left:8px}.ft-title-ac{color:var(--red)}.ft-count{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;font-weight:600;overflow:hidden}.ft-tools{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex;position:relative}.ft-mode,.ft-sync{display:none}.ft-loading{color:var(--muted);font-size:.9rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ft-toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));background:var(--ink);color:#fff;z-index:2000;word-break:break-all;border-radius:14px;max-width:92vw;padding:10px 16px;font-size:.85rem;position:absolute;transform:translate(-50%)}.ft-btn{cursor:pointer;white-space:nowrap;font-size:.9rem;font-weight:700;line-height:1.2;font-family:var(--sans);border:none;border-radius:14px;padding:11px 16px}.ft-btn-primary{background:var(--red);color:#fff;box-shadow:0 4px 12px #e5462f4d}.ft-btn-primary:hover{background:var(--red-d)}.ft-btn-confirm{background:var(--green);color:#fff}.ft-btn-ghost{color:var(--ink);background:#ecece8}.ft-btn-ghost:hover{background:#e2e2dd}.ft-btn-danger{background:var(--red-d);color:#fff}.ft-btn-danger-ghost{background:var(--red-s);color:var(--red-d)}.ft-btn:disabled{opacity:.45;cursor:default}.ft-block{width:100%}.ft-icon{padding:9px 12px;font-size:16px}.ft-hint{color:var(--ink2);border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:14px;padding:7px 16px;font-size:.72rem;display:flex}.ft-dot{vertical-align:-1px;border-radius:50%;width:10px;height:10px;margin-right:4px;display:inline-block}.ft-dot.parent,.ft-plus.parent{background:var(--green)}.ft-dot.spouse,.ft-plus.spouse{background:var(--violet)}.ft-dot.child,.ft-plus.child{background:var(--red)}.ft-canvas{touch-action:none;background-color:var(--bg);cursor:grab;-webkit-user-select:none;user-select:none;background-image:radial-gradient(#dcdcd7 1px,#0000 1px);background-size:22px 22px;flex:1;position:relative;overflow:hidden}.ft-canvas.browser-zoomed{touch-action:pan-x pan-y pinch-zoom}.ft-world{transform-origin:0 0;position:absolute;top:0;left:0}.ft-lines{position:absolute;top:0;left:0;overflow:visible}.ft-lines line{stroke:#b8b8b3;stroke-width:2.5px;stroke-linecap:round}.ft-lines line.d0{stroke:#b8b8b3}.ft-lines line.d1{stroke:#9fbde6}.ft-lines line.d2{stroke:#a6d4b8}.ft-lines line.d3{stroke:#e6c58f}.ft-lines line.dashed{stroke-dasharray:7 5}.ft-node{text-align:center;width:96px;height:96px;color:var(--ink);cursor:pointer;border:4px solid var(--blue);transition:transform .2s var(--ease), box-shadow .2s var(--ease);background:#fff;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;padding:6px;display:flex;position:absolute;box-shadow:0 2px 4px #0000000f,0 8px 20px #00000014}.ft-node.male{border-color:var(--blue)}.ft-node.female{border-color:var(--pink)}.ft-node.other{border-color:var(--violet)}.ft-node:hover{transform:scale(1.04)}.ft-node.selected{border-color:var(--red);box-shadow:0 0 0 5px #e5462f40,0 8px 20px #0000001f}.ft-node.dup{opacity:.5;background:#fafaf8;border-style:dashed}.ft-name{word-break:break-all;letter-spacing:-.01em;max-height:3.45em;font-size:14px;font-weight:800;line-height:1.15;overflow:hidden}.ft-name.long{font-size:12px}.ft-birth{color:var(--muted);white-space:nowrap;margin-top:3px;font-size:10px;font-weight:600;line-height:1.15}.ft-birth.west{margin-top:1px;font-size:9.5px}.ft-adopt{color:var(--amber);background:#fdf3df;border-radius:99px;padding:3px 5px;font-size:9px;font-weight:800;line-height:1;position:absolute;top:4px;right:6px}.ft-node.deceased{border-color:#c9c9c4}.ft-node.deceased .ft-name{color:var(--ink2)}.ft-dead{background:var(--ink);color:#fff;border-radius:99px;padding:3px 5px;font-size:9px;font-weight:800;line-height:1;position:absolute;top:4px;left:6px}.ft-foldmark{background:var(--red);border-radius:50%;width:6px;height:6px;margin-left:-3px;position:absolute;bottom:9px;left:50%}.ft-fold{z-index:3;min-width:24px;height:24px;color:var(--muted);cursor:pointer;font-size:15px;font-weight:800;line-height:1;font-family:var(--sans);transition:transform .15s var(--ease), background .15s, color .15s;background:#fff;border:2px solid #fff;border-radius:99px;justify-content:center;align-items:center;padding:0 7px;display:inline-flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 2px 6px #00000024}.ft-fold:hover{color:var(--ink);transform:translate(-50%,-50%)scale(1.1)}.ft-fold.closed{background:var(--red);color:#fff;height:26px;padding:0 9px;font-size:12px;box-shadow:0 4px 12px #e5462f59}.ft-fold.dim{opacity:.35}.ft-plus{color:#fff;cursor:pointer;z-index:2;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;padding:0;font-size:22px;font-weight:700;line-height:1;display:flex;position:absolute;box-shadow:0 2px 6px #0003}.ft-plus:hover{transform:scale(1.12)}.ft-hl line{stroke:var(--red);stroke-width:inherit;stroke-linecap:round;stroke-linejoin:round}.ft-hl line.dashed{stroke-dasharray:9 7}.ft-world.focus .ft-lines.base line.dashed{opacity:.3}.ft-world.focus .ft-lines.base{opacity:.5}.ft-world.focus .ft-node{opacity:.35}.ft-world.focus .ft-node.direct{opacity:1}.ft-world.focus .ft-node.selected{opacity:1;z-index:3}.ft-first{background:var(--card);border-radius:var(--r);width:min(92vw,400px);box-shadow:var(--shadow);cursor:auto;-webkit-user-select:text;user-select:text;padding:22px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ft-first h2{margin-bottom:6px;font-size:1.15rem;font-weight:800}.ft-first p{color:var(--muted);margin-bottom:14px;font-size:.82rem;line-height:1.6}.ft-overlay{z-index:1000;background:#14141466;justify-content:center;align-items:flex-end;animation:.3s both ft-dim;display:flex;position:absolute;inset:0}@keyframes ft-dim{0%{background:#14141400}}.ft-dialog{background:var(--bg);width:100%;max-width:560px;max-height:92%;padding:8px 16px calc(20px + env(safe-area-inset-bottom,0px));-webkit-user-select:text;user-select:text;animation:ft-up .38s var(--ease) both;border-radius:26px 26px 0 0;overflow-y:auto}@keyframes ft-up{0%{transform:translateY(100%)}}.ft-dialog:before{content:"";background:#d5d5d0;border-radius:9px;width:38px;height:5px;margin:2px auto 12px;display:block}.ft-dialog-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.ft-dialog-head h2{font-size:1.15rem;font-weight:800}.ft-x{width:34px;height:34px;color:var(--ink);cursor:pointer;background:#e9e9e5;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:15px;display:inline-flex}@media (width>=700px){.ft-overlay{align-items:center;padding:16px}.ft-dialog{border-radius:var(--r);max-height:calc(100% - 32px);box-shadow:0 20px 60px #00000040}.ft-dialog:before{display:none}}.ft-fields{flex-direction:column;gap:12px;display:flex}.ft-label{color:var(--ink2);flex-direction:column;gap:6px;font-size:.78rem;font-weight:700;display:flex}.ft-label input,.ft-ymd input,.ft-link select{background:var(--card);width:100%;box-shadow:var(--shadow);color:var(--ink);font-size:16px;font-weight:400;font-family:var(--sans);border:none;border-radius:14px;padding:12px}.ft-label input:focus,.ft-ymd input:focus,.ft-link select:focus{outline:none;box-shadow:0 0 0 3px #e5462f40}.ft-seg{background:#e9e9e5;border-radius:14px;gap:2px;padding:3px;display:flex}.ft-seg button{color:var(--ink2);cursor:pointer;font-size:.85rem;font-weight:700;font-family:var(--sans);background:0 0;border:none;border-radius:11px;flex:1;padding:9px 6px}.ft-seg button.on{color:var(--ink);background:#fff;box-shadow:0 1px 3px #0000001f}.ft-seg button.on.deceased{background:var(--ink);color:#fff}.ft-seg-era button{padding:8px 2px;font-size:.78rem}.ft-date{flex-direction:column;gap:8px;display:flex}.ft-ymd{gap:8px;display:flex}.ft-ymd label{flex:1;align-items:center;gap:4px;font-weight:400;display:flex}.ft-ymd label:first-child{flex:1.4}.ft-ymd input{text-align:center;padding:12px 6px}.ft-date-preview{color:var(--red-d);min-height:1.2em;font-size:.78rem;font-weight:600}.ft-section{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:12px;padding:14px}.ft-section h3{margin-bottom:8px;font-size:.85rem;font-weight:800}.ft-section.father h3{color:var(--blue)}.ft-section.mother h3{color:var(--pink)}.ft-note{color:var(--muted);margin-bottom:10px;font-size:.76rem;line-height:1.6}.ft-actions{gap:8px;margin-top:14px;display:flex}.ft-actions .ft-btn{flex:1;padding:13px;font-size:.92rem}.ft-rels{flex-direction:column;gap:6px;margin:8px 0;list-style:none;display:flex}.ft-rels li{background:var(--card);box-shadow:var(--shadow);border-radius:14px;justify-content:space-between;align-items:center;padding:8px 8px 8px 14px;font-size:.88rem;display:flex}.ft-rels .ft-x{width:30px;height:30px;font-size:13px}.ft-danger{border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.ft-danger h3{font-size:.85rem;font-weight:800}.ft-confirm{color:var(--red-d);flex-wrap:wrap;align-items:center;gap:8px;font-size:.8rem;display:flex}.ft-check{color:var(--ink2);background:var(--card);box-shadow:var(--shadow);border-radius:14px;align-items:flex-start;gap:8px;margin-top:12px;padding:12px;font-size:.8rem;line-height:1.5;display:flex}.ft-check input{width:auto;accent-color:var(--red);margin-top:2px}.ft-link{background:var(--card);box-shadow:var(--shadow);border-radius:var(--r);flex-direction:column;gap:10px;margin-top:10px;padding:14px;display:flex}.ft-link select{box-shadow:none;background:#f4f4f1}.ft-link .ft-check{box-shadow:none;background:#f4f4f1;margin-top:0}.ft-link .ft-actions{margin-top:0}.ft-name-row{gap:8px;display:flex}.ft-name-row input{flex:1;min-width:0}.ft-num{ime-mode:disabled}.ft-card{background:var(--card);border-radius:var(--r);z-index:20;cursor:auto;-webkit-user-select:none;user-select:none;width:250px;max-width:calc(100% - 16px);color:var(--ink);touch-action:pan-y;font-family:var(--sans);padding:0 14px 14px;position:absolute;overflow-y:auto;box-shadow:0 2px 4px #0000000d,0 16px 40px #00000029}.ft-card-handle{background:var(--card);cursor:grab;touch-action:none;z-index:1;margin:0 -4px;padding-top:8px;padding-left:4px;padding-right:4px;position:sticky;top:0}.ft-card-handle:active{cursor:grabbing}.ft-card-grip{background:#d5d5d0;border-radius:2px;width:36px;height:4px;margin:0 auto 8px}.ft-card-head{justify-content:space-between;align-items:flex-start;gap:6px;display:flex}.ft-card-name{letter-spacing:-.01em;font-size:1.05rem;font-weight:800;line-height:1.25}.ft-card-sub{color:var(--muted);margin-top:3px;font-size:.72rem;font-weight:600}.ft-card .ft-x{width:30px;height:30px;font-size:13px}.ft-card-direct{color:var(--red-d);align-items:center;gap:6px;margin-top:8px;font-size:.7rem;font-weight:700;display:flex}.ft-card-direct:before{content:"";border-top:4px solid var(--red);border-radius:2px;width:18px;height:0}.ft-card-sec{border-top:1px solid var(--line);margin-top:10px;padding-top:8px}.ft-card-sec h4{color:var(--muted);letter-spacing:.06em;margin-bottom:4px;font-size:.66rem;font-weight:700}.ft-card-row{text-align:left;width:100%;color:var(--ink);cursor:pointer;font-size:.88rem;font-family:var(--sans);background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:6px;display:flex}.ft-card-row:hover{background:#f4f4f1}.ft-card-row .lab{text-align:center;min-width:2.2em;color:var(--ink2);background:#ecece8;border-radius:99px;flex-shrink:0;padding:3px 6px;font-size:.64rem;font-weight:700}.ft-card-row.male .lab{color:var(--blue);background:#e3edfb}.ft-card-row.female .lab{color:var(--pink);background:#fbe4ea}.ft-card-row .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:700;overflow:hidden}.ft-card-row .nm .dead{background:var(--ink);color:#fff;vertical-align:1px;border-radius:99px;margin-right:4px;padding:2px 4px;font-size:9px;line-height:1;display:inline-block}.ft-card-row .bd{color:var(--muted);flex-shrink:0;font-size:.66rem;font-weight:600}.ft-card-none{color:var(--muted);padding:2px 6px;font-size:.74rem}@media (width<=600px){.ft-card{width:230px}}.ft-gear{width:36px;height:36px;color:var(--ink2);cursor:pointer;transition:transform .2s var(--ease), background .15s ease;background:#f0f0ed;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.ft-gear svg{width:20px;height:20px}.ft-gear:hover{background:#e6e6e1}.ft-gear.open{background:var(--ink);color:#fff;transform:rotate(60deg)}.ft-gear.editing{background:var(--red);color:#fff;box-shadow:0 4px 12px #e5462f59}.ft-menu{white-space:nowrap;background:var(--card);min-width:268px;color:var(--ink);border-radius:var(--r);z-index:50;animation:ft-pop .2s var(--ease) both;transform-origin:100% 0;flex-direction:column;gap:2px;padding:8px;display:flex;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 2px 4px #0000000d,0 16px 40px #00000029}@keyframes ft-pop{0%{opacity:0;transform:scale(.94)translateY(-4px)}}.ft-menu-item{text-align:left;width:100%;color:var(--ink);cursor:pointer;font-size:.9rem;font-weight:700;font-family:var(--sans);background:0 0;border:none;border-radius:12px;align-items:center;gap:10px;padding:12px;display:flex}.ft-menu-item:hover{background:#f4f4f1}.ft-menu-item.primary{background:var(--red);color:#fff}.ft-menu-item.primary:hover{background:var(--red-d)}.ft-menu-ic{text-align:center;flex-shrink:0;width:22px;font-size:15px}.ft-menu-sep{background:var(--line);height:1px;margin:6px 4px}.ft-menu-status{color:var(--muted);align-items:center;gap:8px;padding:6px 12px 4px;font-size:.72rem;font-weight:600;display:flex}.ft-menu-dot{background:#c3c3bf;border-radius:50%;width:9px;height:9px}.ft-menu-status.online .ft-menu-dot{background:var(--green)}.ft-menu-status.offline .ft-menu-dot{background:var(--amber)}.ft-menu-status.error .ft-menu-dot{background:var(--red)}.ft-entry-body{flex-direction:column;flex:1;align-items:center;gap:14px;padding:24px 16px 40px;display:flex;overflow-y:auto}.ft-entry-card{background:var(--card);border-radius:var(--r);width:min(100%,440px);box-shadow:var(--shadow);flex-direction:column;gap:12px;padding:20px;display:flex}.ft-entry-card h2{font-size:1.05rem;font-weight:800}.ft-entry-card .ft-note{margin-bottom:0}.ft-entry-new{background:#fff}.ft-entry-error{color:var(--red-d);background:var(--red-s);border-radius:12px;padding:10px 12px;font-size:.8rem}.ft-entry .ft-btn-primary,.ft-entry .ft-btn-ghost{padding:13px;font-size:.92rem}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
