*{box-sizing:border-box}body{margin:0;color:#263e35;background:#f7f8f4;font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit;border:1px solid #dde4da;background:white;border-radius:7px;padding:10px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px}button:hover{background:#f1f5ec}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-decoration:none}input,select,textarea{border:1px solid #dce2d8;border-radius:6px;padding:11px;background:white;color:#263e35;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid #86a28d}h1,h2,.surname,.person b{font-family:'Noto Serif SC','Songti SC',serif}aside{width:230px;background:#f0f3e9;border-right:1px solid #dde4d6;position:fixed;inset:0 auto 0 0;padding:35px 22px;display:flex;flex-direction:column}.brand{display:flex;gap:13px;align-items:center}.seal{border:1px solid #43664e;background:#31533e;color:#fffef5;font-family:serif;font-size:32px;width:46px;height:51px;display:grid;place-items:center;border-radius:4px}.brand b{font:600 21px 'Noto Serif SC',serif;letter-spacing:2px}.brand small{display:block;font-size:8px;letter-spacing:1.4px;margin-top:7px;color:#7e8e77}.side-caption{font-size:11px;letter-spacing:2px;color:#8c9984;margin:47px 12px 16px}nav{display:grid;gap:8px}nav button{justify-content:flex-start;border:0;background:transparent;font-size:14px;padding:14px}nav button svg:last-child{margin-left:auto}nav button.active{background:#dfe8d6;color:#31573c;font-weight:600}.side-note{margin-top:auto;padding:40px 16px 35px;color:#6f8567}.side-note p{font-family:serif;font-size:17px;letter-spacing:1px}.side-note small{line-height:2;color:#93a08a}.identity{border-top:1px solid #dbe2d3;padding-top:22px;display:flex;gap:10px;align-items:center}.identity b{font-size:12px}.identity small{display:block;font-size:9px;max-width:142px;overflow:hidden;text-overflow:ellipsis;color:#8b9588;margin-top:4px}.user-avatar{background:#dce5d2;border-radius:50%;width:33px;height:33px;display:grid;place-items:center}main{margin-left:230px}header{height:76px;border-bottom:1px solid #e4e8df;padding:0 38px;display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#83907e}header>span,header>div,header a{display:flex;align-items:center;gap:12px}header>div{gap:22px}.private{display:flex;align-items:center;gap:6px}.content{padding:38px 38px 18px;max-width:1800px;margin:auto}.heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.eyebrow{font-size:10px;letter-spacing:2.7px;color:#89957a}h1{font-size:32px;font-weight:500;letter-spacing:1.5px;margin:12px 0 14px}.heading p{color:#8d9686;font-size:12px}.primary{background:#365942;color:white;border-color:#365942}.primary:hover{background:#274832}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin:30px 0 24px}.stats>div{position:relative;background:#fffefa;border:1px solid #e2e6da;border-radius:9px;padding:20px 23px}.stats span{font-size:12px;color:#87917f}.stats b{display:block;font-size:31px;font-weight:500;margin-top:13px}.stats b small{font-family:sans-serif;font-size:12px;color:#8b957e}.stats svg{position:absolute;right:20px;top:21px;width:18px;color:#8d9e83}.stats .status-label{font-size:20px;line-height:38px}.notice{background:#e8eee2;padding:12px 16px;border-radius:7px;display:flex;justify-content:space-between;margin-bottom:15px}.notice button{border:0;padding:0;background:none}.demo{display:flex;align-items:center;gap:10px;font-size:11px;color:#8e937e;margin-bottom:19px;line-height:1.7}.demo>span{background:#ebeede;padding:2px 7px;border-radius:3px;white-space:nowrap}.demo button{background:none;border:0;padding:2px;color:#486747;font-size:11px;margin-left:auto;white-space:nowrap}.workspace{border:1px solid #e0e5d9;border-radius:10px;overflow:hidden;background:#fffefa}.toolbar{height:67px;display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid #e2e6db}.tabs{display:flex;gap:4px}.tabs button{background:none;border:0;font-size:12px;color:#98a28c;padding:9px 13px}.tabs .chosen{background:#eef2e7;color:#3e5e40}.search{display:flex;align-items:center;gap:7px;margin-left:auto;color:#96a08f}.search input{border:0;background:none;font-size:12px;width:205px;padding:6px}.icon-button{padding:7px;background:none;border:0;color:#87957c}.canvas{position:relative;overflow:auto;min-height:565px;height:580px;background-color:#fcfcf7;background-image:radial-gradient(#d8dfcd .75px,transparent .75px);background-size:17px 17px;padding:45px 28px 60px}.tree{width:max-content;min-width:100%;padding-left:55px;transition:transform .2s}.tree ul{display:flex;justify-content:center;margin:0;padding:38px 0 0;position:relative}.tree>ul{padding-top:0}.tree li{list-style:none;text-align:center;position:relative;padding:0 17px}.tree li:before,.tree li:after{content:'';position:absolute;top:-20px;right:50%;width:50%;height:20px;border-top:1px solid #bdcdb1}.tree li:after{right:auto;left:50%;border-left:1px solid #bdcdb1}.tree li:only-child:before,.tree li:only-child:after{display:none}.tree li:first-child:before,.tree li:last-child:after{border:0}.tree li:last-child:before{border-right:1px solid #bdcdb1;border-radius:0 5px 0 0}.tree li:first-child:after{border-radius:5px 0 0 0}.tree ul ul:before{content:'';position:absolute;top:0;left:50%;border-left:1px solid #bdcdb1;height:18px}.tree>ul>li:before,.tree>ul>li:after{display:none}.couple{display:inline-flex;align-items:center;gap:0;position:relative}.person{width:135px;min-height:136px;background:#fffefa;border:1px solid #d4dfc9;border-radius:8px;padding:15px 8px 12px;display:flex;flex-direction:column;gap:5px;box-shadow:0 3px 8px #4c663508}.person:hover{border-color:#517943;transform:translateY(-2px)}.person b{font-size:15px;letter-spacing:1px}.person small{font-size:10px;color:#879178}.person .place{font-size:9px;color:#a0a88f}.person.spouse{border-color:#e5dccf}.avatar{width:36px;height:36px;border-radius:50%;background:#eaf0e0;color:#6f8657;display:grid;place-items:center;font-family:serif;font-size:18px;margin-bottom:2px}.avatar.female{background:#f4e9e2;color:#b2927d}.marriage{width:26px;color:#abb89a;font-size:20px}.collapse{position:absolute;bottom:-11px;left:50%;transform:translateX(-50%);font-size:9px;padding:3px 7px;border-radius:12px;background:#eaf0e0;border-color:#d4dfc9;gap:3px;z-index:2}.matched{outline:3px solid #a4b96e}.generation-guide{position:absolute;left:17px;top:81px;display:flex;flex-direction:column;gap:150px;font-size:9px;color:#97a08c;letter-spacing:1px}.canvas-footer{display:flex;justify-content:space-between;align-items:center;padding:13px 20px;border-top:1px solid #e3e7db;font-size:10px;color:#94a084}.canvas-footer>span{display:flex;align-items:center;gap:8px}.canvas-footer i{width:7px;height:7px;border-radius:50%;background:#a6b88d;margin-left:6px}.canvas-footer .pink{background:#d6baa7}.canvas-footer em{font-style:normal;margin-left:7px;color:#a3b191}.canvas-footer>div{display:flex;align-items:center;gap:15px}.canvas-footer button{padding:4px;border:0;background:none}.search-results{position:sticky;left:0;top:0;display:flex;gap:5px;z-index:5;background:#fcfcf7;padding:5px}.search-results button{font-size:11px;padding:5px}.member-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;padding:25px}.member-grid button{justify-content:flex-start;text-align:left;padding:19px;gap:13px}.member-grid small{display:block;font-size:10px;color:#97a088;margin-top:7px}.member-grid svg{margin-left:auto}.panel{border:1px solid #dfe4d7;border-radius:9px;background:#fffefa;padding:30px}.panel h2{font-size:23px;font-weight:500}.panel p{color:#88947d;line-height:1.9}.info{padding:14px;background:#edf1e6;border-radius:6px;color:#728267;font-size:12px;line-height:1.9;margin:24px 0}.grant-form{display:flex;gap:12px;flex-wrap:wrap;margin:25px 0}.grant-form input{flex:1}.access-row{display:flex;align-items:center;gap:12px;border-top:1px solid #e9ebdf;padding:20px 0}.access-row>div{flex:1}.access-row small{display:block;color:#93a085;font-size:11px;margin-top:7px}.badge{padding:6px 13px;background:#eaf0df;border-radius:20px;font-size:12px}.access-row button,.access-row select{font-size:12px}.story{padding:45px}.story>p{max-width:720px}.story-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;margin-top:35px}.story-cards>div{border-top:1px solid #d9e0cc;padding-top:25px}.story-cards span{font-family:serif;color:#a7b195;font-size:30px}.story-cards h3{font-family:serif;font-size:19px;font-weight:500}.story-cards p{font-size:12px}footer{display:flex;gap:18px;color:#a0a995;font-size:10px;padding:23px 0}footer span:last-child{margin-left:auto}.overlay{position:fixed;inset:0;background:#152f2555;display:flex;align-items:center;justify-content:center;z-index:20;padding:24px;backdrop-filter:blur(3px)}.modal,.drawer{background:#fffefa;padding:33px;border-radius:13px;max-height:90vh;overflow:auto;position:relative;width:640px;box-shadow:0 20px 80px #143a2422}.close{position:absolute;right:17px;top:17px;border:0;background:none;padding:4px}.modal h2,.drawer h2{font-size:27px;font-weight:500}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}label{font-size:12px;color:#6b7a60}form label{display:flex;flex-direction:column;gap:8px}textarea{width:100%;resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.danger{margin-right:auto;color:#ae6457}.drawer{width:430px;margin-left:auto;margin-right:0;border-radius:12px;height:90vh}.large{width:70px;height:70px;font-size:33px;margin:30px 0 10px}.drawer>p{color:#8a967d;font-size:12px}dl{display:grid;grid-template-columns:110px 1fr;gap:17px;font-size:12px;margin:30px 0}dt{color:#95a085}dd{margin:0}.bio{line-height:1.9;white-space:pre-wrap}.empty{text-align:center;padding:70px 20px;color:#94a285}.empty svg{margin:auto}.empty h3{color:#5f7753;font:20px serif}
@media(min-width:1600px){.canvas{height:650px}.person{width:155px}}@media(max-width:1100px){aside{width:190px;padding:28px 15px}main{margin-left:190px}.content{padding:28px 22px}header{padding:0 22px}h1{font-size:26px}.stats{gap:10px}.stats>div{padding:17px}.member-grid{grid-template-columns:repeat(2,1fr)}.heading{align-items:flex-start}.heading .primary{font-size:11px}}@media(max-width:760px){aside{position:static;width:100%;padding:17px 18px;border-right:0;border-bottom:1px solid #dde4d6}.brand small,.side-caption,.side-note,.identity{display:none}.seal{width:33px;height:36px;font-size:24px}.brand b{font-size:18px}nav{display:flex;gap:3px;margin-top:17px}nav button{padding:9px;font-size:11px;flex:1;gap:5px}nav button svg:last-child{display:none}nav button svg{width:15px}main{margin-left:0}header{height:49px;padding:0 18px}.private{font-size:10px}.content{padding:25px 16px}.heading{display:block}h1{font-size:25px}.heading .primary{margin-top:12px}.stats{grid-template-columns:1fr 1fr;margin:22px 0}.stats>div{padding:14px}.stats b{font-size:25px}.stats .status-label{font-size:18px;line-height:30px}.demo{flex-wrap:wrap}.demo button{margin-left:0}.toolbar{padding:9px;height:auto;flex-wrap:wrap}.tabs button{padding:8px}.search{margin-left:0;flex:1}.search input{width:100%}.canvas{height:510px;min-height:0}.canvas-footer{padding:10px;font-size:9px;gap:8px}.canvas-footer>span{gap:3px}.canvas-footer>div{gap:7px}.member-grid{grid-template-columns:1fr;padding:15px}.panel{padding:20px}.grant-form{display:grid;grid-template-columns:1fr}.access-row{flex-wrap:wrap}.access-row>div{width:100%;flex:auto}.story-cards{grid-template-columns:1fr;gap:15px}.form-grid{gap:12px}.modal,.drawer{padding:26px 20px;width:100%;height:auto}.overlay{padding:12px}.drawer{margin:0}.form-actions{flex-wrap:wrap}.form-actions button{font-size:11px}footer span:last-child{display:none}}

.login-page{min-height:100vh;display:grid;place-items:center;padding:25px;background:#eef2e7}.login-card{width:100%;max-width:430px;background:#fffefa;border:1px solid #d8e1cf;border-radius:15px;padding:36px;box-shadow:0 15px 60px #31533e12}.login-card .seal{margin-bottom:25px}.login-card h1{font-size:26px}.login-card p{color:#839176;line-height:1.9}.login-card form{display:grid;gap:19px}.login-card .primary{margin-top:8px}.login-card .notice{font-size:12px}.login-card small{display:block;margin-top:25px;color:#98a48e;line-height:1.8}
