:root{--bg: #090909;--panel: rgba(8, 8, 8, .7);--stroke: rgba(255, 255, 255, .13);--text: rgba(255, 255, 255, .93);--muted: rgba(255, 255, 255, .68)}*{box-sizing:border-box;font-variant-numeric:lining-nums tabular-nums}html,body,#root{margin:0;width:100%;height:100%;min-width:320px;background:var(--bg);color:var(--text);font-family:Alegreya Sans,ui-sans-serif,system-ui,sans-serif}.appRoot{width:100%;height:100%;overflow:hidden;background:radial-gradient(circle at 20% 20%,#121212,#070707 65%)}.treePage{width:100%;height:100%;position:relative}.toolbar{position:fixed;top:12px;left:12px;z-index:30;display:flex;align-items:center;gap:8px;filter:drop-shadow(0 16px 56px rgba(0,0,0,.85))}.toolbarBtn{border:1px solid var(--stroke);background:#ffffff0f;color:var(--text);border-radius:8px;padding:6px 10px;font:500 12px/1 Alegreya Sans,system-ui,sans-serif;cursor:pointer}.toolbarBtn:hover{background:#ffffff1f}.toolbarBtnPrimary{background:#ffffff1f;border-color:#ffffff40}.toolbarBtnPrimary:hover{background:#ffffff2e}.scalePill{font-size:12px;font-weight:700;color:var(--text);white-space:nowrap}.spacingBtnWrap{position:relative}.spacingPopover{position:absolute;top:calc(100% + 8px);left:0;min-width:280px;padding:12px 14px;border-radius:12px;border:1px solid var(--stroke);background:var(--panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);display:flex;flex-direction:column;gap:8px;z-index:40;box-shadow:0 8px 32px #0006}.spacingHeader{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;color:var(--text);margin-bottom:2px}.spacingActions{display:flex;align-items:center;gap:6px}.spacingResetBtn{background:none;border:1px solid var(--stroke);border-radius:6px;color:var(--muted);font:500 11px/1 Alegreya Sans,system-ui,sans-serif;padding:3px 8px;cursor:pointer}.spacingResetBtn:hover{color:var(--text);background:#ffffff14}.spacingSaveBtn{color:var(--text)}.spacingHint{font-size:11px;line-height:1.35;color:var(--muted);padding:4px 0 2px}.spacingHint-saving{color:#facc15}.spacingHint-saved{color:#22c55e}.spacingHint-error{color:#ef4444}.spacingRow{display:flex;flex-direction:column;gap:4px}.spacingRowHeader{display:flex;align-items:center;gap:8px}.spacingSlider{width:100%;height:4px;-webkit-appearance:none;appearance:none;background:#ffffff1a;border-radius:2px;outline:none;cursor:pointer}.spacingSlider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--slider-color, #fff);cursor:pointer;border:2px solid rgba(0,0,0,.3)}.spacingSlider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--slider-color, #fff);cursor:pointer;border:2px solid rgba(0,0,0,.3)}.spacingSlider::-webkit-slider-runnable-track{height:4px;border-radius:2px}.spacingSlider::-moz-range-track{height:4px;border-radius:2px;background:#ffffff1a}.spacingLabel{flex:1;font-size:12px;color:var(--text);white-space:nowrap}.spacingInputWrap{display:flex;align-items:center;gap:2px;background:#ffffff0f;border:1px solid var(--stroke);border-radius:6px;padding:2px 6px}.spacingInput{width:52px;background:transparent;border:none;outline:none;color:var(--text);font:500 12px/1 Alegreya Sans,system-ui,sans-serif;text-align:right;-moz-appearance:textfield}.spacingInput::-webkit-inner-spin-button,.spacingInput::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.spacingUnit{font-size:11px;color:var(--muted)}.spacingDot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.spacingDefault{font-size:10px;color:var(--muted);min-width:32px}.spacingGuidesToggle{display:flex;align-items:center;gap:6px;margin-top:4px;padding-top:8px;border-top:1px solid var(--stroke);font-size:12px;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none}.spacingGuidesToggle input{accent-color:#22c55e}.treeStage{width:100%;height:100%;position:relative;overflow:hidden;touch-action:none}.treeWorld{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;backface-visibility:hidden}.treeLinks,.treeNodes{position:absolute;left:0;top:0}.orderDropOverlay{position:absolute;left:0;top:0;pointer-events:none;z-index:5}.orderDropLine{position:absolute;background:#ffffff2e;border-radius:999px;transition:background .14s ease,transform .14s ease,opacity .14s ease;opacity:.65}.orderDropLine.isActive{background:#ffffffdb;opacity:1;transform:scaleX(1.5)}.orderDropPlaceholder{position:absolute;border:2px dashed rgba(255,255,255,.72);border-radius:40px;background:#ffffff0f;transition:left .14s ease,top .14s ease,width .14s ease;box-shadow:inset 0 0 0 1px #ffffff14,0 14px 40px #00000038}.orderDragPreview{position:absolute;pointer-events:none;z-index:8;transition:left 40ms linear,top 40ms linear}.orderDragPreviewCard{position:absolute;transform:translateY(-10px) scale(1.02);filter:drop-shadow(0 22px 36px rgba(0,0,0,.42))}.treeStage.isOrderEdit .treeCardWrap{transition:left .22s cubic-bezier(.2,.9,.2,1),top .22s cubic-bezier(.2,.9,.2,1),opacity .14s ease}.treeStage.isOrderEdit .treeCardWrap:hover,.treeStage.isOrderEdit .treeCardWrap.isHovered,.treeStage.isOrderEdit .treeCardWrap.isKinHover{transform:none;z-index:auto}.treeStage.isOrderEdit .personCardWrap{cursor:grab}.treeStage.isOrderEdit .treeCardWrap.isOrderDragOrigin{opacity:.12}.treeCardWrap{position:absolute;contain:layout style;overflow:visible;will-change:transform;transition:transform .22s cubic-bezier(.2,.9,.2,1)}.treeCardWrap:hover,.treeCardWrap.isHovered{transform:scale(1.045);z-index:6}.treeStage.isInteracting .treeWorld{pointer-events:none}.treeStage.isInteracting .treeCardWrap{transition:none!important}.treeStage.isInteracting .treeCardWrap:hover,.treeStage.isInteracting .treeCardWrap.isHovered{transform:none;z-index:auto}.treeStage.isInteracting .personGlass{opacity:0}.treeStage.isInteracting .personCard{box-shadow:none}.treeStage.isInteracting .personName,.treeStage.isInteracting .personYears{text-shadow:none}.treeStage.isInteracting .unionDot{box-shadow:none}.treeStage.isInteracting .treeLinks{shape-rendering:optimizeSpeed}.treeStage.lowZoom .personGlass{display:none;transition:none}.treeStage.lowZoom .personCard{box-shadow:none}.treeStage.lowZoom .personName,.treeStage.lowZoom .personYears{text-shadow:none}.treeStage.lowZoom .unionDot{box-shadow:none}.treeStage.lowZoom .cardActions{display:none}.treeStage.lowZoom .treeCardWrap:hover{transform:none;z-index:auto}.treeStage.lowZoom .treeLinks{shape-rendering:optimizeSpeed}.personCardWrap{width:100%;height:100%;border:0;background:transparent;padding:0;cursor:pointer}.personCard{position:relative;width:100%;height:100%;border-radius:40px;overflow:hidden;border:1px solid rgba(255,255,255,.095);background:#ffffff0a;box-shadow:0 8px 24px #0006;transition:box-shadow .22s ease,border-color .22s ease}.treeCardWrap.isHovered .personCard,.treeCardWrap.isKinHover .personCard{box-shadow:0 8px 24px #00000073,0 0 0 4px #fffffff5;border-color:#ffffffdb}.personCard.isPlaceholder .personPhoto:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 70% 60% at 50% 40%,#00000074,#000000b1 60%,#000000d8)}.personCard.isPlaceholder .personGlass{backdrop-filter:none;-webkit-backdrop-filter:none}.personDeceasedIcon{position:absolute;top:12px;right:12px;width:32px;height:32px;z-index:2;filter:drop-shadow(0 5px 18px rgba(0,0,0,.52))}.personDeceasedIcon svg{display:block;width:100%;height:100%}.personPhoto,.personPhotoPlaceholder{position:absolute;inset:0;background-size:cover;background-position:center}.personPhotoReal{opacity:0;transition:opacity .36s ease}.personPhotoReal.isVisible{opacity:1}.personPhotoPlaceholder{background:linear-gradient(145deg,#2f2f2f,#161616)}.personShade{position:absolute;inset:0;background:linear-gradient(to bottom,#0000 35%,#00000070 72%,#000000a8)}.personGlass{position:absolute;left:0;right:0;bottom:0;width:100%;height:50%;backdrop-filter:blur(32px);-webkit-backdrop-filter:blur(32px);mask-image:linear-gradient(to bottom,transparent 40%,rgb(0,0,0) 75%);-webkit-mask-image:linear-gradient(to bottom,transparent 40%,rgb(0,0,0) 75%);transition:opacity .3s ease}.personName,.personYears{position:absolute;z-index:2;left:14px;right:14px;text-align:center;text-shadow:0 5px 18px rgba(0,0,0,.52)}.cyrillic-u-fix{font-size:.77em;font-weight:500}.personName{bottom:44px;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;font-size:24px;font-weight:400;line-height:1;letter-spacing:.02em;color:#fff}.personNameMaiden{display:block;font-size:inherit;color:#fff9}.personYears{bottom:16px;font-size:18px;color:#fff9}.treeHeader{position:fixed;top:18px;left:50%;transform:translate(-50%);z-index:30;display:flex;align-items:center;justify-content:center;pointer-events:none;filter:drop-shadow(0 4px 24px rgba(0,0,0,1))}.treeHeaderInner{display:flex;flex-direction:column;align-items:center;gap:8px}.treeHeaderSubtitle{font-size:12px;color:#fff9;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;text-transform:uppercase;letter-spacing:.2em}.treeHeaderSurnameWrap{position:relative;height:1.2em;display:flex;align-items:center;justify-content:center}.treeHeaderSurname{font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;font-size:40px;font-weight:400;line-height:1;color:#fff;text-transform:capitalize;letter-spacing:.04em}.treeHeaderSurnameOut{position:absolute;animation:treeHeaderSurnameOut .4s ease-out forwards}.treeHeaderSurnameIn{position:absolute;animation:treeHeaderSurnameIn .4s ease-out forwards}@keyframes treeHeaderSurnameOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-24px)}}@keyframes treeHeaderSurnameIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.treeHeaderDate{font-size:12px;color:#fff9;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;text-transform:uppercase;letter-spacing:.2em;padding-top:4px}.unionDot{position:absolute;width:14px;height:14px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:#fff3;box-shadow:0 9px 20px #0000005c;transition:box-shadow .22s ease,border-color .22s ease,background-color .22s ease}.unionDot.isHighlighted{border-color:#ffffffe6;background:#ffffff52;box-shadow:0 9px 20px #0000005c,0 0 0 5px #ffffffe6}.treeLinksHighlight{opacity:1;transition:opacity .22s ease,stroke .22s ease}.infoPanel{position:fixed;right:12px;top:12px;bottom:12px;width:260px;z-index:30;overflow-y:auto;padding:14px 14px 18px;border-radius:12px;border:1px solid var(--stroke);background:var(--panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);animation:ipFadeIn .18s ease}@keyframes ipFadeIn{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}.ipSection{padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid rgba(255,255,255,.08)}.ipSection:last-child{border-bottom:none;margin-bottom:0}.ipTitle{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px}.ipLine{display:grid;grid-template-columns:100px 1fr;gap:4px;margin-bottom:4px}.ipKey{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.ipValue{font-size:12px;line-height:1.4}.ipSubBlock{display:flex;flex-direction:column;gap:1px;padding:4px 0;border-bottom:1px solid var(--stroke)}.ipSubBlock:last-child{border-bottom:none}.ipValueSub{font-size:11px;color:var(--muted);line-height:1.3}.ipNotes{margin:0;font-size:12px;line-height:1.45;color:#ffffffde}.ipEmpty{color:var(--muted);font-size:11px}.ipFamilyGroup+.ipFamilyGroup{margin-top:6px}.ipFamilyLabel{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px}.ipFamilyItems{display:flex;flex-wrap:wrap;gap:4px}.ipRelBtn{border:1px solid var(--stroke);background:#ffffff12;color:var(--text);border-radius:999px;padding:3px 8px;font-size:11px;font-family:inherit;cursor:pointer}.ipRelBtn:hover{background:#ffffff24}.confirmDeleteModal{width:100%;max-width:340px;padding:24px;border-radius:16px;border:1px solid var(--stroke);background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 24px 48px #00000080;text-align:center;font-size:16px}.confirmDeleteModal p{margin:0 0 18px}.confirmDeleteActions{display:flex;justify-content:center;gap:10px}.confirmDeleteYes{border:1px solid rgba(255,60,60,.3);background:#ff3c3c2e;color:#ff6b6b}.confirmDeleteYes:hover{background:#ff3c3c4d}.cardActions{position:absolute;left:50%;top:100%;transform:translate(-50%);display:flex;gap:8px;padding-top:10px;z-index:5}.cardActionBtn{width:36px;height:36px;border:1px solid var(--stroke);border-radius:50%;background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease}.cardActionBtn:hover{background:#ffffff26}.cardActionDanger:hover{background:#ff3c3c2e;color:#ff6b6b;border-color:#ff3c3c4d}.treeStage.isInteracting .cardActions{display:none}.treeCardWrap.isSelected{z-index:7;contain:layout style;overflow:visible;transform:scale(1.045)}.treeCardWrap.isHovered,.treeCardWrap.isKinHover{z-index:6}.treeCardWrap.isSelected .personCard{box-shadow:0 8px 24px #00000080,0 0 60px 16px #ffffff2e;border-color:#ffffff38}.addPopover{position:fixed;min-width:180px;padding:8px 0;border-radius:12px;border:1px solid var(--stroke);background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 12px 32px #00000080;z-index:50}.addPopoverTitle{padding:6px 14px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.addPopoverItem{display:block;width:100%;padding:8px 14px;border:none;background:transparent;color:var(--text);font-size:14px;font-family:inherit;text-align:left;cursor:pointer}.addPopoverItem:hover{background:#ffffff14}.popoverDivider{height:1px;margin:6px 0;background:var(--stroke)}.popoverDanger{color:#ff6b6b}.popoverDanger:hover{background:#ff3c3c1a}.addModalOverlay{position:fixed;inset:0;z-index:60;background:#0009;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px}.addModal{width:100%;max-width:400px;max-height:90vh;overflow-y:auto;border-radius:16px;border:1px solid var(--stroke);background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 24px 48px #00000080;padding:20px 24px}.addModalTitle{margin:0 0 18px;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;font-size:22px;font-weight:500}.addModalForm{display:flex;flex-direction:column;gap:14px}.addModalField label{display:block;margin-bottom:4px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.addModalInput{width:100%;padding:10px 12px;border:1px solid var(--stroke);border-radius:10px;background:#ffffff0f;color:var(--text);font-size:14px;font-family:inherit}.addModalInput::placeholder{color:var(--muted);opacity:.8}.addModalInput:focus{outline:none;border-color:#ffffff40}.addModalRadioGroup{display:flex;gap:12px;flex-wrap:wrap}.addModalRadio{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--text);cursor:pointer}.addModalRadio input{accent-color:rgba(255,255,255,.8)}.addModalPhotoRow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.addModalFileInput{font-size:13px;color:var(--muted)}.addModalFileInput::file-selector-button{margin-right:10px;padding:6px 10px;border:1px solid var(--stroke);border-radius:8px;background:#ffffff14;color:var(--text);font-size:12px;cursor:pointer}.addModalPhotoPreview{width:64px;height:64px;border-radius:10px;background-size:cover;background-position:center;border:1px solid var(--stroke)}.addModalPhotoPlaceholder{font-size:13px;color:var(--muted)}.addModalActions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px;padding-top:16px;border-top:1px solid rgba(255,255,255,.08)}.addModalBtn{padding:10px 18px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit}.addModalBtnSecondary{border:1px solid var(--stroke);background:#ffffff0f;color:var(--text)}.addModalBtnSecondary:hover{background:#ffffff1f}.addModalBtnPrimary{border:none;background:#ffffff2e;color:var(--text)}.addModalBtnPrimary:hover{background:#ffffff40}.editModal{width:100%;max-width:720px;max-height:90vh;display:flex;flex-direction:column;border-radius:16px;border:1px solid var(--stroke);background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 24px 48px #00000080;overflow:hidden}.editModalBody{display:grid;grid-template-columns:1fr 1fr;gap:0;flex:1;overflow-y:auto;min-height:0}.editModalFields{padding:20px 24px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}.editField{display:grid;grid-template-columns:110px 1fr;align-items:center;gap:8px}.editLabel{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);white-space:nowrap}.editModalPhoto{padding:20px 20px 12px;display:flex;flex-direction:column;gap:10px;border-left:1px solid var(--stroke)}.editPhotoEmpty{flex:1;display:grid;place-items:center;color:var(--muted);font-size:14px;border-radius:12px;background:#0a0a0a;min-height:200px}.editModalPhoto .cropperWrap{margin-top:0;flex:1;min-height:260px;height:auto}.editModalPhoto .addModalFileInput{flex-shrink:0}.editModalActions{display:flex;justify-content:flex-end;gap:10px;padding:14px 24px;border-top:1px solid rgba(255,255,255,.08);flex-shrink:0}@media(max-width:640px){.editModal{max-width:100%}.editModalBody{grid-template-columns:1fr}.editModalPhoto{border-left:none;border-top:1px solid var(--stroke)}}.cropperWrap{position:relative;width:100%;height:340px;overflow:hidden;border-radius:12px;background:#0a0a0a;cursor:grab;touch-action:none;margin-top:10px}.cropperWrap:active{cursor:grabbing}.cropperImg{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.cropperFrame{position:absolute;border:2px solid rgba(255,255,255,.8);border-radius:4px;box-shadow:0 0 0 9999px #0000008c;pointer-events:none;z-index:2}.cropperGridH,.cropperGridV{position:absolute;inset:0}.cropperGridH:before,.cropperGridH:after{content:"";position:absolute;left:0;right:0;height:1px;background:#ffffff40}.cropperGridH:before{top:33.333%}.cropperGridH:after{top:66.666%}.cropperGridV{background-image:linear-gradient(#ffffff40,#ffffff40),linear-gradient(#ffffff40,#ffffff40),linear-gradient(#ffffff40,#ffffff40);background-size:1px 100%;background-position:25% 0,50% 0,75% 0;background-repeat:no-repeat}.noBlur .personGlass{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;transition:none}.noBlur .infoPanel,.noBlur .cardActionBtn,.noBlur .addPopover,.noBlur .spacingPopover,.noBlur .addModalOverlay,.noBlur .addModal,.noBlur .editModal,.noBlur .confirmDeleteModal{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.noBlur .infoPanel,.noBlur .cardActionBtn,.noBlur .addPopover,.noBlur .spacingPopover,.noBlur .addModal,.noBlur .editModal,.noBlur .confirmDeleteModal{background:#121212f5}.noBlur .addModalOverlay{background:#000000b3}.blurToggle{display:flex;align-items:center;gap:5px;cursor:pointer;font-size:11px;color:var(--muted);white-space:nowrap;-webkit-user-select:none;user-select:none}.blurToggle input{accent-color:rgba(255,255,255,.7);margin:0;cursor:pointer}
