
@import url('https://fonts.googleapis.com/css2?family=Golos+Text:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#f6f7f4;--white:#fff;--ink:#243c32;--muted:#7d8780;--line:#e4e8e1;--green:#2d624c;--soft:#edf3ec;--gold:#bb9b67;--shadow:0 16px 50px #243c3210}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'Golos Text',sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #a3bfa6;outline-offset:3px}button{border:0;background:none;color:inherit}a{color:var(--green)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Manrope,'Golos Text',sans-serif}svg{flex-shrink:0}button svg{pointer-events:none}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:11px 17px;border-radius:12px;background:var(--green);color:white;font-weight:500}.btn:hover{background:#214e3b}.btn.light{background:white;color:var(--ink);border:1px solid var(--line)}.btn.light:hover{background:var(--soft)}.btn.soft{background:var(--soft);color:var(--green)}.btn.danger{color:#aa554d;background:#fff1ee}.muted{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:10px;font-weight:600;color:var(--muted)}.logo{display:flex;align-items:center;gap:12px;text-align:left}.mark{width:40px;height:40px;display:grid;place-items:center;background:var(--green);color:#fff;border-radius:14px}.logo strong{font:800 18px Manrope,sans-serif;letter-spacing:-.6px}.logo small{display:block;font-size:10px;color:var(--muted);letter-spacing:1px;margin-top:3px}.app{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:238px;background:#fff;border-right:1px solid var(--line);padding:30px 20px;display:flex;flex-direction:column;z-index:5}.sidebar .logo{padding:0 10px 40px}.nav{display:grid;gap:6px}.nav button{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:14px 16px;border-radius:12px;color:#7d8780;font-weight:500}.nav button.active{color:var(--green);background:var(--soft)}.badge{background:#dfebdd;padding:3px 7px;border-radius:6px;font-size:10px;margin-left:auto}.sidebar-bottom{margin-top:auto}.family-note{padding:20px 14px;border-bottom:1px solid var(--line);margin-bottom:18px;line-height:1.65;font-size:12px}.family-note .icon{color:var(--gold);margin-bottom:10px}.account{display:flex;gap:10px;align-items:center;padding:8px}.account strong{font-size:12px;display:block}.account small{font-size:10px;color:var(--muted)}.account button{margin-left:auto;padding:6px}.avatar{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#e9ede6;font-weight:500;color:#68806c}.main{margin-left:238px}.topbar{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 42px;background:#ffffff90;border-bottom:1px solid var(--line);gap:15px}.crumb{font-size:12px;color:var(--muted)}.crumb span{color:var(--ink);margin-left:12px}.top-actions{display:flex;gap:16px;align-items:center}.private{display:flex;gap:7px;align-items:center;font-size:11px;color:var(--muted)}.private .icon{width:14px}.demo-pill{background:#f0ece1;color:#9a8057;font-size:10px;padding:6px 9px;border-radius:7px}.content{padding:36px 42px}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:29px}.heading h1{font-size:30px;letter-spacing:-1.2px;margin-bottom:8px}.heading p{font-size:13px;color:var(--muted)}.heading-actions{display:flex;gap:10px}.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}.tabs{display:flex;gap:4px;border:1px solid var(--line);background:#ecefe9;padding:4px;border-radius:11px}.tabs button{padding:8px 13px;border-radius:8px;font-size:12px;display:flex;align-items:center;gap:7px}.tabs button.active{background:#fff;box-shadow:0 2px 5px #263b3210}.tabs .icon{height:15px;width:15px}.search{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:0 12px;width:265px}.search .icon{width:16px;color:#929e92}.search input{border:0;background:none;outline:0;min-width:0;width:100%;padding:11px 0;font-size:12px}.canvas{position:relative;border:1px solid var(--line);border-radius:20px;background-color:#fcfdfb;background-image:radial-gradient(#dce2d8 1px,transparent 1px);background-size:19px 19px;overflow:hidden;height:570px;box-shadow:0 4px 18px #243c3203}.canvas-meta{position:absolute;top:22px;left:24px;z-index:2;font-size:10px;letter-spacing:1.2px;color:var(--muted);display:flex;gap:7px;align-items:center}.dot{width:6px;height:6px;border-radius:50%;background:#8ba688;display:inline-block}.tree-viewport{width:100%;height:100%;overflow:auto;touch-action:pan-x pan-y}.tree-stage{width:900px;height:535px;position:relative;transform-origin:top left;margin:0 auto}.connections{position:absolute;inset:0;width:900px;height:535px;pointer-events:none}.connections path{stroke:#bccbbc;stroke-width:1.6;fill:none}.node{position:absolute;width:208px;height:109px;border:1px solid #e2e8de;background:#fff;border-radius:14px;padding:17px;text-align:left;box-shadow:0 7px 15px #2e50320a;transition:box-shadow .2s, border-color .2s}.node:hover{box-shadow:0 9px 25px #2e50321a;border-color:#8faa90}.node.primary{border:1.5px solid #5f8569;box-shadow:0 7px 20px #2e503213}.node .row{display:flex;align-items:center;gap:11px}.portrait{width:43px;height:43px;border-radius:50%;background:#edf0e8;display:grid;place-items:center;color:#81977c}.portrait.gold{background:#eee9de;color:#a08c66}.node strong{font-size:12px;font-weight:600;line-height:1.5;display:block}.node small{font-size:10px;color:var(--muted);display:block;margin-top:3px}.node-foot{margin-top:10px;font-size:9px;color:#81907e;display:flex;align-items:center;gap:6px}.node-foot .icon{width:11px;height:11px}.node-placeholder{border-style:dashed;box-shadow:none;background:#fbfcf9;color:#8c998a}.node-placeholder strong{font-weight:400}.zoom-controls{position:absolute;bottom:18px;left:20px;display:flex;align-items:center;gap:2px;background:#fff;padding:5px;border:1px solid var(--line);border-radius:11px;box-shadow:0 2px 10px #00000004}.zoom-controls button{min-width:34px;height:32px;display:grid;place-items:center}.zoom-controls span{font-size:10px;min-width:39px;text-align:center;color:var(--muted)}.canvas-help{position:absolute;right:20px;bottom:23px;font-size:10px;color:var(--muted);background:#fcfdfbdb;padding:6px}.legend{display:flex;align-items:center;gap:24px;margin-top:17px;color:var(--muted);font-size:10px}.legend span{display:flex;align-items:center;gap:7px}.legend i{width:8px;height:8px;border-radius:50%;border:1px solid #bac9b5}.legend i.filled{background:#759273;border:0}.below{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;margin-top:30px}.info-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;display:flex;gap:17px}.info-card .info-icon{width:42px;height:42px;background:var(--soft);border-radius:13px;display:grid;place-items:center;color:#6c8968;flex-shrink:0}.info-card h3{font-size:13px;margin-bottom:7px}.info-card p{font-size:11px;line-height:1.8;color:var(--muted)}.info-card button{padding:0;color:var(--green);margin-top:11px;font-size:11px;font-weight:600}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.empty{padding:65px 20px;text-align:center;border:1px dashed #d5dfd1;border-radius:18px;background:#fff}.empty .icon{width:32px;height:32px;margin-bottom:12px;color:#90a88a}.empty h3{margin-bottom:8px}.empty p{line-height:1.8;color:var(--muted);font-size:12px}.person-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));gap:16px}.person-item{border:1px solid var(--line);border-radius:16px;background:white;padding:22px;text-align:left}.person-item .portrait{margin-bottom:16px;width:54px;height:54px}.person-item h3{font-size:14px;margin-bottom:6px}.person-item p{font-size:12px;color:var(--muted);line-height:1.8}.list-row{background:white;padding:20px;border:1px solid var(--line);border-radius:14px;margin-bottom:12px;display:flex;justify-content:space-between;gap:20px;align-items:center}.list-row h3{font-size:14px;margin-bottom:7px}.list-row p{font-size:12px;line-height:1.8;color:var(--muted)}.list-actions{display:flex;gap:8px;flex-shrink:0}.status{display:inline-block;padding:5px 8px;border-radius:7px;font-size:10px;background:#f3eee1;color:#9b8359}.status.approved{background:var(--soft);color:var(--green)}.status.rejected{background:#fff0eb;color:#aa554d}.overlay{position:fixed;inset:0;background:#132d2545;backdrop-filter:blur(3px);z-index:25;display:flex;justify-content:flex-end}.drawer{width:470px;max-width:100%;height:100%;background:#fff;overflow-y:auto;padding:30px;box-shadow:-10px 0 60px #102a2520;animation:slide .23s ease}.drawer-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.close{width:36px;height:36px;background:var(--bg);border-radius:50%;font-size:23px}.person-cover{height:116px;border-radius:16px;background:linear-gradient(135deg,#edf1e7,#d9e3d2);position:relative;margin-bottom:51px}.big-portrait{position:absolute;bottom:-35px;left:25px;width:88px;height:88px;background:#f7f7f0;border:5px solid #fff;border-radius:50%;display:grid;place-items:center;color:#81977c}.big-portrait .icon{width:40px;height:40px}.person-title{font-size:25px;letter-spacing:-.8px;line-height:1.35}.dates{margin:12px 0 23px;color:var(--muted);font-size:12px}.quote{padding:16px 0 21px;border-bottom:1px solid var(--line);font-size:14px;font-family:Georgia,serif;font-style:italic;color:#7e906f}.facts{display:grid;gap:20px;margin:25px 0}.fact{display:flex;gap:12px;align-items:flex-start}.fact .icon{color:#95a28d;width:17px}.fact label{font-size:10px;color:var(--muted);display:block;margin-bottom:5px}.fact span{font-size:13px;line-height:1.6}.bio{border-top:1px solid var(--line);padding-top:22px;margin-top:22px}.bio h3{font-size:13px;margin-bottom:10px}.bio p{color:#71806f;line-height:1.9;font-size:12px}.related{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}.related button{background:var(--soft);border-radius:9px;padding:10px 13px;font-size:11px}.form-field{display:block;margin-bottom:17px}.form-field>span{display:block;font-size:11px;color:#667561;margin-bottom:7px}.form-field input,.form-field textarea,.form-field select{width:100%;border:1px solid #dfe6db;padding:12px 13px;border-radius:10px;background:#fdfefb;color:var(--ink);outline:none}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:#6b926d;box-shadow:0 0 0 3px #eaf2e6}.form-field textarea{resize:vertical;min-height:95px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-note{font-size:11px;line-height:1.8;padding:12px 14px;background:var(--soft);border-radius:10px;margin-bottom:22px;color:#71816a}.toggle-row{display:flex;align-items:center;gap:9px;font-size:12px;margin-bottom:17px}.toggle-row input{accent-color:var(--green)}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#294f3d;color:white;border-radius:13px;padding:15px 23px;z-index:100;box-shadow:var(--shadow);max-width:90%;line-height:1.5;font-size:12px}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:#fff}.login-art{position:relative;display:flex;flex-direction:column;justify-content:center;padding:65px 11%;background:#eaf0e5;overflow:hidden}.login-art:after{content:'';position:absolute;width:500px;height:500px;border:1px solid #d7e2cf;border-radius:50%;top:15%;left:-100px;pointer-events:none}.login-art .logo{position:absolute;top:42px;left:11%}.login-art h1{font-size:48px;line-height:1.15;letter-spacing:-2px;margin-top:85px;position:relative;z-index:1;max-width:440px}.login-art p{line-height:1.9;color:#71816c;max-width:350px;margin-top:22px;font-size:13px}.mini-tree{position:relative;height:205px;margin-top:30px;max-width:390px;z-index:1}.mini-person{position:absolute;background:#ffffffd9;border:1px solid white;border-radius:12px;padding:13px 18px;display:flex;align-items:center;gap:10px;box-shadow:0 8px 22px #35513709;font-size:11px}.mini-person .avatar{width:30px;height:30px}.mini-line{position:absolute;left:85px;top:64px;width:210px;height:70px;border-bottom:1px solid #a3b79b;border-left:1px solid #a3b79b;border-right:1px solid #a3b79b;border-radius:0 0 15px 15px}.login-panel{display:flex;align-items:center;justify-content:center;padding:40px}.login-box{width:350px;max-width:100%}.login-box h2{font-size:28px;letter-spacing:-1px;margin:17px 0 10px}.login-box>p{font-size:12px;color:var(--muted);line-height:1.8;margin-bottom:28px}.login-box .btn{width:100%}.login-demo{margin-top:25px;border-top:1px solid var(--line);padding-top:22px}.login-demo p{font-size:10px;line-height:1.8;color:var(--muted);margin-bottom:12px}.demo-buttons{display:flex;gap:8px}.demo-buttons .btn{font-size:11px;padding:10px}.error{font-size:11px;color:#b55e50;margin:10px 0}.mobile-logo{display:none}.hidden{display:none!important}@keyframes slide{from{transform:translateX(30px);opacity:.3}to{transform:translateX(0);opacity:1}}@media(min-width:1550px){.content{max-width:1390px;margin:auto}.canvas{height:620px}.tree-stage{margin-top:20px}}@media(max-width:1150px){.sidebar{width:205px;padding:25px 12px}.main{margin-left:205px}.topbar{padding:0 25px}.content{padding:28px 25px}.heading{align-items:flex-start}.heading h1{font-size:26px}.heading-actions .btn{font-size:11px}.canvas{height:570px}.below{grid-template-columns:1fr}.login-art h1{font-size:40px}}@media(max-width:760px){.sidebar{inset:auto 0 0;width:100%;height:71px;padding:6px 12px;border-right:0;border-top:1px solid var(--line)}.sidebar .logo,.sidebar-bottom{display:none}.nav{display:flex;justify-content:space-around;gap:0}.nav button{width:auto;flex:1;display:flex;flex-direction:column;gap:5px;padding:7px 3px;font-size:9px;border-radius:10px;position:relative}.nav button .icon{width:19px;height:19px}.nav .badge{position:absolute;top:0;right:10px;padding:2px 5px;font-size:8px}.main{margin:0;padding-bottom:80px}.topbar{height:68px;padding:0 20px}.crumb{display:none}.mobile-logo{display:flex}.mobile-logo .mark{width:32px;height:32px;border-radius:10px}.mobile-logo strong{font-size:16px}.mobile-logo small{display:none}.private{font-size:0;gap:0}.private .icon{width:15px}.top-actions{gap:10px}.top-actions>button{display:block!important;font-size:11px}.content{padding:25px 16px}.heading{margin-bottom:24px;display:block}.heading h1{font-size:27px}.heading p{font-size:12px;line-height:1.7}.heading-actions{margin-top:19px}.heading-actions .btn{font-size:12px;min-height:42px}.toolbar{flex-wrap:wrap;gap:13px}.search{width:100%;order:-1}.tabs{width:100%}.tabs button{flex:1;justify-content:center}.canvas{height:490px;border-radius:16px}.tree-stage{margin:0}.canvas-meta{top:16px;left:16px;font-size:8px}.canvas-help{display:none}.zoom-controls{bottom:14px;left:14px}.legend{gap:17px;font-size:9px}.below{margin-top:24px;gap:12px}.info-card{padding:20px}.info-card p{font-size:11px}.drawer{padding:23px}.list-row{align-items:flex-start;flex-direction:column}.list-actions{width:100%;flex-wrap:wrap}.login{grid-template-columns:1fr}.login-art{padding:95px 27px 24px;min-height:260px}.login-art .logo{left:27px;top:25px}.login-art h1{font-size:32px;letter-spacing:-1px;margin-top:0;max-width:310px}.login-art p{margin-top:13px;font-size:11px}.mini-tree{display:none}.login-panel{padding:30px 24px 45px}.login-box{width:100%}.login-box h2{font-size:25px}.demo-pill{font-size:9px}.form-row{gap:10px}.person-grid{grid-template-columns:1fr 1fr}.person-item{padding:16px}.person-item h3{font-size:12px}}

.below[hidden] { display: none; }
.tree-stage { margin: 0; }
#tree-size { margin: 0 auto; position: relative; overflow: hidden; }
.tree-viewport { cursor: grab; }
.tree-viewport.dragging { cursor: grabbing; user-select: none; }
.node .portrait { flex: 0 0 auto; }
.node strong, .person-item h3, .drawer h2, .related button { overflow-wrap: anywhere; }
.node strong { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.node-foot { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.connections { width: auto; height: auto; }
.connections .spouse-line { stroke: #ad8b55; stroke-dasharray: 5 4; }
.drawer h2 { margin-bottom: 15px; }
.drawer .facts { margin: 20px 0; }
.drawer .fact { min-width: 0; }
.fact dt { color: var(--muted); font-size: 11px; margin-bottom: 4px; }
.fact dd { margin: 0; overflow-wrap: anywhere; white-space: pre-wrap; }
.drawer .related { margin-top: 10px; }
.drawer-actions { flex-wrap: wrap; margin-top: 20px; }
.big-portrait img, .proposal-photo { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.proposal-photo { max-height: 250px; object-fit: contain; border-radius: 12px; margin-top: 14px; }
.relation-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.relation-row select, .form-row input { min-width: 0; width: 100%; }
#personform fieldset { min-width: 0; padding: 12px; margin: 14px 0; border: 1px solid var(--line); border-radius: 12px; }
.remove-photo { display: block; font-size: 13px; margin: 10px 0; }
#personform > button[type=submit], #userform > button[type=submit] { width: 100%; }
button:disabled { opacity: .65; cursor: wait; }
@media (max-width: 440px) {
  .drawer .facts { grid-template-columns: minmax(0, 1fr); }
  .form-row { grid-template-columns: minmax(0, 1fr); gap: 0; }
}
