:root{--bg: #101010;--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%;min-height:100vh;min-height:100dvh;height:100%;min-width:320px;background:var(--bg);color:var(--text);font-family:Alegreya Sans,ui-sans-serif,system-ui,sans-serif;overscroll-behavior:none}.appRoot{width:100%;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;overflow:hidden;display:flex;flex-direction:column;background:var(--bg)}.treePage{width:100%;flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.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))}.creditsBar{position:fixed;top:12px;right:12px;z-index:30;display:flex;flex-direction:row;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;width:max-content;max-width:calc(100vw - 24px);filter:drop-shadow(0 16px 56px rgba(0,0,0,.85))}.creditsBarSubtitle{font-size:12px;color:#fff9;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;text-transform:uppercase;letter-spacing:.2em;padding:0;margin:0;line-height:1.2;white-space:nowrap}.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}a.creditsBarAuthor.toolbarBtn{color:#fff;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;font-size:12px;font-weight:500;line-height:1.2;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;white-space:nowrap}.toolbarCheckbox{display:flex;align-items:center;gap:4px;color:var(--text);font:500 12px/1 Alegreya Sans,system-ui,sans-serif;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--stroke);background:#ffffff0f;border-radius:8px;padding:6px 10px}.toolbarCheckbox:hover{background:#ffffff1f}.toolbarCheckbox input{margin:0;accent-color:#fff}.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}.layoutSchemePopover{position:absolute;top:calc(100% + 8px);left:0;min-width:300px;max-width:min(380px,calc(100vw - 32px));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}.layoutSchemeHint{margin:0;font-size:11px;line-height:1.4;color:var(--muted)}.layoutSchemeSelectLabel{font-size:11px;font-weight:600;color:var(--muted);margin-top:2px}.layoutSchemeSelect{width:100%;padding:8px 10px;border-radius:8px;border:1px solid var(--stroke);background:#ffffff0f;color:var(--text);font:500 13px/1.2 Alegreya Sans,system-ui,sans-serif;cursor:pointer}.layoutSchemeVariantHint{margin:-4px 0 0;font-size:11px;line-height:1.35;color:var(--muted)}.layoutSchemeCustom{display:flex;flex-direction:column;gap:6px;padding-top:6px;margin-top:2px;border-top:1px solid var(--stroke)}.layoutSchemeCustomTitle{font-size:11px;font-weight:700;color:var(--text)}.layoutSchemeCheck{display:flex;align-items:flex-start;gap:8px;font-size:12px;line-height:1.35;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.layoutSchemeCheck input{margin-top:2px;accent-color:#6366f1;flex-shrink:0}.treeStage{width:100%;flex:1;min-height:0;position:relative;overflow:hidden;touch-action:none;overscroll-behavior:none}.treeStage *{touch-action:none}.treeWorld{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;backface-visibility:hidden;--kin-ring-appear-duration: .16s;--kin-ring-fade-out-duration: 4.5s}.treeLinks,.treeNodes{position:absolute;left:0;top:0}.orderDropOverlay{position:absolute;left:0;top:0;pointer-events:none;z-index:5}.orderDropOverlaySlots{pointer-events:none;z-index:8}.orderArrowBar{position:absolute;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:28px;background:#0000008c;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 20px #0006;pointer-events:auto;z-index:10}.orderArrowBtn{width:72px;height:72px;display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:#ffffff1a;color:#ffffffe6;font-size:34px;font-weight:600;cursor:pointer;transition:background .1s ease,color .1s ease,transform .1s ease;padding:0;line-height:1}.orderArrowBtn:hover:not(:disabled){background:#ffffff38;color:#fff;transform:scale(1.1)}.orderArrowBtn:active:not(:disabled){transform:scale(.92);background:#ffffff4d}.orderArrowBtn:disabled{opacity:.2;cursor:default}.orderArrowBtn:focus-visible{outline:3px solid rgba(255,255,255,.9);outline-offset:3px}.orderArrowFlip{background:#fde0471f;color:#fef08af2;font-size:32px}.orderArrowFlip:hover:not(:disabled){background:#fde04747;color:#fde047}.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;width:64px;height:64px;transform:translate(-50%,-50%);border:2px solid rgba(255,255,255,.92);border-radius:999px;background:radial-gradient(circle at 50% 50%,#ffffff38 0 42%,#ffffff05 62% 100%);transition:transform .12s ease,background .12s ease,box-shadow .12s ease;box-shadow:inset 0 0 0 1px #fff3,0 12px 30px #00000052;cursor:pointer;z-index:9}.orderDropPlaceholder:hover{transform:translate(-50%,-50%) scale(1.1);background:radial-gradient(circle at 50% 50%,#ffffff57 0 42%,#ffffff14 62% 100%);box-shadow:inset 0 0 0 1px #ffffff52,0 16px 36px #0000006b}.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}@media(hover:hover)and (pointer:fine){.treeStage.isOrderEdit .treeCardWrap:hover{transform:none;z-index:auto}}.treeStage.isOrderEdit .treeCardWrap.isHovered,.treeStage.isOrderEdit .treeCardWrap.isKinHover{transform:none;z-index:auto}.treeStage.isOrderEdit .personCardWrap{cursor:pointer}.treeStage.isOrderEdit .treeCardWrap.isOrderPick{z-index:7;filter:drop-shadow(0 12px 30px rgba(0,0,0,.42))}.treeStage.isOrderEdit .treeCardWrap.isOrderPick .personCardWrap{transform:scale(1.03);transition:transform .2s cubic-bezier(.2,.9,.2,1)}.treeStage.isOrderEdit .treeCardWrap.isOrderPick:after{content:"";position:absolute;inset:0;border-radius:40px;pointer-events:none;z-index:4;box-shadow:inset 0 0 0 2px #fffffff5,0 0 0 2px #fffffff5}.treeStage.isOrderEdit .treeCardWrap.isPartnerSwapHot:after{content:"";position:absolute;inset:-3px;border-radius:43px;pointer-events:none;z-index:4;box-shadow:inset 0 0 0 3px #facc15f2,0 0 24px #facc1559}.treeCardWrap{position:absolute;contain:layout style;overflow:visible;will-change:transform;transition:transform .22s cubic-bezier(.2,.9,.2,1)}@keyframes kinRingAppearOnHover{0%{opacity:0}to{opacity:1}}.treeCardWrap:before{content:"";position:absolute;inset:0;border-radius:40px;pointer-events:none;z-index:3;opacity:0;animation:none;transition:opacity var(--kin-ring-fade-out-duration) cubic-bezier(.05,.42,.06,1),box-shadow var(--kin-ring-fade-out-duration) cubic-bezier(.05,.42,.06,1);box-shadow:none}.treeCardWrap.isHovered:not(.isSelected):before{opacity:1;box-shadow:inset 0 0 0 2px #fffffff5,0 0 0 2px #fffffff5;animation:kinRingAppearOnHover var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1) both;transition:none}.treeCardWrap.isKinHover:not(.isHovered):not(.isSelected):before{opacity:1;box-shadow:inset 0 0 0 2px #fffffff5,0 0 0 2px #fffffff5;animation:kinRingAppearOnHover var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1) both;transition:none}.treeCardWrap:after{content:"";position:absolute;inset:0;border-radius:40px;pointer-events:none;z-index:4;opacity:0;animation:none;transition:opacity .16s ease,box-shadow .16s ease;box-shadow:none}.treeCardWrap.isSelected:after{opacity:1;box-shadow:inset 0 0 0 2px #fffffff5,0 0 0 2px #fffffff5;transition:none}.treeStage.isInteracting .treeCardWrap:before,.treeStage.isInteracting .treeCardWrap:after{opacity:0!important;box-shadow:none!important}@media(hover:hover)and (pointer:fine){.treeCardWrap:hover{z-index:6}}.treeCardWrap.isHovered,.treeCardWrap.isKinHover{z-index:6}.treeStage.isInteracting .treeWorld{pointer-events:none}.treeStage.isInteracting .treeCardWrap{transition:none!important}@media(hover:hover)and (pointer:fine){.treeStage.isInteracting .treeCardWrap:hover{transform:none;z-index:auto}}.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 .treeCardWrap.isSelected:after{box-shadow:inset 0 0 0 2px #fffffff5,0 0 0 2px #fffffff5}.treeStage.lowZoom .treeCardWrap.isHovered:not(.isSelected):before{box-shadow:inset 0 0 0 2px #fffffff5,0 0 0 2px #fffffff5}.treeStage.lowZoom .treeCardWrap.isKinHover:not(.isHovered):not(.isSelected):before{box-shadow:inset 0 0 0 2px #fffffff5,0 0 0 2px #fffffff5}.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}@media(hover:hover)and (pointer:fine){.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:not(.isSelected) .personCard{box-shadow:0 8px 24px #00000073;border-color:#ffffffdb;transition:box-shadow var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1),border-color var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1)}.treeCardWrap.isKinHover:not(.isHovered):not(.isSelected) .personCard{box-shadow:0 8px 24px #00000073;border-color:#ffffffdb;transition:box-shadow var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1),border-color var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1)}.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;font-variant-emoji:text}.personYearsSep{display:inline-block;padding:0 .3em}.treeHeader{position:absolute;left:0;right:0;top:18px;z-index:30;pointer-events:auto;display:flex;align-items:center;justify-content:center;width:100%;padding:0;margin:0;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;filter:drop-shadow(0 4px 24px rgba(0,0,0,1))}.treeHeader:focus-visible{outline:2px solid rgba(255,255,255,.5);outline-offset:4px}.treeHeaderInner{display:flex;flex-direction:column;align-items:center;gap:0;max-width:100%;width:100%;padding:0;margin:0}.treeHeaderSubtitle{font-size:12px;color:#fff9;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;text-transform:uppercase;letter-spacing:.2em;padding:0;margin-bottom:-4px;line-height:1.2}.treeHeaderSurnameWrap{position:relative;width:max-content;max-width:100%;margin:0 auto;display:grid;grid-template-rows:auto;grid-template-columns:1fr;align-items:center;justify-items:center;padding:0;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.treeHeaderSurnameWrap::-webkit-scrollbar{display:none}.treeHeaderSurname{font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;font-size:clamp(22px,7.5vw,40px);font-weight:400;line-height:1.15;color:#fff;text-transform:capitalize;letter-spacing:.04em;white-space:nowrap;padding:0;margin:0}.treeHeaderSurnameOut{grid-area:1 / 1;animation:treeHeaderSurnameOut .4s ease-out forwards}.treeHeaderSurnameIn{grid-area:1 / 1;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:0;margin:0;line-height:1.2}.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}@keyframes treeLinkHighlightIn{0%{opacity:0}to{opacity:1}}.treeLinksHighlight{opacity:1;animation:treeLinkHighlightIn var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1) both}.infoPanel{--ip-key-width: 7rem;position:fixed;left:calc(12px + env(safe-area-inset-left,0px));right:calc(12px + env(safe-area-inset-right,0px));bottom:0;width:auto;height:30vh;min-height:140px;max-height:min(380px,48vh);padding:0 0 env(safe-area-inset-bottom,0px);border-radius:18px 18px 0 0;border:1px solid var(--stroke);border-bottom:none;background:var(--panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 -8px 32px #00000059;overflow:hidden;transform:translate3d(0,100%,0);opacity:0;pointer-events:none;will-change:transform,opacity;transition:transform .55s cubic-bezier(.28,.82,.22,1),opacity .42s cubic-bezier(.28,.82,.22,1);z-index:40}.infoPanel.infoPanel--sheetOpen{transform:translateZ(0);opacity:1;pointer-events:auto}.ipColumns{display:flex;align-items:stretch;gap:0;height:100%;padding:4px 0 0;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;scrollbar-width:none}.ipColumns::-webkit-scrollbar{display:none}.ipCol{flex:1 0 0%;min-width:220px;padding:14px 16px 16px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scroll-snap-align:start}.ipCol+.ipCol{border-left:1px solid rgba(255,255,255,.08)}.infoPanel .ipSectionLabel{color:var(--muted);font-size:12px;line-height:1.35;text-transform:uppercase;letter-spacing:.04em;margin-top:14px;margin-bottom:8px}.infoPanel .ipSectionLabel:first-child{margin-top:0}.infoPanel .ipMoreGroup+.ipMoreGroup{margin-top:10px}.infoPanel .ipLine{display:grid;grid-template-columns:var(--ip-key-width) minmax(0,1fr);gap:8px 10px;align-items:start;margin-bottom:6px}.infoPanel .ipKey{margin:0;font-size:12px;line-height:1.42;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.infoPanel .ipValue{font-size:14px;line-height:1.42;min-width:0}.infoPanel .ipValue--family{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.infoPanel .ipValueSub{font-size:12px}.infoPanel .ipEmpty{font-size:13px}.infoPanel .ipRelBtn{padding:4px 10px;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;font-size:12px;font-weight:400;line-height:1;letter-spacing:.02em;text-transform:none}@media(hover:none)and (pointer:coarse){.infoPanel{height:40vh;max-height:40vh;min-height:120px}.ipColumns{flex-direction:column;align-items:stretch;overflow-x:hidden;overflow-y:auto;scroll-snap-type:none}.ipCol{flex:0 0 auto;min-width:0;width:100%;overflow-y:visible}.ipCol+.ipCol{border-left:none;border-top:1px solid rgba(255,255,255,.08)}}@media(hover:none),(pointer:coarse){.treeStage{position:fixed;inset:0;width:auto;flex:none;z-index:0;overflow:hidden}.treeHeader{z-index:31;top:0;padding-top:calc(18px + env(safe-area-inset-top,0px))}.toolbar{top:calc(12px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px))}.creditsBar{top:auto;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:50%;right:auto;transform:translate(-50%);justify-content:center;max-width:calc(100vw - 24px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px))}}@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}.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.isSelected .personCard{box-shadow:0 8px 24px #00000080,0 0 60px 16px #ffffff2e;border-color:#ffffff38}.treeCardWrap.isSelected.isHovered .personCard{box-shadow:0 8px 24px #00000080,0 0 60px 16px #ffffff2e;border-color:#ffffffdb;transition:box-shadow var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1),border-color var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1)}.treeCardWrap.isSelected.isKinHover:not(.isHovered) .personCard{box-shadow:0 8px 24px #00000080,0 0 60px 16px #ffffff2e;border-color:#ffffffdb;transition:box-shadow var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1),border-color var(--kin-ring-appear-duration) cubic-bezier(.2,.95,.28,1)}.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:1024px;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}.editModalTitle{margin:0;padding:20px 24px 0;font-family:Alegreya Sans SC,Alegreya Sans,sans-serif;font-size:22px;font-weight:500}.editModalBody{display:grid;grid-template-columns:2fr 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:1fr 3fr;align-items:center;gap:8px}.editFieldNameRow{display:flex;align-items:center;gap:12px;min-width:0}.editFieldNameRow .addModalInput{flex:1;min-width:0;width:auto}.editFieldNameRow .addModalRadio{flex-shrink:0;white-space:nowrap}.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}.editPhotoButtons{display:flex;align-items:center;gap:8px;flex-shrink:0}.editPhotoButtons .addModalFileInput{flex:1;min-width:0}.editPhotoRemoveBtn{padding:4px 10px;border:none;border-radius:6px;background:#dc3c3c26;color:#e55;font-size:12px;cursor:pointer;white-space:nowrap;transition:background .15s}.editPhotoRemoveBtn:hover{background:#dc3c3c4d}.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 .layoutSchemePopover,.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 .layoutSchemePopover,.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}
