/* Tampilan: layar masuk satu kolom; setelah masuk, pohon di kiri/atas dan panel profil di kanan/bawah */
:root{
  --bg:#f3f6f1; --surface:#ffffff; --fg:#1d2a22; --muted:#5f6f64; --line:#c9d6cb;
  --accent:#2f6b4f; --accent-fg:#ffffff; --soft:#e2eee6; --warn:#a4452c;
  --display:'Fraunces',Georgia,serif; --body:'Inter',system-ui,sans-serif;
}
@media (prefers-color-scheme: dark){:root{
  --bg:#121a15; --surface:#1b261f; --fg:#e6eee8; --muted:#9bb0a2; --line:#34463a;
  --accent:#6fc59b; --accent-fg:#0d1f15; --soft:#243629; --warn:#e58a6f; color-scheme:dark}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:15px;line-height:1.5;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1,h2{font-family:var(--display);margin:0;text-wrap:balance}
a{color:var(--accent)}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn{display:inline-block;background:var(--accent);color:var(--accent-fg);border:0;border-radius:8px;padding:9px 16px;font-weight:600;text-decoration:none;text-align:center}
.btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--line)}
.btn.danger{background:transparent;color:var(--warn);border:1px solid var(--warn)}
.btn.small{padding:6px 11px;font-size:13px}
.btn.wide{width:100%}
label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:4px}
input{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:9px 11px}
.field{margin-bottom:14px}
.note{font-size:13px;color:var(--muted)}
.av{border-radius:50%;background:var(--soft);color:var(--accent);display:grid;place-items:center;font-family:var(--display);font-weight:700;object-fit:cover;flex:none}
.login{max-width:400px;margin:0 auto;padding-block:8vh}
.login h1{font-size:32px;margin-bottom:8px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px;margin-top:22px}
.err{color:var(--warn);font-size:13px;min-height:18px;margin:8px 0}
.app{max-width:1200px;margin:0 auto;padding-block:20px 40px}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.top h1{font-size:24px}
.who{display:flex;align-items:center;gap:10px;font-size:14px}.who form{margin:0}
.flash{background:var(--soft);border-radius:10px;padding:10px 14px;margin-bottom:16px;font-size:14px}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
@media (max-width:860px){.layout{grid-template-columns:minmax(0,1fr)}}
.treewrap{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px 12px;overflow-x:auto}
.treehead{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:0 10px 14px}
.treehead h2{font-size:18px}
.tree{display:flex;justify-content:center;min-width:max-content}
.tree ul{display:flex;justify-content:center;padding:22px 0 0;position:relative;margin:0;list-style:none}
.tree li{display:flex;flex-direction:column;align-items:center;position:relative;padding:22px 8px 0}
.tree li::before,.tree li::after{content:"";position:absolute;top:0;right:50%;width:50%;height:22px;border-top:2px solid var(--line)}
.tree li::after{right:auto;left:50%;border-left:2px solid var(--line)}
.tree li:only-child::before,.tree li:only-child::after{display:none}
.tree li:only-child{padding-top:0}
.tree li:first-child::before,.tree li:last-child::after{border:0}
.tree li:last-child::before{border-right:2px solid var(--line);border-radius:0 8px 0 0}
.tree li:first-child::after{border-radius:8px 0 0 0}
.tree ul::before{content:"";position:absolute;top:0;left:50%;height:22px;border-left:2px solid var(--line)}
.tree>ul{padding-top:0}.tree>ul::before{display:none}
.tree>ul>li{padding-top:0}.tree>ul>li::before,.tree>ul>li::after{display:none}
.couple{display:flex;align-items:center}
.join{width:14px;border-top:2px solid var(--accent)}
.node{width:132px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;color:inherit;text-decoration:none}
.node:hover{border-color:var(--accent)}
.node.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
.node.me .nm::after{content:" (saya)";color:var(--accent);font-weight:500}
.node.empty{opacity:.72}
.nm{font-size:13px;font-weight:600;line-height:1.25}
.sub{font-size:11.5px;color:var(--muted)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px;position:sticky;top:12px}
@media (max-width:860px){.panel{position:static}}
.panel h2{font-size:20px}
.phead{display:flex;gap:14px;align-items:center;margin-bottom:16px}
dl{margin:0;display:grid;grid-template-columns:96px 1fr;gap:8px 10px;font-size:14px}
dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.lock{background:var(--soft);border-radius:8px;padding:9px 11px;font-size:13px;margin-top:16px;color:var(--muted)}
.photoRow{display:flex;gap:12px;align-items:center;margin:14px 0}
.add{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.add summary{cursor:pointer;font-weight:600;font-size:14px}
form.inline{margin-top:12px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
form.inline input{width:100%}
form.inline p{margin:0}
