*{box-sizing:border-box}body{margin:0;background:#f7f8f5;color:#263a32;font:14px 'Segoe UI',sans-serif}button,input,select,textarea{font:inherit}button,.button{cursor:pointer;border:1px solid #dce3db;border-radius:8px;background:white;padding:10px 14px;color:#30493c}button:hover,.button:hover{background:#edf2e9}button:focus-visible,a:focus-visible{outline:3px solid #b1c58e}button.primary{background:#426447;border-color:#426447;color:white;padding:13px 19px}button.primary:hover{background:#314f35}.sidebar{width:238px;position:fixed;inset:0 auto 0 0;background:#eef1e8;border-right:1px solid #dde3d7;padding:33px 24px;display:flex;flex-direction:column}.brand{font-family:Georgia,serif;font-size:39px;text-decoration:none;color:#385640;display:flex;gap:10px;align-items:center}.brand-dot{color:#a0b46b}.family-label{font-size:10px;letter-spacing:2px;color:#87927c;margin-top:53px}.sidebar h3{font-weight:500;font-size:15px;margin:12px 0 28px}nav{display:grid;gap:9px}nav button{background:transparent;border:0;text-align:left;display:flex;gap:13px;padding:13px}nav button.active{background:#dfe8d6;color:#395438;font-weight:600}.side-bottom{margin-top:auto}.side-bottom p{font-family:Georgia,serif;font-size:23px;line-height:1.4}.side-bottom small{font-size:11px;color:#798274;line-height:1.6}.side-bottom button{margin-top:12px;width:100%;background:transparent;font-size:12px}main{margin-left:238px;padding:0 42px}header{height:86px;border-bottom:1px solid #e3e6df;display:flex;justify-content:space-between;align-items:center;font-size:12px}.breadcrumb span{padding:0 16px;color:#a4ab9d}.breadcrumb{color:#7e897a}.breadcrumb b{color:#425141;font-weight:500}.save-state{color:#859371;font-size:11px}.heading{display:flex;justify-content:space-between;align-items:center;padding:36px 0 26px}.eyebrow{font-size:10px;font-weight:600;letter-spacing:2px;color:#81906d}h1{font:36px Georgia,serif;letter-spacing:-1px;margin:13px 0}p{color:#84907f}.stats{display:flex;gap:34px;margin-bottom:28px}.stat{padding-right:34px;border-right:1px solid #dde4d8;color:#7d8978;font-size:12px}.stat:last-child{border:0}.stat b{font:27px Georgia,serif;margin-right:10px;color:#40583b}.workspace{border:1px solid #dde4d9;background:#fff;border-radius:13px;overflow:hidden;box-shadow:0 7px 25px #233d2004}.toolbar{padding:15px 20px;display:flex;align-items:center;gap:12px;border-bottom:1px solid #e5e9e0}.tabs{display:flex;background:#f3f5ef;padding:3px;border-radius:7px;margin-right:auto}.tabs button{border:0;background:transparent;font-size:12px;padding:8px 14px}.tabs .active{background:white;box-shadow:0 1px 4px #0001}.toolbar input{width:210px;background:#fafbf8;font-size:12px}.subtle{font-size:11px}input,select,textarea{width:100%;padding:10px 12px;border:1px solid #dce2d6;background:white;border-radius:7px;color:#304337}#content{min-height:470px;max-height:65vh;overflow:auto;background-color:#fafbf7;background-image:radial-gradient(#dde4d5 .8px,transparent .8px);background-size:20px 20px}.empty{text-align:center;padding:65px 20px}.empty .tree-symbol{font-size:65px;color:#829666}.empty h2{font:29px Georgia,serif;margin:17px}.empty p{max-width:390px;line-height:1.8;margin:15px auto 24px}.empty small{display:block;color:#8b967e;margin-top:15px}.tree-stage{position:relative;transform-origin:top left}.node{position:absolute;width:180px;min-height:116px;padding:17px 12px;background:white;border:1px solid #dce4d4;border-radius:11px;text-align:center;box-shadow:0 4px 12px #37532709}.node:hover{border-color:#7c9a65;box-shadow:0 6px 20px #37532712}.avatar{width:49px;height:49px;border-radius:50%;object-fit:cover;background:#e7eddf;color:#6c8157;display:inline-flex;align-items:center;justify-content:center;font:22px Georgia,serif;border:3px solid #f5f7f0}.node strong{display:block;font-size:12px;margin:9px 0 5px}.node small{font-size:10px;color:#8a9581}.tree-stage svg{position:absolute;inset:0;pointer-events:none}footer{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-top:1px solid #e1e7db;font-size:10px;color:#89947f}footer i{display:inline-block;width:17px;border-top:1px solid #9caf87;margin-right:5px}footer em{font-size:23px;margin:0 6px 0 15px}footer button{padding:5px 10px;font-size:11px;border:0}.footnote{text-align:center;font-size:11px;margin:20px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:17px;padding:24px}.person-card{padding:24px 16px;text-align:center}.person-card strong{display:block;margin:10px}.person-card small{display:block;color:#819076;margin:7px}.timeline{padding:28px 35px;max-width:760px;margin:auto}.timeline-item{border-left:2px solid #bccba8;padding:4px 0 24px 23px}.timeline-item small{color:#839670}.timeline-item h3{margin:8px 0}.timeline-item p{margin:7px 0;white-space:pre-wrap}.timeline-item button{font-size:12px;padding:6px 10px}dialog{padding:0;border:1px solid #dce3d4;border-radius:16px;width:680px;max-width:95vw;max-height:92vh;color:#344a37;box-shadow:0 30px 100px #15291433}dialog::backdrop{background:#192b2366;backdrop-filter:blur(4px)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:24px 28px;border-bottom:1px solid #e6eadf}.modal-head h2{font:27px Georgia,serif;margin:8px 0 0}.modal-head .close{font-size:24px;border:0}.form-body{padding:24px 28px;overflow:auto;max-height:64vh}.fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}.fields label{font-size:12px;display:grid;gap:7px}.fields label span,small{color:#87937f}.wide{grid-column:1/-1}select[multiple]{height:92px}textarea{resize:vertical}.photo-upload{padding-bottom:24px;display:flex;align-items:center;flex-wrap:wrap;gap:12px}.photo-upload small{width:100%;font-size:10px}#photoPreview{display:flex;gap:6px;flex-wrap:wrap}#photoPreview>div{position:relative}#photoPreview img{width:60px;height:60px;object-fit:cover;border-radius:9px;cursor:pointer}#photoPreview>div:first-child img{outline:3px solid #91a973}#photoPreview button{position:absolute;right:-4px;top:-7px;border-radius:50%;padding:0 4px}.section-head{display:flex;justify-content:space-between;align-items:center;margin-top:20px}.section-head h3{font-family:Georgia,serif;font-size:20px;font-weight:400}.section-head button{font-size:11px}.event-row{display:grid;grid-template-columns:140px 1fr 32px;gap:8px;margin-bottom:10px}.event-row button{padding:4px}.hint{font-size:11px;line-height:1.6}.modal-actions{display:flex;gap:10px;padding:18px 28px;border-top:1px solid #e5e9de}.modal-actions .danger{margin-right:auto;color:#a26756;border:0}#formError{color:#a94536}.detail-body{padding:26px}.detail-top{text-align:center}.detail-top .avatar{width:90px;height:90px;font-size:34px}.detail-top h2{font:30px Georgia,serif;margin-bottom:8px}.detail-top p{margin:8px}.detail-section{margin-top:25px}.detail-section h3{font:20px Georgia,serif}.detail-section p{white-space:pre-wrap;line-height:1.7;color:#62705b}.relatives{display:flex;gap:7px;flex-wrap:wrap}.gallery{display:flex;gap:10px;overflow:auto}.gallery img{height:170px;border-radius:9px;cursor:pointer}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 22px;border-radius:10px;background:#35503c;color:white;display:none;z-index:10}@media(max-width:1050px){.sidebar{width:190px;padding:25px 17px}main{margin-left:190px;padding:0 24px}.toolbar{flex-wrap:wrap}.heading{gap:15px}h1{font-size:29px}.heading .primary{white-space:nowrap;font-size:12px}.stats{gap:18px}.stat{padding-right:18px}}@media(max-width:720px){.sidebar{position:static;width:auto;padding:15px 20px;border-bottom:1px solid #dce3d5}.brand{font-size:29px}.family-label,.sidebar h3,.side-bottom p,.side-bottom small,nav{display:none}.sidebar{flex-direction:row;justify-content:space-between}.side-bottom{display:flex;gap:6px}.side-bottom button{width:auto;margin:0;font-size:10px}main{margin:0;padding:0 16px}header{height:52px}.save-state{display:none}.heading{align-items:flex-start;flex-direction:column;padding-top:28px}h1{font-size:31px}.heading p{font-size:12px}.stats{gap:12px}.stat{font-size:10px;padding-right:12px}.stat b{font-size:23px}.toolbar{padding:10px;gap:8px}.toolbar input{flex:1;width:150px}.tabs{width:100%}#content{min-height:400px}.fields{grid-template-columns:1fr}.wide{grid-column:auto}.event-row{grid-template-columns:115px 1fr 28px}.form-body{padding:20px}.modal-actions{padding:15px;gap:6px}.modal-actions button{font-size:11px}.modal-head{padding:20px}.footnote{line-height:1.6}}
