:root{--bg:#f6f3ee;--panel:#fffaf2;--ink:#292421;--muted:#766d64;--line:#d9cec0;--accent:#8a5a2e;--accent2:#3d6b5b;--danger:#9c2f2f}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif}a{color:inherit}.topbar{height:58px;padding:0 22px;display:flex;align-items:center;justify-content:space-between;background:#211c19;color:#fff}.brand{font-weight:800;text-decoration:none;font-size:22px;letter-spacing:.4px}.topbar nav{display:flex;gap:14px;align-items:center}.topbar form{margin:0}button,.button,input,select,textarea{font:inherit;border-radius:12px;border:1px solid var(--line);padding:10px 12px;background:#fff;color:var(--ink)}button{cursor:pointer}.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}.auth-card{max-width:420px;margin:70px auto;padding:28px;background:var(--panel);border:1px solid var(--line);border-radius:22px;box-shadow:0 18px 50px #0001}.stack{display:grid;gap:14px}.stack label{display:grid;gap:6px;color:var(--muted)}.error{background:#ffe8e8;color:var(--danger);padding:10px;border-radius:12px}.page{padding:28px}.split{display:flex;justify-content:space-between;gap:20px;align-items:center}.inline{display:flex;gap:10px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:24px}.tree-card{padding:20px;border:1px solid var(--line);background:var(--panel);border-radius:18px;text-decoration:none;display:grid;gap:8px}.tree-card:hover{box-shadow:0 14px 35px #0001;transform:translateY(-1px)}.tree-card small{color:var(--muted)}.editor{height:calc(100vh - 58px);display:grid;grid-template-columns:340px 1fr}.sidebar{background:var(--panel);border-right:1px solid var(--line);padding:18px;overflow:auto}.sidebar h2{margin:0 0 14px}.sidebar button{width:100%;margin-bottom:8px}.canvas-wrap{position:relative;overflow:hidden}.toolbar{position:absolute;z-index:2;top:16px;left:16px;display:flex;gap:8px;flex-wrap:wrap}.toolbar button{width:auto;background:#ffffffe8;backdrop-filter:blur(6px)}#treeCanvas{width:100%;height:100%;background:radial-gradient(circle at center,#fff 0,#f4eee5 62%,#eadfce 100%)}.person-node{cursor:pointer}.person-card{fill:#fffaf2;stroke:#b9aa9a;stroke-width:2;filter:drop-shadow(0 6px 9px rgba(0,0,0,.15))}.person-card.male{stroke:#5a7fa8}.person-card.female{stroke:#a85a7f}.person-card.other{stroke:#6f7b69}.person-name{font-size:18px;font-weight:800;fill:#292421;text-anchor:middle}.person-years{font-size:12px;fill:#766d64;text-anchor:middle}.selected .person-card{stroke:var(--accent);stroke-width:4}.link{stroke:#5d554e;stroke-width:2;fill:none}.partner{stroke-dasharray:6 4;stroke:var(--accent2)}.field{display:grid;gap:5px;margin:10px 0}.field span{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.muted{color:var(--muted)}.danger{background:#fff;border-color:#e2b2b2;color:var(--danger)}textarea{min-height:80px;resize:vertical}@media(max-width:850px){.editor{grid-template-columns:1fr}.sidebar{height:45vh}.canvas-wrap{height:55vh}.split{display:grid}.inline{display:grid}.toolbar{position:static;padding:8px;background:#eee}.canvas-wrap{display:grid;grid-template-rows:auto 1fr}}
