:root{--ink:#243f36;--green:#2e5948;--cream:#f6f4ed;--muted:#6f7e74;--line:#dce2d9;--gold:#c2a66f}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.6 system-ui,sans-serif}a{color:inherit}header{max-width:1240px;margin:auto;padding:28px 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;gap:14px;align-items:center;text-decoration:none;font:26px Georgia,serif}.brand small{display:block;font:9px system-ui;letter-spacing:2px;margin-top:4px}.mark{font:22px Georgia;border:1px solid var(--gold);border-radius:50%;padding:13px}nav{display:flex;align-items:center;gap:28px}nav a{text-decoration:none;font-size:14px}nav form{margin:0}.menu>summary{display:none}main{max-width:1240px;margin:auto;padding:55px 40px 80px;min-height:75vh}h1{font:clamp(36px,5vw,68px)/1.1 Georgia,serif;margin:15px 0 24px;letter-spacing:-1.5px}h2{font:27px/1.2 Georgia,serif}h3{margin:0;font:22px Georgia}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2.4px;color:var(--green)}.intro{font-size:18px;color:var(--muted);max-width:520px}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:55px;align-items:center;padding:30px 0 65px}.hero h1{font-size:clamp(48px,6vw,78px)}.primary{background:var(--green);color:white;border:0;padding:14px 24px;border-radius:6px;font:inherit;cursor:pointer}.button{display:inline-block;text-decoration:none;margin-top:20px}.button span{margin-left:25px}.panel{background:#fffdfa;border:1px solid var(--line);padding:28px;border-radius:12px;margin-bottom:24px}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.feature{text-decoration:none;transition:transform .2s}.feature:hover{transform:translateY(-4px)}.feature span{font-size:10px;letter-spacing:1.8px;color:var(--muted)}.feature p{color:var(--muted);font-size:15px}.feature b{font-size:13px}.family-art{height:370px;background:#e6ece1;border-radius:180px 180px 20px 20px;position:relative;overflow:hidden;display:grid;place-items:center}.orbit{position:absolute;border:1px solid #b5c6b2;border-radius:50%;height:290px;width:290px}.o2{height:220px;width:220px}.art-center{z-index:1;font:76px Georgia;text-align:center}.art-center small{display:block;font:9px system-ui;letter-spacing:3px}.leaf{position:absolute;background:#a2b79c;width:45px;height:95px;border-radius:100% 0 100% 0;transform:rotate(20deg)}.l1{top:30px;right:85px}.l2{bottom:55px;left:60px;transform:rotate(80deg)}.l3{top:75px;left:60px;transform:rotate(-60deg);background:#c3ccae}.art-caption{position:absolute;bottom:25px;font:italic 17px Georgia}.narrow{max-width:560px;margin:20px auto}label{display:block;font-size:14px;margin:16px 0 8px}input,textarea,select{display:block;width:100%;font:inherit;padding:11px;border:1px solid #cbd5cb;border-radius:6px;background:white;color:var(--ink);margin-top:6px}input:focus,textarea:focus,select:focus{outline:2px solid var(--gold)}button{font:inherit;padding:8px 14px;background:transparent;border:1px solid var(--line);border-radius:5px;cursor:pointer;color:var(--ink)}details summary{cursor:pointer;font-weight:600}details form{margin-top:20px}.error{background:#fff0ec;border:1px solid #d89987;padding:15px;border-radius:8px}.hint{color:var(--muted);font-size:13px}.branches{list-style:none;padding-left:28px;border-left:1px solid #b8c8b9}.branches:first-of-type{padding-left:0;border:0}.branches li{margin:20px 0}.person{background:#fffdfa;padding:20px;border:1px solid var(--line);border-radius:10px;display:flex;gap:18px;max-width:680px}.person p{margin:8px 0 0;white-space:normal;overflow-wrap:anywhere}.person small{color:var(--muted)}.avatar{display:grid;place-items:center;background:#e6ece1;border-radius:50%;min-width:48px;height:48px;font:23px Georgia}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.gallery figure{padding:10px;margin:0 0 20px}.gallery img{width:100%;height:260px;object-fit:cover;border-radius:7px}.gallery figcaption{padding:12px;overflow-wrap:anywhere}.empty{text-align:center;padding:65px}.large-symbol{font-size:55px;color:var(--gold)}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.manage-row{display:flex;align-items:center;gap:20px;padding:14px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.manage-row>span{flex:1}.manage-row form{display:flex;align-items:center;gap:10px}.confirm{margin:0;font-size:12px;display:flex;align-items:center;gap:6px}.confirm input{width:auto;margin:0}footer{border-top:1px solid var(--line);max-width:1160px;margin:auto;padding:25px 0;display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}@media(max-width:800px){header{padding:20px}.menu>summary{display:block}nav{position:absolute;top:90px;right:20px;z-index:5;display:flex;flex-direction:column;align-items:stretch;background:#fffdfa;padding:24px;border:1px solid var(--line);border-radius:10px;min-width:210px}.menu:not([open]) nav{display:none}main{padding:35px 20px 50px}.hero{grid-template-columns:1fr;gap:25px;padding:0 0 35px}.family-art{height:300px}.feature-grid,.admin-grid{grid-template-columns:1fr}.gallery{grid-template-columns:repeat(2,1fr)}footer{margin:0 20px;gap:20px}.branches{padding-left:14px}.person{padding:14px}.person p{font-size:14px}.hero h1{font-size:54px}}@media(max-width:480px){.gallery{grid-template-columns:1fr}.panel{padding:22px}.brand{font-size:23px}footer{flex-direction:column;gap:5px}.avatar{display:none}}
.tree-toolbar{display:flex;align-items:center;gap:10px;margin:24px 0 12px}.tree-toolbar span{font-size:12px;color:var(--muted)}.tree-viewport{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#eef1e8;margin-bottom:30px;max-height:760px}.chart-canvas{position:relative;transform-origin:top left}.tree-lines{position:absolute;top:0;left:0;pointer-events:none}.parent-line{fill:none;stroke:#708d78;stroke-width:2}.spouse-line{fill:none;stroke:#b09055;stroke-width:3}.generation-label{position:absolute;left:18px;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.tree-card{position:absolute;width:190px;height:156px;background:#fffdfa;border:1px solid #bccfbd;border-radius:10px;text-align:center;padding:12px;box-shadow:0 3px 10px #25422e0a}.tree-initial{display:inline-grid;place-items:center;height:28px;width:28px;background:#e6ece1;border-radius:50%;font:18px Georgia}.tree-card h3{font:18px Georgia;margin:7px 0 3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-card small,.tree-location{font-size:11px;color:var(--muted)}.tree-location{margin:4px 0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-card details{margin-top:6px;font-size:11px}.tree-card details[open]{position:relative;background:#fffdfa;padding:12px;border:1px solid var(--line);border-radius:8px;z-index:10;max-height:240px;overflow:auto;text-align:left}.tree-card:has(details[open]){z-index:10}.tree-card details p{overflow-wrap:anywhere;white-space:pre-wrap}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;min-width:760px;text-align:left;font-size:14px}th,td{padding:13px 15px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#e6ece1;font-size:12px}td{max-width:220px;overflow-wrap:anywhere}.geography>p{font-size:13px;color:var(--muted)}
.tree-card{height:196px}.tree-initial{height:48px;width:48px;font-size:25px}.tree-portrait{width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid #d1ddcc}.tree-family-photo{position:absolute;width:170px;height:106px;background:#fffdfa;border:1px solid var(--line);border-radius:8px;overflow:hidden;text-decoration:none;text-align:center;font-size:10px;z-index:1}.tree-family-photo img{display:block;width:100%;height:84px;object-fit:cover}.admin-photo{display:block;max-width:100%;width:260px;height:170px;object-fit:cover;border-radius:8px;margin:15px 0}

.tree-edit{display:block;margin-top:5px;font-size:11px;color:var(--green);font-weight:600}

.relationship-picker{border:1px solid var(--line);border-radius:8px;padding:14px;margin:18px 0}.relationship-picker legend{font-size:14px;font-weight:600;padding:0 6px}.relationship-picker .relation-mode{display:inline-block;width:auto;margin:0 5px 0 0}.mode-label{display:inline-block;margin:0 14px 0 0;font-size:12px}.new-person{display:none}.relationship-picker input[value="new"]:checked~.new-person{display:block}.relationship-picker input[value="new"]:checked~.existing-person{display:none}
