/* Arisan Keluarga Versi 1.0.0 — © 2026 Muhammad Muazham */
*{box-sizing:border-box}
:root{
  --navy:#09284b;--navy-2:#071d36;--blue:#2563eb;--blue-2:#3b82f6;
  --bg:#f3f6fb;--panel:#fff;--text:#172033;--muted:#68768d;--line:#e4eaf2;
  --green:#169b62;--orange:#e78a23;--red:#d94c4c;--purple:#7657d5;
  --shadow:0 10px 30px rgba(29,49,78,.08);--shadow-lg:0 22px 65px rgba(19,38,66,.18);
  --radius:18px
}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}
button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}
a{color:inherit}
.hidden{display:none!important}

.app-shell{min-height:100vh;display:flex}
.sidebar{position:fixed;inset:0 auto 0 0;width:276px;padding:22px 15px;background:linear-gradient(180deg,var(--navy),var(--navy-2));color:#fff;z-index:50;display:flex;flex-direction:column;box-shadow:10px 0 35px rgba(6,25,47,.15);transition:transform .25s ease}
.brand{display:flex;align-items:center;gap:12px;padding:4px 10px 25px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:14px}
.brand>span{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:rgba(255,255,255,.12);font-size:29px}
.brand b,.brand small{display:block}.brand b{font-size:19px;letter-spacing:.2px}.brand small{margin-top:4px;color:#b9cee7;font-size:12px}
.sidebar nav{display:grid;gap:5px;overflow:auto;padding:2px 0 12px;scrollbar-width:thin}
.nav{display:flex;align-items:center;gap:10px;min-height:44px;padding:11px 13px;border-radius:12px;color:#d7e7f9;text-decoration:none;font-weight:600;transition:.18s ease}
.nav:hover{background:rgba(255,255,255,.09);color:#fff;transform:translateX(2px)}
.nav.active{background:linear-gradient(90deg,#2869e8,#4288ff);color:#fff;box-shadow:0 8px 18px rgba(29,101,235,.28)}
.nav span{line-height:1.2}
.sidebar-user{margin-top:auto;border:1px solid rgba(255,255,255,.10);background:rgba(255,255,255,.07);border-radius:14px;padding:13px}
.sidebar-user small,.sidebar-user b,.sidebar-user a{display:block}.sidebar-user small{text-transform:uppercase;font-size:10px;letter-spacing:1px;color:#a9c6e5}.sidebar-user b{margin-top:3px}.sidebar-user a{margin-top:9px;color:#fff;font-size:12px;text-decoration:none;opacity:.85}
.sidebar-backdrop{position:fixed;inset:0;background:rgba(7,23,42,.55);z-index:45}

.main{margin-left:276px;width:calc(100% - 276px);padding:25px 29px 50px;min-width:0}
.topbar{min-height:72px;display:flex;align-items:center;gap:15px;justify-content:space-between;margin-bottom:20px}
.topbar-title{flex:1}.topbar h1{margin:0;font-size:29px;line-height:1.15}.topbar p{margin:5px 0 0;color:var(--muted)}
.top-actions{display:flex;gap:9px;align-items:center}.icon-button{display:none;width:42px;height:42px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;font-size:20px}
.connection-pill{display:inline-flex;align-items:center;gap:6px;padding:8px 11px;border:1px solid #cbe8d8;background:#ecf9f1;color:#15794c;border-radius:999px;font-size:11px;font-weight:800}.connection-pill.offline{border-color:#f0cece;background:#fff0f0;color:#a83d3d}.realtime-pill{border-color:#c8d9f3;background:#edf4ff;color:#285fa8}.realtime-pill.syncing{border-color:#b8d5f4;background:#e7f3ff;color:#17629c}.realtime-pill.updated{border-color:#b9e3ca;background:#e8f8ef;color:#17764a}.realtime-pill.paused{border-color:#ead8a8;background:#fff8df;color:#836116}.realtime-pill.error{border-color:#f0cece;background:#fff0f0;color:#a83d3d}
.page{display:none;animation:pageIn .2s ease}.page.active{display:block}@keyframes pageIn{from{opacity:.2;transform:translateY(5px)}to{opacity:1;transform:none}}

.hero{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:20px;border-radius:22px;padding:31px 34px;color:#fff;background:linear-gradient(125deg,#1859ce,#357fee 62%,#5b9cff);box-shadow:0 20px 45px rgba(37,99,235,.20)}
.hero:before,.hero:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.10)}.hero:before{width:260px;height:260px;right:-80px;top:-150px}.hero:after{width:150px;height:150px;right:130px;bottom:-110px}
.hero>div,.hero>strong{position:relative;z-index:1}.hero h2{font-size:31px;margin:7px 0 8px}.hero p{max-width:720px;margin:0;color:#e8f1ff;line-height:1.6}.hero strong{padding:20px 24px;border:1px solid rgba(255,255,255,.18);border-radius:16px;background:rgba(255,255,255,.12);backdrop-filter:blur(8px);font-size:21px;white-space:nowrap}
.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:900}

.stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin:18px 0}
.stat{position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:17px 18px;box-shadow:var(--shadow)}
.stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(var(--blue),#62a2ff)}
.stat span,.stat b,.stat small{display:block}.stat span{font-size:12px;color:var(--muted)}.stat b{font-size:25px;margin:4px 0 2px}.stat small{font-size:11px;color:#8a96a7}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:17px}.span2{grid-column:span 2}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.panel h2,.panel h3{margin-top:0}.panel h3{font-size:17px}
.big-number{text-align:center;border-radius:15px;padding:27px;background:linear-gradient(135deg,#edf4ff,#f7faff);font-size:31px;font-weight:900;color:var(--blue)}.big-number small{font-size:12px;color:var(--muted)}
.winner-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.winner-mini{border:1px solid var(--line);border-radius:13px;padding:13px;background:#fff}.winner-mini b,.winner-mini small{display:block}.winner-mini small{margin-top:4px;color:var(--muted)}
.generation-row{display:grid;grid-template-columns:95px minmax(100px,1fr) 35px;gap:9px;align-items:center;margin:11px 0}.bar{height:9px;background:#e8edf5;border-radius:999px;overflow:hidden}.bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),#68a6ff)}

.actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}.search{display:flex;align-items:center;gap:8px;min-width:320px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 13px;box-shadow:0 4px 14px rgba(29,49,78,.04)}.search input{width:100%;border:0;outline:0;background:transparent}.input{min-height:41px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--text)}
.primary,.secondary,.danger-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:41px;border-radius:11px;padding:10px 14px;text-decoration:none;cursor:pointer;font-weight:750;transition:.15s ease}.primary{border:1px solid var(--blue);background:linear-gradient(180deg,#337dff,#2563eb);color:#fff;box-shadow:0 7px 15px rgba(37,99,235,.18)}.primary:hover{filter:brightness(.98);transform:translateY(-1px)}.secondary{border:1px solid var(--line);background:#fff;color:var(--text)}.secondary:hover{background:#f8fafc}.danger-btn{border:1px solid var(--red);background:var(--red);color:#fff}.primary:disabled,.secondary:disabled,.danger-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.inline{display:inline-flex}.wide{width:100%}.big{font-size:16px;padding:13px 21px}

.table-wrap{padding:0;overflow:auto}table{width:100%;border-collapse:separate;border-spacing:0;min-width:900px}th,td{padding:14px 15px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}th{position:sticky;top:0;z-index:2;background:#f8fafc;color:#718096;font-size:10px;letter-spacing:.55px;text-transform:uppercase}tbody tr:hover{background:#f8fbff}tbody tr:last-child td{border-bottom:0}
.avatar{width:43px;height:43px;border-radius:13px;object-fit:cover;background:#edf3ff;display:grid;place-items:center;font-size:23px;border:1px solid #d9e6fb}.badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:850}.badge.ok{background:#e8f8ef;color:#157a4b}.badge.wait{background:#fff0da;color:#98600b}.badge.off{background:#ffe9e9;color:#a43939}.pagination{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:15px}
.notice{margin-bottom:15px;padding:13px 15px;border:1px solid #cfe0fc;border-radius:12px;background:#edf4ff;color:#285a98;line-height:1.55}.form-grid{display:grid;gap:12px}.form-grid label,.modal-form label{display:grid;gap:6px;color:var(--muted);font-size:12px}.form-grid input,.form-grid select,.form-grid textarea,.modal-form input,.modal-form select,.modal-form textarea{min-height:41px;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);outline:none}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.modal-form input:focus,.modal-form select:focus,.modal-form textarea:focus,.input:focus{border-color:#8cb5ff;box-shadow:0 0 0 3px rgba(37,99,235,.10)}.summary-list{display:grid;gap:10px}.summary-list div{display:flex;justify-content:space-between;padding-bottom:9px;border-bottom:1px dashed var(--line)}

.tree-controls{display:flex;align-items:center;gap:9px;margin-bottom:12px}.autocomplete{position:relative;flex:1}.autocomplete>.input,.autocomplete>input:not([type=hidden]){width:100%}.suggestions{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:80;max-height:300px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:5px}.suggestions button{width:100%;padding:10px 11px;border:0;border-radius:8px;background:#fff;text-align:left;cursor:pointer}.suggestions button:hover{background:#edf4ff}.suggestions small{color:var(--muted)}
.lineage-panel{position:relative;min-height:720px;overflow:auto;background:radial-gradient(circle at 30% 20%,#f7faff,#fff 55%)}.lineage-panel svg{position:absolute;inset:0;width:100%;height:100%;z-index:1}.lineage-node{position:absolute;z-index:2;width:184px;min-height:84px;padding:12px;border:2px solid #8bb2ff;border-radius:14px;background:#fff;text-align:center;cursor:pointer;box-shadow:0 8px 20px rgba(36,70,120,.09);transition:.15s ease}.lineage-node:hover{transform:translateY(-2px);box-shadow:0 12px 25px rgba(36,70,120,.15)}.lineage-node.female{border-color:#efa0c3}.lineage-node.focus{box-shadow:0 0 0 5px rgba(37,99,235,.15),0 12px 28px rgba(36,70,120,.16)}.lineage-node b,.lineage-node small{display:block}.lineage-node small{margin-top:5px;color:var(--muted)}.empty-state{height:680px;display:grid;place-items:center;color:var(--muted);text-align:center;padding:20px}

.grid-roulette{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:17px}.center{text-align:center}.wheel-wrap{position:relative;width:min(650px,75vw);height:min(650px,75vw);max-width:650px;max-height:650px;margin:10px auto}.wheel-wrap canvas{width:100%;height:100%;filter:drop-shadow(0 14px 24px rgba(30,65,120,.16))}.pointer{position:absolute;left:50%;top:-10px;z-index:4;transform:translateX(-50%);font-size:40px;color:#e44d4d;text-shadow:0 3px 6px rgba(0,0,0,.18)}.roulette-name{min-height:65px;padding:15px;font-size:29px;font-weight:900;color:var(--blue)}.chips{display:flex;flex-wrap:wrap;gap:7px;max-height:620px;overflow:auto}.chip{padding:7px 9px;border-radius:999px;background:#edf4ff;color:#275da9;font-size:11px}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.card-item{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow)}

.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px;background:rgba(5,22,42,.58);backdrop-filter:blur(3px)}.modal-card{position:relative;width:min(790px,96vw);max-height:92vh;overflow:auto;border-radius:20px;padding:25px;background:#fff;box-shadow:var(--shadow-lg)}.modal-close{position:absolute;right:14px;top:11px;width:38px;height:38px;border:0;border-radius:10px;background:#f1f4f8;font-size:25px;cursor:pointer}.modal-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-form .full{grid-column:1/-1}.toast{position:fixed;right:24px;bottom:24px;z-index:120;max-width:min(440px,90vw);padding:13px 17px;border-radius:12px;background:#17243b;color:#fff;box-shadow:var(--shadow-lg);opacity:0;transform:translateY(12px);pointer-events:none;transition:.22s ease}.toast.show{opacity:1;transform:none}

.login-body{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at top left,#dfeaff,#f7f9fc 55%)}.login-card{width:min(430px,95vw);padding:30px;border:1px solid rgba(255,255,255,.65);border-radius:22px;background:rgba(255,255,255,.96);box-shadow:0 25px 70px rgba(20,44,80,.15)}.login-logo{display:grid;place-items:center;width:78px;height:78px;margin:0 auto;border-radius:22px;background:#edf4ff;font-size:45px}.login-card h1{text-align:center;margin:17px 0 5px}.login-card p{text-align:center;color:var(--muted);line-height:1.5}.login-card label{display:grid;gap:6px;margin:13px 0;color:var(--muted);font-size:12px}.login-card input{min-height:45px;padding:11px 12px;border:1px solid var(--line);border-radius:11px;outline:none}.login-card input:focus{border-color:#8cb5ff;box-shadow:0 0 0 3px rgba(37,99,235,.10)}.alert{padding:12px;border-radius:10px}.alert.danger,.danger{background:#ffeaea;color:#9d3232}.check{display:flex!important;align-items:center!important;grid-template-columns:auto 1fr!important;gap:8px!important}.check input{min-height:auto;width:auto}

@media(max-width:1180px){.sidebar{width:82px;padding-left:11px;padding-right:11px}.brand{padding-left:5px;padding-right:5px;justify-content:center}.brand div,.nav span,.sidebar-user b,.sidebar-user small{display:none}.nav{justify-content:center;font-size:18px}.main{margin-left:82px;width:calc(100% - 82px)}.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.winner-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.sidebar{width:276px;transform:translateX(-105%)}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%;padding:15px}.icon-button{display:inline-grid;place-items:center;flex:none}.topbar{align-items:flex-start}.topbar-title h1{font-size:24px}.top-actions{margin-left:auto;flex-wrap:wrap;justify-content:flex-end}.connection-pill{display:none}.hero{display:block;padding:25px}.hero h2{font-size:27px}.hero strong{display:inline-block;margin-top:18px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.grid2,.grid-roulette,.cards{grid-template-columns:1fr}.span2{grid-column:auto}.actions,.tree-controls{align-items:stretch}.search{min-width:0;flex:1}.wheel-wrap{width:min(620px,88vw);height:min(620px,88vw)}.lineage-panel{min-height:640px}.modal-form{grid-template-columns:1fr}.modal-form .full{grid-column:auto}}
@media(max-width:540px){.main{padding:12px}.top-actions .secondary{padding:8px 10px;font-size:11px}.hero{border-radius:18px}.hero h2{font-size:24px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:14px}.stat b{font-size:21px}.panel{padding:15px;border-radius:15px}.actions{flex-direction:column}.actions>*{width:100%}.winner-row{grid-template-columns:1fr}.tree-controls{flex-direction:column}.roulette-name{font-size:23px}.modal{padding:8px}.modal-card{padding:21px 15px}.toast{right:12px;bottom:12px}.login-card{padding:24px}}
/* Fallback navigasi: menu tetap membuka halaman meskipun JavaScript gagal. */
@supports selector(body:has(.page:target)){
  body:has(.page:target) .page{display:none}
  body:has(.page:target) .page:target{display:block;animation:pageIn .2s ease}
}


/* V6.3 — Bagan silsilah seperti referensi: pasangan sejajar, anak terhubung ke bawah */
.family-tree-banner{position:relative;overflow:hidden;margin-bottom:14px;padding:30px 24px 27px;border:1px solid #eadf8d;border-radius:20px;background:linear-gradient(180deg,#ffed7d,#fff0a1);text-align:center;box-shadow:var(--shadow)}
.family-tree-banner .eyebrow{position:relative;z-index:2;color:#675c24}.family-tree-banner h2{position:relative;z-index:2;margin:6px 0 7px;font-family:Georgia,"Times New Roman",serif;font-size:42px;letter-spacing:2px;text-transform:uppercase;color:#30333b}
.family-tree-banner p{position:relative;z-index:2;max-width:780px;margin:0 auto;color:#615d42;line-height:1.55}
.family-tree-bubbles i{position:absolute;border-radius:50%;background:rgba(255,255,255,.9)}
.family-tree-bubbles i:nth-child(1){width:42px;height:42px;left:18px;top:19px}.family-tree-bubbles i:nth-child(2){width:23px;height:23px;left:21%;top:17px}.family-tree-bubbles i:nth-child(3){width:31px;height:31px;right:16%;top:23px}.family-tree-bubbles i:nth-child(4){width:53px;height:53px;right:4%;top:50px}.family-tree-bubbles i:nth-child(5){width:70px;height:70px;left:25%;bottom:-30px}

.family-tree-toolbar{position:sticky;top:8px;z-index:25;padding:10px;border:1px solid var(--line);border-radius:14px;background:rgba(243,246,251,.95);backdrop-filter:blur(10px);box-shadow:0 8px 24px rgba(29,49,78,.08)}
.tree-search-box{min-width:260px}.family-tree-stats{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:0 0 12px}
.family-tree-stats span{display:inline-flex;align-items:center;gap:5px;padding:8px 11px;border:1px solid #d9e4f2;border-radius:999px;background:#fff;color:var(--muted);font-size:11px}
.family-tree-stats b{font-size:15px;color:var(--blue)}
.tree-selection-info{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px;padding:11px 13px;border:1px solid #c9dcfb;border-radius:12px;background:#edf4ff}
.tree-selection-info>div{display:grid;gap:2px;min-width:125px}.tree-selection-info span{font-size:9px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:#6280aa}.tree-selection-info b{font-size:13px}.tree-selection-info button{margin-left:auto}

.tree-fit-all-button{white-space:nowrap}.tree-fit-all-button.fit-active{border-color:#155fd6;background:#155fd6;color:#fff;box-shadow:0 7px 18px rgba(21,95,214,.2)}

.family-tree-viewport{position:relative;min-height:700px;max-height:calc(100vh - 170px);padding:0;overflow:auto;background:#fff;touch-action:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.family-tree-viewport.tree-touch-panning,.family-tree-viewport.tree-touch-zooming{cursor:grabbing;user-select:none;-webkit-user-select:none}.tree-touch-hint{display:none;align-items:center;justify-content:center;grid-column:1/-1;padding:7px 10px;border:1px dashed #b9cce8;border-radius:10px;background:#f6f9ff;color:#536b8d;font-size:10px;font-weight:750;text-align:center}
.tree-loading{height:680px;display:grid;place-items:center;padding:20px;color:var(--muted);font-weight:700;text-align:center}
.family-tree-stage{--tree-scale:1;position:relative;min-width:100%;width:max-content;min-height:700px;padding:50px 70px 80px;background:#fff}
.family-tree-root{position:relative;z-index:4;display:inline-block;min-width:100%}
.genealogy-chart{display:flex;justify-content:center;width:max-content;min-width:100%}

.family-tree-bands{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}.family-generation-band{position:absolute;left:0;width:100%;min-width:100%;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px rgba(255,255,255,.58),inset 0 -1px rgba(70,85,105,.035);transition:background .2s ease}
.family-generation-band>span{position:sticky;left:15px;display:inline-block;margin:10px 0 0 12px;padding:5px 10px;border:1px solid var(--generation-label-border,rgba(210,220,230,.9));border-radius:999px;background:var(--generation-label-bg,rgba(255,255,255,.94));color:var(--generation-label-text,#4d5c70);font-size:10px;font-weight:900;letter-spacing:.6px;text-transform:uppercase;box-shadow:0 3px 10px rgba(50,50,30,.07)}

.family-tree-lines,.family-tree-focus-lines{position:absolute;inset:0;overflow:visible;pointer-events:none}.family-tree-lines{z-index:2}.family-tree-focus-lines{z-index:8}.family-tree-focus-cards{position:absolute;inset:0;z-index:9;pointer-events:none}
.genealogy-relation-line,.genealogy-union-line{fill:none;stroke:#34373c;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.genealogy-union-dot{fill:#34373c}.genealogy-maternal-line{stroke:#a85c80;stroke-width:1.9}.genealogy-maternal-line.multi-wife{filter:drop-shadow(0 0 1px rgba(255,255,255,.7))}.genealogy-mother-dot{fill:#fff;stroke:#c86d98;stroke-width:2;vector-effect:non-scaling-stroke}.genealogy-mother-dot.multi-wife{filter:drop-shadow(0 0 2px rgba(255,255,255,.9))}.genealogy-crossing-bg,.genealogy-crossing-mark{vector-effect:non-scaling-stroke;stroke-linecap:round}.genealogy-crossing-bg{stroke:#fff;stroke-width:5.2}.genealogy-crossing-mark{stroke:#3b4d68;stroke-width:2.1;stroke-dasharray:2 2}

.genealogy-branch{display:flex;flex-direction:column;align-items:center;position:relative;flex:0 0 auto}
.genealogy-family-node{display:flex;justify-content:center;position:relative;z-index:4}
.genealogy-union-cards{display:flex;align-items:center;justify-content:center;gap:calc(28px * var(--tree-scale));min-height:calc(124px * var(--tree-scale))}
.genealogy-union-cards.genealogy-polygamy-layout{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-width:max-content;padding-top:0;min-height:calc(150px * var(--tree-scale))}
.genealogy-polygamy-columns{display:flex;align-items:flex-start;justify-content:center;gap:calc(18px * var(--tree-scale));min-width:max-content;position:relative}
.genealogy-polygamy-column{display:flex;flex-direction:column;align-items:center;position:relative;min-width:max-content}
.genealogy-polygamy-husband{display:flex;justify-content:center;position:relative;z-index:4}
.genealogy-polygamy-husband-column{z-index:4}
.genealogy-mother-child-group{z-index:4}
.genealogy-mother-child-group>.genealogy-spouse-wrap{justify-content:center}
.genealogy-mother-children-row{display:flex;align-items:flex-start;justify-content:center;gap:calc(28px * var(--tree-scale));margin-top:calc(56px * var(--tree-scale));min-width:max-content;position:relative}
.genealogy-mother-children-row.empty{min-height:calc(18px * var(--tree-scale));margin-top:calc(18px * var(--tree-scale))}
.genealogy-spouse-wrap{position:relative;display:flex;align-items:center}.marriage-number{position:absolute;left:50%;top:calc(-17px * var(--tree-scale));transform:translateX(-50%);white-space:nowrap;color:#776f4e;font-size:calc(8px * var(--tree-scale));font-weight:800}
.genealogy-children-row{display:flex;align-items:flex-start;justify-content:center;gap:calc(34px * var(--tree-scale));margin-top:calc(72px * var(--tree-scale));position:relative}

.genealogy-person-card{position:relative;display:flex;flex-direction:column;align-items:center;width:calc(104px * var(--tree-scale));min-height:calc(119px * var(--tree-scale));padding:calc(7px * var(--tree-scale));border:1px solid transparent;border-radius:8px;background:rgba(255,255,255,.92);color:var(--text);text-align:center;cursor:pointer;transition:opacity .18s,transform .18s,box-shadow .18s,border-color .18s;box-shadow:0 4px 12px rgba(42,52,65,.045)}
.genealogy-person-card:hover{transform:translateY(-3px);border-color:#9ab9e7;box-shadow:0 11px 22px rgba(42,74,117,.13)}
.genealogy-photo{display:grid;place-items:center;width:calc(72px * var(--tree-scale));height:calc(72px * var(--tree-scale));overflow:hidden;border:2px solid #8fb1e5;border-radius:4px;background:#eaf1fc}
.genealogy-person-card.female .genealogy-photo{border-color:#e5a0bd}.genealogy-photo img{width:100%;height:100%;object-fit:cover}.genealogy-avatar{font-size:calc(37px * var(--tree-scale))}
.genealogy-name{display:block;max-width:100%;margin-top:calc(6px * var(--tree-scale));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:calc(11px * var(--tree-scale));font-weight:800}
.genealogy-meta,.genealogy-role{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.genealogy-meta{margin-top:2px;color:#747c89;font-size:calc(8px * var(--tree-scale))}.genealogy-role{margin-top:2px;color:#4e688e;font-size:calc(8px * var(--tree-scale))}
.genealogy-deceased{position:absolute;right:4px;top:4px;padding:2px 4px;border-radius:999px;background:#f0f1f3;color:#7b5c63;font-size:calc(7px * var(--tree-scale));font-weight:800}.genealogy-marriage-status{position:absolute;left:50%;bottom:-13px;transform:translateX(-50%);white-space:nowrap;color:#9a5b5b;font-size:calc(7px * var(--tree-scale))}
.genealogy-person-card.deceased{filter:saturate(.7);background:#f8f8f8}.genealogy-person-card.tree-dimmed{opacity:.12;filter:grayscale(.72)}.genealogy-person-card.tree-ancestor{opacity:1;border-color:#e5a127;background:#fffaf0;box-shadow:0 0 0 4px rgba(229,161,39,.17),0 10px 22px rgba(65,58,35,.11)}
.genealogy-person-card.tree-selected{opacity:1;border-color:#1e64e7;background:#f3f7ff;box-shadow:0 0 0 5px rgba(30,100,231,.18),0 13px 28px rgba(24,73,157,.17);transform:translateY(-3px)}

.unlinked-family-section{margin-top:70px;padding:25px;border-top:2px dashed #d7dee8}.unlinked-family-section h3{margin:0 0 5px}.unlinked-family-section p{margin:0 0 15px;color:var(--muted)}.unlinked-family-grid{display:flex;flex-wrap:wrap;gap:12px}

.family-focus-line-glow{stroke:#fff;stroke-width:14;stroke-linecap:round;opacity:.98}.family-focus-line{stroke:#1765ee;stroke-width:5;stroke-linecap:round;stroke-dasharray:11 7;animation:familyTreeDash 1.05s linear infinite}.family-focus-dot{fill:#fff;stroke:#1765ee;stroke-width:4}.family-focus-dot.selected{fill:#1765ee;stroke:#fff;stroke-width:5}
@keyframes familyTreeDash{to{stroke-dashoffset:-36}}
.family-focus-card{position:absolute;pointer-events:auto;display:flex;flex-direction:column;align-items:center;width:112px;min-height:114px;padding:8px;border:3px solid #1765ee;border-radius:10px;background:#fff;color:var(--text);text-align:center;box-shadow:0 14px 34px rgba(24,73,157,.24);cursor:pointer}.family-focus-card.female{border-color:#d75d96}.family-focus-avatar{display:grid;place-items:center;width:55px;height:55px;border-radius:6px;background:#edf3ff;font-size:30px}.family-focus-card b{display:block;max-width:100%;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.family-focus-card small{margin-top:3px;color:var(--muted);font-size:9px}

.family-tree-legend{display:flex;align-items:center;gap:17px;flex-wrap:wrap;margin-top:12px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:#fff;color:#5f6f85;font-size:11px}.family-tree-legend span{display:flex;align-items:center;gap:6px}.family-tree-legend small{margin-left:auto}.legend-card{width:19px;height:14px;border:2px solid #8fb1e5;border-radius:3px;background:#fff}.legend-card.female{border-color:#e5a0bd}.legend-line{width:27px;border-top:2px solid #34373c}.legend-line.focus{border-top:4px dashed #1765ee}.legend-line.maternal1{border-top:3px solid #ef6aa8}.legend-line.maternal2{border-top:3px solid #76b947}.legend-line.maternal3{border-top:3px solid #f59e0b}.legend-line.maternal4{border-top:3px solid #8b6fe8}.legend-crossing{position:relative;display:inline-block;width:24px;height:14px}.legend-crossing::before,.legend-crossing::after{content:'';position:absolute;left:0;right:0;top:6px;border-top:2px solid #76b947}.legend-crossing::after{left:11px;right:auto;top:0;height:14px;border-top:0;border-left:2px dashed #ef6aa8}


@media (pointer:coarse){.tree-touch-hint{display:flex}}

/* Android/tablet: menu drawer selalu menampilkan ikon dan nama menu. */
@media(max-width:1180px){
 .sidebar{width:min(310px,88vw);padding:20px 14px;transform:translateX(-105%)}
 .sidebar.open{transform:translateX(0)}
 .sidebar .brand{justify-content:flex-start;padding-left:10px;padding-right:10px}
 .sidebar .brand div,.sidebar .nav span,.sidebar .sidebar-user b,.sidebar .sidebar-user small{display:block!important}
 .sidebar .nav{justify-content:flex-start!important;gap:12px!important;padding:12px 14px!important;font-size:14px!important}
 .sidebar .nav span{white-space:normal}
 .sidebar .sidebar-user a{display:block}
 .main{margin-left:0;width:100%}
 .icon-button{display:inline-grid;place-items:center}
}
@media(max-width:820px){
 .family-tree-banner{padding:25px 16px}.family-tree-banner h2{font-size:32px}.family-tree-banner p{font-size:12px}
 .family-tree-toolbar{position:relative;top:auto;display:grid;grid-template-columns:1fr 1fr}
 .family-tree-toolbar .tree-search-box{grid-column:1/-1;min-width:0}.family-tree-toolbar #treeMode{grid-column:1/-1}
 .family-tree-stats{gap:7px}.tree-selection-info>div{min-width:calc(50% - 8px)}.tree-selection-info button{width:100%;margin-left:0}
 .family-tree-viewport{min-height:620px;max-height:72vh}.family-tree-stage{padding:45px 45px 70px}
 .family-tree-legend small{width:100%;margin-left:0}
}
@media(max-width:540px){
 .family-tree-toolbar{grid-template-columns:repeat(3,1fr)}.family-tree-toolbar .tree-search-box,.family-tree-toolbar #treeMode,.family-tree-toolbar #treeFitAll,.family-tree-toolbar #treeReset{grid-column:1/-1}
 .family-tree-toolbar button{width:100%}.family-tree-stats span{font-size:10px}
}

/* V7 FINAL — Kepala keluarga, anggota, pernikahan, uang, dan rolet peserta */
.muted{color:var(--muted)}.button-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.table-actions{display:flex;gap:6px;flex-wrap:wrap}.table-actions .primary,.table-actions .secondary,.table-actions .danger-btn{padding:7px 9px;font-size:11px}.wide{width:100%}.compact-stats{grid-template-columns:repeat(5,minmax(130px,1fr))}.family-summary-stats{grid-template-columns:repeat(5,minmax(150px,1fr))}.family-filter-bar,.marriage-filter-bar{justify-content:flex-start;flex-wrap:wrap}.family-filter-bar .search,.marriage-filter-bar .search{flex:1;min-width:280px}.family-thumb,.marriage-thumb{width:54px;height:54px;border-radius:12px;object-fit:cover;background:#edf3ff;display:grid;place-items:center;font-size:25px}.family-thumb.placeholder,.marriage-thumb.placeholder{border:1px dashed #bfd0e5}.table-wrap td small{display:block;margin-top:4px;color:var(--muted)}
.family-card-grid{display:none}.family-mobile-card{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:#fff;box-shadow:var(--shadow)}.family-mobile-cover{height:145px;background:linear-gradient(135deg,#e8f1ff,#f7f9fc);display:grid;place-items:center;font-size:55px;overflow:hidden}.family-mobile-cover img{width:100%;height:100%;object-fit:cover}.family-mobile-body{padding:15px}.family-mobile-head{display:flex;justify-content:space-between;gap:12px}.family-mobile-head small{color:var(--muted)}.family-mobile-head h3{margin:3px 0}.family-mobile-head p{margin:0;color:var(--muted);font-size:12px}.family-mobile-meta{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:13px 0;font-size:12px;color:#52637a}.family-mobile-actions{display:flex;gap:8px;flex-wrap:wrap}.family-mobile-actions>*{flex:1;text-align:center}
.family-detail-header{display:flex;gap:16px;align-items:center;margin-bottom:16px;padding-right:36px}.family-detail-cover{width:105px;height:105px;border-radius:16px;overflow:hidden;background:#edf3ff;display:grid;place-items:center;font-size:48px;flex:0 0 auto}.family-detail-cover img{width:100%;height:100%;object-fit:cover}.family-detail-header h2{margin:4px 0}.family-detail-header p{margin:0;color:var(--muted)}.detail-tabs{display:flex;gap:7px;overflow:auto;border-bottom:1px solid var(--border);padding-bottom:9px;margin-bottom:15px}.detail-tabs button{border:0;background:#eef3fa;padding:9px 12px;border-radius:9px;white-space:nowrap;cursor:pointer}.detail-tabs button.active{background:var(--blue);color:#fff}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.detail-grid article{border:1px solid var(--border);border-radius:13px;padding:15px;background:#fafcff}.detail-grid article.span2{grid-column:1/-1}.detail-grid h3{margin-top:0}.detail-grid dl{display:grid;grid-template-columns:135px 1fr;gap:8px;margin:0}.detail-grid dt{color:var(--muted)}.detail-grid dd{margin:0;font-weight:650}.notice.warning{background:#fff5df;border-color:#f2d39a;color:#865b12}.timeline-item{display:grid;gap:3px;padding:9px 0;border-bottom:1px dashed var(--border)}.timeline-item:last-child{border-bottom:0}.timeline-item span{font-size:12px;color:var(--muted)}
.member-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:10px}.mini-person-card{padding:12px;border:1px solid var(--border);border-radius:12px;text-align:center;background:#fff}.mini-person-card>div{width:58px;height:58px;margin:auto;display:grid;place-items:center;border-radius:50%;overflow:hidden;background:#edf3ff;font-size:30px}.mini-person-card img{width:100%;height:100%;object-fit:cover}.mini-person-card b,.mini-person-card small,.mini-person-card span{display:block}.mini-person-card b{margin-top:7px}.mini-person-card small{color:var(--muted);margin-top:3px}.mini-person-card span{font-size:10px;margin-top:4px;color:#42638d}.photo-upload-form{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:15px;padding:13px;border:1px solid var(--border);border-radius:12px;background:#f8fbff}.photo-upload-form label{display:grid;gap:5px}.photo-upload-form .full{grid-column:1/-1}.family-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:12px}.family-gallery article{overflow:hidden;border:1px solid var(--border);border-radius:13px;background:#fff}.family-gallery article>img{width:100%;height:150px;object-fit:cover}.family-gallery article>div{padding:10px}.family-gallery b,.family-gallery small{display:block}.family-gallery small{color:var(--muted);margin-top:4px}.empty-state.small{min-height:160px}.member-detail-hero,.marriage-detail-hero{display:flex;gap:16px;align-items:center;margin-bottom:17px;padding-right:35px}.member-detail-hero>div,.marriage-detail-hero>img,.marriage-detail-hero>div{width:95px;height:95px;border-radius:16px;object-fit:cover;background:#edf3ff;display:grid;place-items:center;font-size:45px;flex:0 0 auto}.member-detail-hero h2,.marriage-detail-hero h2{margin:4px 0}.member-detail-hero p,.marriage-detail-hero p{margin:0;color:var(--muted)}
.linked-child{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--border)}.link-child-form{display:flex;gap:8px;margin-top:12px}.link-child-form select{flex:1;padding:9px;border:1px solid var(--border);border-radius:9px}.marriage-detail-hero>img{object-fit:cover}.marriage-detail-hero>div{font-size:45px}.money-input{font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:.2px}.audience-qr{min-height:210px;display:grid;place-items:center;margin:10px 0;padding:10px;border:1px dashed #c8d6e8;border-radius:12px;background:#fff}.audience-qr img{width:190px;height:190px}.audience-qr span{max-width:230px;color:var(--muted);text-align:center;font-size:12px}.roulette-side-panel hr{border:0;border-top:1px solid var(--border);margin:18px 0}.winner-card-final{text-align:center}.winner-card-final>img,.winner-avatar{width:90px;height:90px;border-radius:50%;object-fit:cover;margin:0 auto 12px;background:#edf3ff;display:grid;place-items:center;font-size:45px}.final-upgrade-panel{margin-top:17px}

@media(max-width:1180px){.family-summary-stats,.compact-stats{grid-template-columns:repeat(2,1fr)}.family-filter-bar,.marriage-filter-bar{display:grid;grid-template-columns:1fr 1fr}.family-filter-bar .search,.marriage-filter-bar .search{grid-column:1/-1;min-width:0}}
@media(max-width:820px){.family-table-desktop{display:none}.family-card-grid{display:grid;grid-template-columns:1fr;gap:12px}.family-summary-stats,.compact-stats{grid-template-columns:1fr 1fr}.detail-grid{grid-template-columns:1fr}.detail-grid article.span2{grid-column:auto}.detail-grid dl{grid-template-columns:110px 1fr}.photo-upload-form{grid-template-columns:1fr}.photo-upload-form .full{grid-column:auto}.family-detail-header,.member-detail-hero,.marriage-detail-hero{align-items:flex-start}.family-filter-bar,.marriage-filter-bar{grid-template-columns:1fr}.family-filter-bar .search,.marriage-filter-bar .search{grid-column:auto}.link-child-form{flex-direction:column}}
@media(max-width:520px){.family-summary-stats,.compact-stats{grid-template-columns:1fr}.family-mobile-meta{grid-template-columns:1fr}.family-detail-header{display:block}.family-detail-cover{width:100%;height:190px;margin-bottom:12px}.detail-grid dl{grid-template-columns:1fr}.detail-grid dd{margin-bottom:7px}.member-detail-hero,.marriage-detail-hero{display:block}.member-detail-hero>div,.marriage-detail-hero>img,.marriage-detail-hero>div{margin-bottom:11px}.modal-card{padding:20px 14px}.button-row>*{flex:1;text-align:center}}


/* Versi 1.0.0 — Input Silsilah Bertahap dan nama sama */
.wizard-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:17px;padding:25px 28px;border-radius:18px;background:linear-gradient(125deg,#155fd6,#4b8fff);color:#fff;box-shadow:var(--shadow)}.wizard-hero h2{margin:6px 0;font-size:28px}.wizard-hero p{margin:0;max-width:780px;color:#eaf2ff}.wizard-hero-icon{font-size:64px}.wizard-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:17px}.wizard-main{min-height:650px}.wizard-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:20px}.wizard-step{border:1px solid var(--border);background:#f8fafc;color:var(--muted);padding:10px;border-radius:11px;display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer}.wizard-step span{width:27px;height:27px;display:grid;place-items:center;border-radius:50%;background:#e8eef7;font-weight:800}.wizard-step b{font-size:12px}.wizard-step.active{border-color:var(--blue);background:#edf4ff;color:#235fc2}.wizard-step.active span,.wizard-step.done span{background:var(--blue);color:#fff}.wizard-content{min-height:470px}.wizard-section h3{margin:0 0 15px}.wizard-section p{color:var(--muted)}.wizard-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}.wizard-mode-card{display:grid;grid-template-columns:auto 1fr;gap:7px 10px;padding:17px;border:2px solid var(--border);border-radius:14px;cursor:pointer}.wizard-mode-card:has(input:checked){border-color:var(--blue);background:#edf4ff}.wizard-mode-card input{grid-row:span 2}.wizard-mode-card span{font-size:12px;color:var(--muted)}.wizard-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.wizard-form-grid label,.wizard-wide{display:grid;gap:6px;font-size:13px;color:var(--muted);position:relative}.wizard-form-grid input,.wizard-form-grid select,.wizard-wide input{padding:11px;border:1px solid var(--border);border-radius:9px;background:#fff}.wizard-wide{grid-column:1/-1}.wizard-toggle{padding:12px;border-radius:10px;background:#f6f9fd;margin-bottom:14px}.wizard-existing-row{display:flex;gap:10px;align-items:end}.wizard-existing-row .wizard-wide{flex:1}.wizard-selected-person{padding:12px 14px;border-radius:11px;background:#eaf7ef;border:1px solid #bfe6ce;display:grid;gap:4px;margin:10px 0}.wizard-selected-person span{font-size:12px;color:#4d6d59}.wizard-title-row{display:flex;justify-content:space-between;gap:12px;align-items:center}.wizard-child-card{border:1px solid var(--border);border-radius:14px;padding:14px;margin:11px 0;background:#fbfcfe}.wizard-child-card header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.wizard-remove-child{padding:7px 10px}.wizard-actions{display:flex;gap:9px;justify-content:flex-end;padding-top:16px;border-top:1px solid var(--border)}.wizard-side{height:max-content;position:sticky;top:15px}.wizard-draft-box{display:grid;gap:7px;padding:13px;border-radius:11px;background:#f6f9fd}.wizard-draft-box small{color:var(--muted)}.wizard-guide{display:grid;gap:8px;margin:17px 0;padding:13px;border:1px dashed #cbd8e8;border-radius:11px}.wizard-guide span{font-size:12px;color:var(--muted)}.wizard-review-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.wizard-review-card{border:1px solid var(--border);border-radius:13px;padding:14px;background:#fff}.wizard-review-card>span{font-size:10px;text-transform:uppercase;color:var(--muted)}.wizard-review-card h4{margin:5px 0}.wizard-review-card p{font-size:12px;margin:0 0 8px}.duplicate-review{display:grid;gap:8px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}.duplicate-person{display:grid;gap:4px;padding:9px;border-radius:9px;background:#fff4df;border:1px solid #f1d39d}.duplicate-person small{font-size:11px;color:#7b653d;line-height:1.4}.duplicate-person.compact{margin-top:6px}.duplicate-notice{margin-top:6px;padding:10px;border-radius:9px;background:#fff4df;border:1px solid #f1d39d;color:#72552a}.duplicate-notice p{font-size:11px;margin:5px 0}.wizard-family-option{margin:17px 0;padding:13px;border:1px solid #cfe0ff;border-radius:11px;background:#edf4ff}.wizard-final-note{padding:12px;border-radius:10px;background:#e9f8ef;color:#176f45}.wizard-success{text-align:center;padding:35px}.wizard-success>div:first-child{font-size:68px}.wizard-child-continue{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.empty-state.small{min-height:180px}.wizard-actions button:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:950px){.wizard-layout{grid-template-columns:1fr}.wizard-side{position:relative;top:auto}.wizard-steps{grid-template-columns:1fr 1fr}.wizard-review-grid{grid-template-columns:1fr}}
@media(max-width:620px){.wizard-hero{padding:19px;display:block}.wizard-hero-icon{display:none}.wizard-mode-grid,.wizard-form-grid{grid-template-columns:1fr}.wizard-wide{grid-column:auto}.wizard-steps{grid-template-columns:1fr}.wizard-step{padding:8px}.wizard-actions{display:grid;grid-template-columns:1fr 1fr}.wizard-actions #wizardSaveDraft{grid-column:1/-1}.wizard-existing-row{display:block}.wizard-review-grid{grid-template-columns:1fr}}

/* Popup tindakan cepat pada anggota silsilah */
.tree-member-popup{position:fixed;z-index:1800;width:min(330px,calc(100vw - 24px));padding:16px;border:1px solid #c9d8eb;border-radius:16px;background:#fff;box-shadow:0 22px 55px rgba(24,52,91,.24);color:var(--text);animation:treePopupIn .16s ease-out}
.tree-member-popup.hidden{display:none}
@keyframes treePopupIn{from{opacity:0;transform:translateY(5px) scale(.98)}to{opacity:1;transform:none}}
.tree-member-popup-close{position:absolute;top:9px;right:9px;width:30px;height:30px;border:0;border-radius:50%;background:#eef3fa;color:#52637a;font-size:20px;line-height:1;cursor:pointer}
.tree-member-popup-close:hover{background:#dde8f6;color:#1c4e96}
.tree-member-popup-head{display:flex;align-items:center;gap:12px;padding-right:28px}
.tree-member-popup-photo{display:grid;place-items:center;flex:0 0 auto;width:66px;height:66px;overflow:hidden;border:3px solid #8fb1e5;border-radius:13px;background:#edf3ff;font-size:35px}
.tree-member-popup-photo.female{border-color:#e5a0bd;background:#fff1f6}
.tree-member-popup-photo img{width:100%;height:100%;object-fit:cover}
.tree-member-popup-head h3{margin:3px 0 4px;font-size:17px;line-height:1.2}
.tree-member-popup-head p{margin:0;color:var(--muted);font-size:11px}
.tree-member-popup-meta{display:grid;grid-template-columns:1fr 62px 72px;gap:7px;margin:14px 0 9px}
.tree-member-popup-meta span{display:grid;gap:2px;min-width:0;padding:9px 7px;border:1px solid var(--border);border-radius:10px;background:#f8fbff;text-align:center}
.tree-member-popup-meta b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
.tree-member-popup-meta small{color:var(--muted);font-size:9px}
.tree-member-popup-note{margin:0 0 10px;padding:8px 10px;border-radius:9px;background:#f4f7fb;color:#5c6b7d;font-size:10px}
.tree-member-popup-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.tree-member-popup-actions>*{display:flex;align-items:center;justify-content:center;min-height:37px;padding:8px 9px;text-align:center;font-size:11px;text-decoration:none}
.tree-member-popup-actions .tree-popup-wide{grid-column:1/-1}
.tree-member-popup-hint{display:block;margin-top:10px;color:var(--muted);font-size:9px;line-height:1.45}
.tree-member-popup-loading{padding:25px 10px;text-align:center;color:var(--muted);font-size:12px}
.tree-form-notice{margin-bottom:13px;background:#edf5ff;border-color:#bfd6f7;color:#24568f}
@media(max-width:620px){
 .tree-member-popup{left:12px!important;right:12px!important;top:auto!important;bottom:12px;width:auto;max-height:calc(100vh - 24px);overflow:auto;border-radius:18px}
 .tree-member-popup-actions>*{min-height:42px}
}
.tree-popup-head-status{grid-column:1/-1;display:flex;align-items:center;justify-content:center;min-height:37px;padding:8px 9px;border:1px solid #b9dfc6;border-radius:9px;background:#edf9f1;color:#287044;font-size:11px;font-weight:700}


.tree-color-toggle.color-active{border-color:#8b6fe8;background:#f5f1ff;color:#5d43ba}.tree-color-toggle:not(.color-active){opacity:.78}
.genealogy-union-line.primary-marriage-line{stroke:#172b4d;filter:drop-shadow(0 0 1px rgba(23,43,77,.25))}.genealogy-union-dot.primary{fill:#172b4d;stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke}.genealogy-spouse-wrap.primary-spouse .genealogy-person-card{border-color:#f0b429;box-shadow:0 0 0 3px rgba(240,180,41,.15),0 8px 18px rgba(42,52,65,.08)}.genealogy-spouse-wrap.primary-spouse::after{content:'★ Utama';position:absolute;left:50%;bottom:calc(-23px * var(--tree-scale));transform:translateX(-50%);white-space:nowrap;padding:2px 6px;border-radius:999px;background:#fff7d6;color:#8b6500;font-size:calc(7px * var(--tree-scale));font-weight:900}.genealogy-maternal-line.primary-maternal-line{filter:drop-shadow(0 0 1.2px rgba(23,43,77,.25))}
.family-tree-legend.colors-disabled .legend-line.maternal1,.family-tree-legend.colors-disabled .legend-line.maternal2,.family-tree-legend.colors-disabled .legend-line.maternal3,.family-tree-legend.colors-disabled .legend-line.maternal4{border-top-color:#a85c80}
.modal-lead{margin:-4px 0 16px;color:var(--muted);line-height:1.55}.tree-color-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tree-color-option{display:grid;grid-template-columns:1fr 52px 72px;gap:10px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}.tree-color-option input[type=color]{width:52px;height:38px;padding:2px;border:1px solid #d4dce8;border-radius:8px;background:#fff}.tree-color-option small{text-align:right;color:var(--muted);font-family:monospace}.tree-color-preview{grid-column:1/-1;padding:13px;border:1px solid var(--line);border-radius:12px;background:#fff}.tree-color-preview>div{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.tree-color-preview span{padding:7px 10px;border-left:6px solid var(--preview-color);border-radius:7px;background:#f7f9fc;font-size:11px;font-weight:800}@media(max-width:700px){.tree-color-form{grid-template-columns:1fr}.tree-color-option{grid-template-columns:1fr 48px 68px}}

/* Petunjuk pengisian form anggota */
.member-form-guide{display:flex;align-items:flex-start;gap:8px;margin:0 0 14px;padding:11px 13px;border:1px solid #cfe0f7;border-radius:12px;background:#f2f7ff;color:#38577e}.member-form-guide b{white-space:nowrap;color:#155fd6}.member-form-guide span{font-size:12px;line-height:1.45}.member-guided-form label{align-content:start}.member-guided-form .field-hint{display:block;margin-top:5px;color:#718096;font-size:10px;line-height:1.35;font-weight:500}.member-guided-form input::placeholder,.member-guided-form textarea::placeholder{color:#9aa8ba;opacity:1}.member-guided-form select:invalid{color:#8b98aa}.member-guided-form select option{color:var(--text)}

/* Login perangkat tepercaya */
.remember-device-check{display:flex!important;align-items:flex-start!important;grid-template-columns:none!important;gap:10px!important;margin:14px 0 8px!important;padding:12px 13px;border:1px solid #d9e4f2;border-radius:12px;background:#f7faff;color:var(--text)!important;cursor:pointer}
.remember-device-check input{width:18px!important;height:18px!important;min-height:auto!important;margin:2px 0 0;padding:0;accent-color:var(--blue)}
.remember-device-check span{display:grid;gap:3px;line-height:1.35}.remember-device-check b{font-size:13px;color:#233752}.remember-device-check small{font-size:11px;color:var(--muted)}
.remember-device-note{margin:0 0 15px;padding:9px 11px;border-radius:10px;background:#fff8e8;color:#71531b;font-size:10px;line-height:1.45}

.sidebar-user-actions{display:flex;align-items:center;gap:8px;margin-top:9px}.sidebar-user-actions button,.sidebar-user-actions a{flex:1;margin:0!important;padding:8px 9px;border:1px solid rgba(255,255,255,.16);border-radius:9px;background:rgba(255,255,255,.08);color:#fff!important;font:inherit;font-size:11px!important;text-align:center;text-decoration:none;cursor:pointer;opacity:.92}.sidebar-user-actions button:hover,.sidebar-user-actions a:hover{background:rgba(255,255,255,.16);opacity:1}
.remember-device-list{display:grid;gap:10px;margin:16px 0}.remember-device-item{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:#f9fbfe}.remember-device-item.current{border-color:#8db8ff;background:#eef5ff}.remember-device-item h4{margin:0 0 5px;font-size:14px}.remember-device-item p{margin:0;color:var(--muted);font-size:11px;line-height:1.55;text-align:left}.remember-device-current{display:inline-block;margin-left:6px;padding:3px 7px;border-radius:999px;background:#dceaff;color:#1d5fc1;font-size:9px;font-weight:800;text-transform:uppercase}.remember-device-empty{padding:18px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);text-align:center}.remember-device-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
@media(max-width:540px){.remember-device-item{grid-template-columns:1fr}.remember-device-item button{width:100%}.sidebar-user-actions{flex-direction:column}.sidebar-user-actions>*{width:100%}}

/* ===== Versi 1.0.0: Pengguna, Kas, Riwayat Pertemuan ===== */
.enhanced-actions{flex-wrap:wrap}.history-bulk-btn{border-color:#9b7bea;color:#6848b8;background:#f6f1ff}.section-heading,.cash-page-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.cash-page-head h2{margin:5px 0}.cash-summary-stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.cash-tabs{display:flex;gap:8px;overflow:auto;margin:14px 0;padding:5px;border:1px solid var(--line);border-radius:13px;background:#f4f7fb}.cash-tab{white-space:nowrap;border:0;border-radius:9px;padding:10px 13px;background:transparent;color:#52647d;font-weight:750;cursor:pointer}.cash-tab.active{background:#155fd6;color:#fff;box-shadow:0 4px 12px rgba(21,95,214,.22)}.cash-tab-panel{display:none}.cash-tab-panel.active{display:block}.cash-recap-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:18px}.cash-chart-row{display:grid;grid-template-columns:120px 1fr 125px;align-items:center;gap:10px;margin:12px 0}.cash-chart-row>div{height:12px;background:#e7edf6;border-radius:99px;overflow:hidden}.cash-chart-row i{display:block;height:100%;background:linear-gradient(90deg,#155fd6,#58a8ff);border-radius:99px}.cash-chart-row b{text-align:right}.danger-text,.warning-text{display:block;color:#c0392b;margin-top:4px}.role-pill{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:850;text-transform:uppercase;background:#e9eef5;color:#42526a}.role-pill.owner{background:#eee4ff;color:#6840a8}.role-pill.admin{background:#e0efff;color:#155fd6}.role-pill.viewer{background:#e6f7ed;color:#26734d}.user-profile-cell{display:flex;align-items:center;gap:10px;min-width:190px}.user-profile-cell>img,.user-profile-cell>span,.user-detail-head>img,.user-detail-head>span{width:42px;height:42px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#e4efff;color:#155fd6;font-weight:900}.user-profile-cell small,.user-profile-cell b{display:block}.user-actions{min-width:420px;flex-wrap:wrap}.user-days{display:flex;gap:10px;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:12px}.user-days legend{padding:0 5px;color:var(--muted)}.user-days label{display:flex;gap:4px;align-items:center}.user-detail-head{display:flex;align-items:center;gap:15px;margin-bottom:18px}.user-detail-head>img,.user-detail-head>span{width:72px;height:72px;font-size:28px}.permission-table input[type=checkbox]{width:18px;height:18px}.permission-table th:not(:first-child),.permission-table td:not(:first-child){text-align:center}.approval-list{display:grid;gap:10px}.approval-item{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px;border:1px solid var(--line);border-radius:12px;background:#fbfdff}.approval-item p{margin:5px 0 0;color:var(--muted)}.history-setup{display:grid;grid-template-columns:1.3fr .8fr 1fr auto;gap:10px;align-items:end;margin-bottom:15px}.history-table-wrap{max-height:56vh}.history-table-wrap table{min-width:1300px}.history-table-wrap input,.history-table-wrap select{min-width:110px;width:100%}.modal-sticky-actions{position:sticky;bottom:-25px;margin:15px -25px -25px;padding:13px 25px;background:rgba(255,255,255,.96);border-top:1px solid var(--line);text-align:right;z-index:5}.badge.danger{background:#ffe4e4;color:#9c2222}.notification-button{position:relative}.notification-count{position:absolute;right:-5px;top:-6px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#e64b4b;color:#fff;font-size:10px;display:grid;place-items:center}.notification-list{display:grid;gap:10px}.notification-item{padding:12px;border:1px solid var(--line);border-radius:11px}.notification-item.unread{background:#eef6ff;border-color:#b9d7ff}.notification-item small{display:block;color:var(--muted);margin-top:5px}
@media(max-width:900px){.cash-recap-grid{grid-template-columns:1fr}.history-setup{grid-template-columns:1fr 1fr}.cash-page-head,.section-heading{align-items:flex-start;flex-direction:column}.user-actions{min-width:260px}.approval-item{align-items:flex-start;flex-direction:column}.cash-chart-row{grid-template-columns:90px 1fr}.cash-chart-row b{grid-column:2;text-align:left}.cash-tabs{margin-left:-4px;margin-right:-4px}}
@media(max-width:600px){.history-setup{grid-template-columns:1fr}.cash-page-head .button-row{width:100%}.cash-page-head .button-row>*{flex:1}.modal-sticky-actions{bottom:-25px}.user-profile-cell{min-width:150px}}


/* Identitas resmi aplikasi */
.sidebar-copyright{margin-top:10px;padding:9px 6px 0;border-top:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.68);font-size:9px;line-height:1.4;text-align:center}.hero-copyright{display:block;margin-top:10px;color:#d7e7ff;font-size:11px}.app-footer{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 2px;padding:13px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--muted);font-size:10px}.app-footer b{color:var(--text)}.app-footer span+span::before{content:'•';margin-right:10px;color:#a9b5c6}.app-owner-line{margin-top:14px}.login-version{margin:-8px 0 12px;color:var(--blue);font-size:11px;font-weight:800}.login-copyright{margin-top:17px;padding-top:13px;border-top:1px solid var(--line);color:var(--muted);font-size:10px;text-align:center}@media(max-width:540px){.app-footer{gap:6px}.app-footer span+span::before{margin-right:6px}}
.public-access-links{display:grid;gap:8px;margin-top:10px}.public-access-links a{text-decoration:none}
