:root{--bg: #f7f6f3;--surface: #fcfbf8;--surface-2: #f4f2ec;--surface-3: #efede6;--ink: #2f2e2a;--ink-2: #57544d;--muted: #7c7870;--faint: #a29d93;--line: #e7e3d9;--line-strong: #d9d4c8;--primary: #66795d;--primary-2: #7c8f72;--primary-soft: #ecf0e7;--primary-deep: #4c5d45;--primary-ring: rgba(102, 121, 93, .16);--teal: #5f7d76;--teal-soft: #e9efec;--green: #4f6a48;--green-soft: #eaf0e5;--amber: #77622f;--amber-soft: #f3ecda;--orange: #a9745b;--orange-soft: #f4e9e3;--red: #824a43;--red-soft: #f4e7e4;--blue: #4f6376;--blue-soft: #e9edf0;--rose: #77545a;--rose-soft: #f2e9e8;--clay: #a9745b;--chart-income: #2f7a4f;--chart-expense: #c0803f;--radius: 4px;--radius-sm: 4px;--shadow: none;--shadow-lg: 0 18px 44px rgba(47, 46, 42, .1);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:13.5px;line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}button,input,select,textarea{font-family:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit;text-decoration:none}::-moz-selection{color:#3f4f42;background:#e2e7db}::selection{color:#3f4f42;background:#e2e7db}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}.icon{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.app-shell{display:flex;min-height:100vh;flex-direction:column;background:var(--bg)}.topbar{position:sticky;top:0;z-index:50;border-bottom:1px solid var(--line);background:#f7f6f3f7}.topbar-inner{display:flex;width:100%;max-width:1360px;height:72px;margin:0 auto;padding:0 24px;align-items:center;gap:24px}.brand{display:flex;min-width:0;flex:none;align-items:center;gap:11px;padding:0;border:0;border-radius:4px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.brand-mark{display:grid;width:34px;height:34px;flex:none;place-items:center;border-radius:4px;color:#fcfbf8;background:var(--primary)}.brand-mark svg{width:24px;height:24px}.brand-text{display:flex;min-width:0;flex-direction:column;line-height:1.15}.brand-text strong{font-size:15px;font-weight:600;letter-spacing:-.02em}.brand-text span{margin-top:3px;overflow:hidden;font-size:11px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}.main-nav{display:flex;align-items:center;gap:3px;margin-left:4px}.nav-item{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:0;border-radius:4px;background:transparent;color:var(--ink-2);font-size:12.5px;font-weight:500;line-height:1;white-space:nowrap;transition:background .15s,color .15s}.nav-item .icon{width:16px;height:16px}.nav-item:hover{background:#eef1ea;color:var(--primary-deep)}.nav-item.active{background:var(--primary-soft);color:var(--primary-deep);font-weight:600}.topbar-actions{display:flex;margin-left:auto;align-items:center;gap:8px}.global-search{position:relative;display:block;width:210px}.global-search .icon{position:absolute;top:50%;left:11px;width:15px;height:15px;color:var(--faint);transform:translateY(-50%);pointer-events:none}.global-search input{width:100%;height:36px;padding:0 12px 0 33px;border:1px solid var(--line);border-radius:4px;outline:none;background:#f4f2ec;color:var(--ink);font-size:12px;transition:border-color .15s,background .15s,box-shadow .15s}.global-search input::-moz-placeholder{color:var(--faint)}.global-search input::placeholder{color:var(--faint)}.global-search input:focus{border-color:#b9c4b0;background:#fcfbf8;box-shadow:0 0 0 3px var(--primary-ring)}.icon-btn{position:relative;display:grid;width:36px;height:36px;place-items:center;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--muted);transition:background .15s,color .15s}.icon-btn:hover{background:var(--surface-3);color:var(--ink)}.notify-dot{position:absolute;top:8px;right:8px;width:6px;height:6px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 2px #fcfbf8}.user-chip{display:flex;align-items:center;gap:8px;padding:4px 9px 4px 4px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;transition:border-color .15s,box-shadow .15s}.user-chip:hover{border-color:var(--line-strong);box-shadow:none}.user-chip-text{display:flex;flex-direction:column;line-height:1.12;text-align:left}.user-chip-text strong{font-size:11.5px;font-weight:600;color:var(--ink)}.user-chip-text span{margin-top:2px;font-size:11px;color:var(--muted)}.user-chip .chevron{width:13px;height:13px;color:var(--faint)}.settings-btn{display:none}.view-root{width:100%;max-width:1360px;flex:1;margin:0 auto;padding:24px 24px 56px}.view{animation:page-in .16s ease-out}.app-footer{display:flex;align-items:center;justify-content:center;gap:9px;padding:18px 24px 26px;color:var(--faint);font-size:11px}.app-footer button,.app-footer a{padding:0;border:0;background:transparent;color:var(--faint);font-size:inherit;text-decoration:underline;text-underline-offset:2px}.app-footer button:hover,.app-footer a:hover{color:var(--primary)}.dot-sep{width:1px;height:10px;background:var(--line-strong)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.page-eyebrow{display:flex;align-items:center;gap:6px;margin-bottom:5px;color:var(--primary);font-size:11px;font-weight:600;letter-spacing:.11em;text-transform:uppercase}.page-title{margin:0;font-size:26px;font-weight:600;letter-spacing:-.02em;line-height:1.22}.page-sub{margin-top:6px;color:var(--muted);font-size:12.5px}.page-actions{display:flex;flex:none;align-items:center;gap:8px}.btn{display:inline-flex;height:38px;align-items:center;justify-content:center;gap:7px;padding:0 14px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;color:var(--ink-2);font-size:12.5px;font-weight:600;white-space:nowrap;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s}.btn:hover{border-color:var(--line-strong);background:#fcfbf8}.btn:active{transform:translateY(1px)}.btn .icon{width:15px;height:15px}.btn-primary{border-color:transparent;background:var(--primary);color:#fcfbf8}.btn-primary:hover{border-color:transparent;background:var(--primary-deep)}.btn-soft{border-color:transparent;background:var(--primary-soft);color:var(--primary-deep)}.btn-soft:hover{border-color:transparent;background:#e3e8dc}.btn-ghost{border-color:transparent;background:transparent;color:var(--muted)}.btn-ghost:hover{border-color:transparent;background:var(--surface-3);color:var(--ink)}.btn-sm{height:30px;padding:0 10px;border-radius:4px;font-size:11.5px}.btn-sm .icon{width:13px;height:13px}.btn-danger{color:var(--red)}.btn-danger:hover{background:var(--red-soft);border-color:#e5cbc5}.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:none}.card-pad{padding:20px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.card-head-tight{margin-bottom:10px}.card-title{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:600;letter-spacing:-.01em}.card-title .icon{width:16px;height:16px;color:var(--primary)}.card-sub{margin-top:3px;color:var(--muted);font-size:11.5px}.link-btn{display:inline-flex;align-items:center;gap:4px;padding:0;border:0;background:transparent;color:var(--primary);font-size:11.5px;font-weight:600}.link-btn:hover{color:var(--primary-deep);text-decoration:underline;text-underline-offset:2px}.link-btn .icon{width:13px;height:13px}.grid-2{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}.overview-split{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-split>*,.grid-2>*,.grid-4>*{min-width:0}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stack{display:flex;flex-direction:column;gap:14px}.mt-14{margin-top:14px}.mt-18{margin-top:18px}.muted{color:var(--muted)}.faint{color:var(--faint)}.nowrap{white-space:nowrap}.tabular{font-variant-numeric:tabular-nums}.avatar{display:inline-grid;width:32px;height:32px;flex:none;place-items:center;overflow:hidden;border-radius:4px;color:var(--primary-deep);background:var(--primary-soft);font-size:11px;font-weight:600;letter-spacing:-.01em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.avatar img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.avatar.square{border-radius:4px}.avatar.lg{width:56px;height:56px;border-radius:4px;font-size:19px}.avatar.xl{width:88px;height:88px;border-radius:4px;font-size:30px}.avatar.sm{width:24px;height:24px;font-size:11px}.avatar.tone-0{color:#4c5d45;background:#e3e9dd}.avatar.tone-1{color:#46635c;background:#dfe8e4}.avatar.tone-2{color:#77622f;background:#f0e7d8}.avatar.tone-3{color:#4f6376;background:#e2e7ec}.avatar.tone-4{color:#77545a;background:#efe4e1}.avatar.tone-5{color:#5f5a50;background:#e8e4dc}.avatar.deceased-avatar{filter:saturate(.45);opacity:.86}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border:1px solid transparent;border-radius:4px;background:#efece4;color:#6f6b62;font-size:11px;font-weight:600;line-height:1.4;white-space:nowrap}.badge .icon{width:11px;height:11px}.badge.primary{background:var(--primary-soft);color:var(--primary-deep)}.badge.teal{background:var(--teal-soft);color:#4f6b64}.badge.green{background:var(--green-soft);color:#4f6a48}.badge.amber{background:var(--amber-soft);color:#77622f}.badge.orange{background:var(--orange-soft);color:#8a5a44}.badge.red{background:var(--red-soft);color:#824a43}.badge.rose{background:var(--rose-soft);color:#77545a}.badge.blue{background:var(--blue-soft);color:#4f6376}.badge.gray{background:#efece4;color:#6f6b62}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1.12fr) minmax(280px,.88fr);gap:28px;overflow:hidden;padding:34px 36px;border:1px solid #dfe4d8;border-radius:4px;color:var(--ink);background:#edf0e8}.hero:before{display:none}.hero:after{display:none}.hero-copy{position:relative;z-index:1;min-width:0}.hero-eyebrow{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:1px solid #d5ddcd;border-radius:3px;background:transparent;color:var(--primary-deep);font-size:11px;font-weight:600;letter-spacing:.06em}.hero h2{margin:14px 0 0;font-size:30px;font-weight:600;letter-spacing:-.02em;line-height:1.3}.hero-desc{max-width:520px;margin:10px 0 0;color:var(--ink-2);font-size:13px;line-height:1.75}.hero-stats{display:flex;gap:30px;margin-top:24px}.hero-stat strong{display:block;font-size:22px;font-weight:600;letter-spacing:-.02em;line-height:1.2;font-variant-numeric:tabular-nums}.hero-stat span{display:block;margin-top:4px;color:var(--muted);font-size:11px}.hero-actions{display:flex;gap:9px;margin-top:22px}.hero .btn{border-color:var(--line-strong);background:var(--surface);color:var(--ink-2);box-shadow:none}.hero .btn:hover{border-color:var(--primary);background:var(--surface-2)}.hero .btn-light{border-color:transparent;background:var(--primary);color:#fcfbf8}.hero .btn-light:hover{background:var(--primary-deep);color:#fcfbf8}.hero-art{position:relative;z-index:1;min-height:190px}.hero-art>svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.hero-art-card{position:absolute;display:flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid #d8dfd1;border-radius:4px;background:var(--surface);box-shadow:none}.hero-art-card .icon{width:15px;height:15px;color:var(--primary)}.hero-art-card b{display:block;font-size:11.5px;font-weight:600}.hero-art-card span{display:block;margin-top:1px;color:var(--muted);font-size:11px}.hero-art-card.card-a{top:10px;right:0}.hero-art-card.card-b{right:44px;bottom:6px}.stat-grid{margin-top:16px}.stat-card{position:relative;display:flex;min-width:0;flex-direction:column;gap:6px;overflow:hidden;padding:15px 0 4px;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}.stat-card:after{display:none}.stat-top{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:8px}.stat-label{color:var(--muted);font-size:11.5px;font-weight:500}.stat-icon{display:grid;width:34px;height:34px;flex:none;place-items:center;border-radius:4px;background:var(--primary-soft);color:var(--primary)}.stat-icon .icon{width:17px;height:17px}.stat-icon.teal{background:var(--teal-soft);color:var(--teal)}.stat-icon.amber{background:var(--amber-soft);color:var(--amber)}.stat-icon.green{background:var(--green-soft);color:var(--green)}.stat-icon.rose{background:var(--rose-soft);color:var(--rose)}.stat-icon.blue{background:var(--blue-soft);color:var(--blue)}.stat-value{position:relative;z-index:1;color:var(--ink);font-size:27px;font-weight:600;letter-spacing:-.02em;line-height:1.05}.stat-value small{font-size:13px;font-weight:600;color:var(--muted)}.stat-foot{position:relative;z-index:1;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.delta{display:inline-flex;align-items:center;gap:2px;padding:2px 5px;border-radius:4px;font-size:11px;font-weight:600}.delta.up{background:var(--green-soft);color:var(--green)}.delta.down{background:var(--red-soft);color:var(--red)}.feed{display:flex;flex-direction:column}.feed-item{display:flex;gap:11px;padding:12px 0;border-bottom:1px solid var(--line);border-radius:4px}.feed-item:last-child{border-bottom:0;padding-bottom:2px}.feed-item:first-child{padding-top:2px}.feed-item:hover{background:#fcfbf8}.feed-icon{display:grid;width:32px;height:32px;flex:none;place-items:center;border-radius:4px;background:var(--primary-soft);color:var(--primary)}.feed-icon .icon{width:15px;height:15px}.feed-icon.amber{background:var(--amber-soft);color:var(--amber)}.feed-icon.green{background:var(--green-soft);color:var(--green)}.feed-icon.teal{background:var(--teal-soft);color:var(--teal)}.feed-icon.blue{background:var(--blue-soft);color:var(--blue)}.feed-icon.rose{background:var(--rose-soft);color:var(--rose)}.feed-body{min-width:0;flex:1}.feed-text{color:var(--ink-2);font-size:12.5px;line-height:1.55}.feed-text strong{color:var(--ink);font-weight:600}.feed-time{margin-top:3px;color:var(--faint);font-size:11px}.todo-item{display:flex;align-items:center;gap:9px;padding:10px 0;border-bottom:1px dashed var(--line);color:var(--ink-2);font-size:12px}.todo-item:last-child{border-bottom:0}.todo-item .icon{width:15px;height:15px;color:var(--faint)}.todo-count{margin-left:auto;color:var(--primary);font-size:14px;font-weight:600}.anniv-list{display:flex;flex-direction:column}.anniv{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.anniv:last-child{border-bottom:0}.date-chip{width:42px;flex:none;padding:5px 0;border-radius:4px;background:#f1f3ec;text-align:center}.date-chip b{display:block;color:var(--primary-deep);font-size:14px;font-weight:600;line-height:1.1}.date-chip span{display:block;margin-top:1px;color:var(--muted);font-size:11px}.anniv-body{min-width:0;flex:1}.anniv-title{color:var(--ink-2);font-size:12px;font-weight:500}.anniv-meta{margin-top:2px;color:var(--faint);font-size:11px}.lineage{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:4px 0 8px;scrollbar-width:thin}.lineage-step{display:flex;flex:none;align-items:center;gap:7px;padding:7px 10px 7px 7px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;transition:border-color .15s,box-shadow .15s}.lineage-step:hover{border-color:#b9c4b0;box-shadow:none}.lineage-step .avatar{width:27px;height:27px;font-size:11px}.lineage-step b{display:block;color:var(--ink);font-size:11.5px;font-weight:600;line-height:1.15}.lineage-step span{display:block;margin-top:1px;color:var(--faint);font-size:11px}.lineage-arrow{flex:none;color:#b7b2a7}.lineage-arrow .icon{width:14px;height:14px}.fund-mini{display:flex;flex-direction:column;gap:11px}.fund-mini-row{display:flex;align-items:center;gap:9px}.fund-mini-icon{display:grid;width:30px;height:30px;flex:none;place-items:center;border-radius:4px;background:var(--primary-soft);color:var(--primary)}.fund-mini-icon .icon{width:15px;height:15px}.fund-mini-icon.teal{background:var(--teal-soft);color:var(--teal)}.fund-mini-icon.amber{background:var(--amber-soft);color:var(--amber)}.fund-mini-main{min-width:0;flex:1}.fund-mini-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.fund-mini-name{overflow:hidden;color:var(--ink-2);font-size:11.5px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.fund-mini-amount{color:var(--ink);font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums}.meter{display:block;height:5px;overflow:hidden;border-radius:2px;background:#eae7de}.meter>span{display:block;height:100%;border-radius:2px;background:var(--primary)}.meter.teal>span{background:var(--teal)}.meter.amber>span{background:var(--amber)}.table-wrap{overflow-x:auto}.table-wrap::-webkit-scrollbar,.tree-viewport::-webkit-scrollbar,.lineage::-webkit-scrollbar{width:8px;height:8px}.table-wrap::-webkit-scrollbar-thumb,.tree-viewport::-webkit-scrollbar-thumb,.lineage::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#d4cfc3;background-clip:content-box}table.data{width:100%;border-collapse:collapse;font-size:12px}.data th{padding:10px 12px;border-bottom:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink-2);font-size:11px;font-weight:600;text-align:left;white-space:nowrap}.data th:first-child{border-top-left-radius:0}.data th:last-child{border-top-right-radius:0}.data td{padding:11px 12px;border-bottom:1px solid #f0ede5;color:var(--ink-2);vertical-align:middle}.data tbody tr{transition:background .12s}.data tbody tr:hover td{background:#f1efe8}.data tbody tr.branch-1 td:first-child{box-shadow:inset 3px 0 0 var(--branch-1)}.data tbody tr.branch-2 td:first-child{box-shadow:inset 3px 0 0 var(--branch-2)}.data tbody tr.branch-3 td:first-child{box-shadow:inset 3px 0 0 var(--branch-3)}.data tbody tr.branch-aff td:first-child{box-shadow:inset 3px 0 0 var(--branch-aff)}.data tbody tr[class*=branch-] td:first-child{padding-left:14px}.data tbody tr:last-child td{border-bottom:0}.data .num{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.data th.num{text-align:right}.person-cell{display:flex;align-items:center;gap:9px;min-width:0}.person-cell .avatar{width:30px;height:30px;font-size:11px}.person-name{color:var(--ink);font-size:12.5px;font-weight:600;line-height:1.25}.person-name .badge{margin-left:5px;vertical-align:1px}.person-meta{margin-top:2px;color:var(--muted);font-size:11px}.member-tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.life-stack{display:flex;flex-direction:column;gap:1px;line-height:1.35}.life-lunar{color:var(--muted);font-size:10.5px}.row-actions{display:flex;justify-content:flex-end;gap:4px}.table-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:14px;color:var(--muted);font-size:11px}.pager{display:flex;align-items:center;gap:4px}.pager button{display:grid;width:28px;height:28px;place-items:center;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;color:var(--muted);font-size:11px}.pager button:hover:not(:disabled){border-color:var(--line-strong);color:var(--ink)}.pager button.active{border-color:var(--primary);background:var(--primary);color:#fcfbf8}.pager button:disabled{opacity:.45}.pager .icon{width:13px;height:13px}.filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.select-wrap{position:relative;display:inline-flex;align-items:center}.select-wrap .icon{position:absolute;right:9px;width:13px;height:13px;color:var(--faint);pointer-events:none}.select{height:34px;padding:0 30px 0 10px;border:1px solid var(--line);border-radius:4px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fcfbf8;color:var(--ink-2);font-size:11.5px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.select:focus{border-color:#b9c4b0;box-shadow:0 0 0 3px var(--primary-ring)}.search-box{position:relative;display:flex;align-items:center}.search-box .icon{position:absolute;left:10px;width:14px;height:14px;color:var(--faint);pointer-events:none}.search-box input{width:210px;height:34px;padding:0 10px 0 31px;border:1px solid var(--line);border-radius:4px;outline:none;background:#fcfbf8;color:var(--ink);font-size:11.5px;transition:border-color .15s,box-shadow .15s}.search-box input::-moz-placeholder{color:var(--faint)}.search-box input::placeholder{color:var(--faint)}.search-box input:focus{border-color:#b9c4b0;box-shadow:0 0 0 3px var(--primary-ring)}.tabs{display:flex;gap:2px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{position:relative;flex:none;margin-bottom:-1px;padding:10px 12px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:12.5px;font-weight:500;white-space:nowrap;transition:color .15s,border-color .15s}.tab:hover{color:var(--ink)}.tab.active{border-bottom-color:var(--primary);color:var(--primary-deep);font-weight:600}.tab .count{margin-left:4px;padding:1px 5px;border-radius:4px;background:var(--surface-3);color:var(--muted);font-size:11px;font-weight:600}.tab.active .count{background:var(--primary-soft);color:var(--primary-deep)}.chip-row{display:flex;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;color:var(--muted);font-size:11.5px;font-weight:500;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.chip:hover{border-color:var(--line-strong);color:var(--ink)}.chip.active{border-color:var(--primary);background:var(--primary);color:#fcfbf8}.chip .count{margin-left:4px;opacity:.65;font-size:11px}.segmented{display:inline-flex;gap:2px;padding:3px;border-radius:4px;background:var(--surface-3)}.segmented button{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border:0;border-radius:4px;background:transparent;color:var(--muted);font-size:11px;font-weight:500;line-height:1}.segmented button:hover{color:var(--ink)}.segmented button.active{background:#fcfbf8;color:var(--ink);box-shadow:none}.tree-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px;align-items:start}.tree-card{overflow:hidden}.tree-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line)}.tree-toolbar .search-box input{width:190px}.tree-toolbar-spacer{flex:1}.tree-viewport{position:relative;height:760px;overflow:auto;background:#f2f0e9}.tree-canvas{position:relative;width:1200px;height:1060px;margin:0 auto;transform-origin:top center;transition:transform .2s ease}.tree-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.tree-stage.timeline{display:flex;align-items:stretch}.tree-stage.timeline .tree-viewport{flex:1;min-width:0}.tree-canvas.timeline{margin:0}.tl-rail-col{position:relative;flex:0 0 auto;overflow:hidden;border-right:1px solid #dcd6c7;background:#f2f0e9}.tl-rail{position:absolute;top:0;left:0;width:100%;will-change:transform}.tl-spine{position:absolute;right:13px;width:1px;background:#d3ccba}.tl-tick{position:absolute;left:0;right:0;padding-right:24px;text-align:right;line-height:1.2}.tl-tick:after{content:"";position:absolute;top:50%;right:10px;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:#f2f0e9;box-shadow:inset 0 0 0 1.5px var(--line-strong)}.tl-period{display:block;color:var(--ink);font-size:11px;font-weight:600;letter-spacing:.2px;font-variant-numeric:tabular-nums}.tl-count{display:block;margin-top:2px;color:var(--faint);font-size:10.5px;font-weight:400}.tl-tick.empty .tl-period{color:var(--faint);font-weight:500}.tl-band{position:absolute;right:0;border-bottom:1px dashed #ded8c9;pointer-events:none}.tl-band.empty{border-bottom-style:dotted;border-bottom-color:#e6e1d5}.reg{max-width:880px;margin:0 auto;padding:4px 20px 40px}.reg-gen{margin-top:18px}.reg-gen:first-child{margin-top:8px}.reg-gen-head{position:sticky;top:0;z-index:2;display:flex;align-items:baseline;gap:10px;padding:8px 2px 6px;border-bottom:1px solid #d9d4c8;background:#f2f0e9}.reg-gen-title{color:var(--ink);font-size:12px;font-weight:600;letter-spacing:.4px}.reg-gen-meta{color:var(--faint);font-size:11px;font-variant-numeric:tabular-nums}.reg-entry{display:flex;width:100%;align-items:flex-start;gap:12px;margin-top:6px;padding:8px 10px 8px 9px;border:1px solid #e2ddcf;border-left:3px solid var(--line-strong);border-radius:4px;background:#fffefb;text-align:left;transition:border-color .16s,background-color .16s,box-shadow .16s,opacity .16s}.reg-entry.deceased{border-color:#e5e0d3;background:#f8f6ef}.reg-entry:hover{border-color:#b3b09f}.reg-entry.selected,.reg-entry.selected:hover{border-color:var(--ink-2);box-shadow:0 0 0 3px var(--primary-ring)}.reg-entry.dimmed{opacity:.3}.reg-main{min-width:0;flex:1}.reg-line{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.reg-name{color:var(--ink);font-size:13px;font-weight:600;line-height:1.45}.reg-entry.deceased .reg-name{color:#45433d}.reg-courtesy,.reg-rank{color:var(--muted);font-size:11px}.reg-rank{color:var(--faint)}.reg-tag{padding:0 4px;border:1px solid #ddd8cc;border-radius:3px;color:#6f6b62;font-size:10px;font-weight:600;line-height:1.6}.reg-facts{display:block;margin-top:2px;overflow:hidden;color:var(--muted);font-size:11.5px;line-height:1.5;text-overflow:ellipsis;white-space:nowrap}.reg-side{display:flex;flex:none;flex-direction:column;align-items:flex-end;gap:2px;padding-left:12px;color:var(--ink-2);font-size:11.5px;font-variant-numeric:tabular-nums;line-height:1.5}.reg-age{color:var(--faint);font-size:10.5px}.tree-node{position:absolute;display:flex;width:120px;height:66px;align-items:center;gap:8px;padding:7px 9px 7px 8px;border:1px solid #d7d2c5;border-left-width:4px;border-left-color:var(--line-strong);border-radius:4px;outline:none;background:#fffefb;box-shadow:none;text-align:left;transform:translate(-50%);transition:border-color .16s,box-shadow .16s,transform .16s,opacity .16s}.tree-node.branch-1{border-left-color:var(--branch-1)}.tree-node.branch-2{border-left-color:var(--branch-2)}.tree-node.branch-3{border-left-color:var(--branch-3)}.tree-node.branch-0{border-left-color:var(--muted)}.tree-node:hover{z-index:2;border-color:#b3b09f;box-shadow:none;transform:translate(-50%) translateY(-2px)}.tree-node.selected{z-index:3;border-color:var(--ink-2);box-shadow:0 0 0 3px var(--primary-ring)}.tree-node.selected.branch-1{border-left-color:var(--branch-1)}.tree-node.selected.branch-2{border-left-color:var(--branch-2)}.tree-node.selected.branch-3{border-left-color:var(--branch-3)}.tree-node.deceased{border-color:#ddd8cc;background:#f8f6ef}.tree-node.deceased .node-name{color:#45433d}.tree-node.dimmed{opacity:.28;filter:grayscale(.4)}.tree-node .avatar{width:30px;height:30px;font-size:11px}.node-main{min-width:0;flex:1}.node-name{display:flex;align-items:center;gap:4px;overflow:hidden;color:var(--ink);font-size:12.5px;font-weight:600;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.node-name .dot{width:5px;height:5px;flex:none;border-radius:50%;background:var(--teal)}.node-meta{display:block;margin-top:2px;overflow:hidden;color:#4f4c45;font-size:11px;font-variant-numeric:tabular-nums;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.node-spouse{display:block;margin-top:1px;overflow:hidden;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.spouse-label{margin-right:4px;color:var(--faint);font-size:10.5px;font-weight:400}.spouse-name{color:var(--ink);font-size:12.5px;font-weight:600}.spouse-empty{color:var(--faint);font-size:10.5px;font-weight:400}.tree-node.deceased .spouse-name{color:#45433d}.node-flag{position:absolute;top:-7px;right:8px;padding:1px 5px;border:1px solid #ddd8cc;border-radius:4px;background:#ece9e0;color:#6f6b62;font-size:11px;font-weight:600;line-height:1.5}.node-flag.pending{border-color:#e6dcc0;background:#f3ecda;color:#77622f}.tree-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}.legend-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--primary)}.legend-dot.teal{background:var(--teal)}.legend-dot.gray{background:#b0aba0}.legend-dot.amber{background:var(--amber)}.legend-dot.branch-1{background:var(--branch-1)}.legend-dot.branch-2{background:var(--branch-2)}.legend-dot.branch-3{background:var(--branch-3)}.legend-sep{width:1px;height:12px;background:var(--line-strong)}.tree-zoom{position:absolute;right:16px;bottom:16px;display:flex;gap:2px;padding:4px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;box-shadow:none}.tree-zoom button{display:grid;width:28px;height:28px;place-items:center;border:0;border-radius:4px;background:transparent;color:var(--muted)}.tree-zoom button:hover{background:var(--surface-3);color:var(--ink)}.tree-zoom .icon{width:14px;height:14px}.tree-zoom-label{display:grid;min-width:38px;place-items:center;color:var(--faint);font-size:11px;font-variant-numeric:tabular-nums}.side-panel{position:sticky;top:94px;display:flex;flex-direction:column;gap:14px}.peek{padding:20px}.peek-head{display:flex;align-items:center;gap:12px}.peek-avatar{width:56px;height:56px;border-radius:4px;font-size:20px}.peek-name{color:var(--ink);font-size:19px;font-weight:600;letter-spacing:-.03em;line-height:1.15}.peek-sub{margin-top:4px;color:var(--muted);font-size:11px}.peek-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.peek-facts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;padding-top:15px;border-top:1px solid var(--line)}.fact-label{color:var(--faint);font-size:11px}.fact-value{margin-top:3px;color:var(--ink-2);font-size:12px;font-weight:500;line-height:1.35}.peek-bio{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);color:var(--ink-2);font-size:11.5px;line-height:1.72}.peek-events{display:flex;flex-direction:column;gap:7px;margin-top:12px}.peek-event{display:flex;gap:8px;align-items:flex-start;padding:7px 8px;border-radius:4px;background:var(--surface-2);color:var(--ink-2);font-size:11px;line-height:1.45}.peek-event b{flex:none;color:var(--primary);font-size:11px;font-weight:600}.peek-actions{display:flex;gap:7px;margin-top:15px}.peek-actions .btn{flex:1}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.quick-action{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;color:var(--ink-2);font-size:11px;font-weight:500;transition:border-color .15s,box-shadow .15s}.quick-action:hover{border-color:#b9c4b0;box-shadow:none;color:var(--primary-deep)}.quick-action .icon{width:17px;height:17px;color:var(--primary)}.tip-box{display:flex;gap:8px;padding:11px 12px;border:1px solid #e2e7db;border-radius:4px;background:#f4f5ee;color:#5c6857;font-size:11px;line-height:1.6}.tip-box .icon{width:14px;height:14px;flex:none;margin-top:1px;color:var(--primary)}.detail-header{display:flex;align-items:flex-start;gap:20px;padding:24px}.detail-avatar{width:88px;height:88px;border-radius:4px;font-size:30px}.detail-main{min-width:0;flex:1}.detail-name-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.detail-name{color:var(--ink);font-size:27px;font-weight:600;letter-spacing:-.04em;line-height:1.12}.detail-courtesy{color:var(--muted);font-size:12px;font-weight:500}.detail-sub{margin-top:6px;color:var(--muted);font-size:12px}.detail-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}.detail-actions{display:flex;flex:none;gap:7px;align-items:center}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}.detail-card{overflow:hidden}.detail-card .tabs{padding:0 18px}.detail-tab-body{padding:20px}.detail-side{position:sticky;top:94px;display:flex;flex-direction:column;gap:14px}.completeness-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}.completeness-value{color:var(--primary);font-size:24px;font-weight:600;letter-spacing:-.03em}.side-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}.side-list-row{display:flex;align-items:flex-start;gap:8px;color:var(--ink-2);font-size:11px;line-height:1.5}.side-list-row .icon{width:14px;height:14px;flex:none;margin-top:1px;color:var(--faint)}.side-list-row b{color:var(--ink);font-weight:600}.info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--line)}.info-cell{min-width:0;padding:12px 14px;background:#fcfbf8}.info-label{color:var(--faint);font-size:11px}.info-value{margin-top:3px;overflow:hidden;color:var(--ink-2);font-size:12.5px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.info-value.sensitive{display:flex;align-items:center;gap:4px}.info-value.wrap{overflow:visible;line-height:1.5;text-overflow:clip;white-space:normal}.info-value.sensitive .icon{width:11px;height:11px;color:var(--faint)}.bio-block{margin-top:18px}.bio-block h4,.section-label{display:flex;align-items:center;gap:6px;margin:0 0 8px;color:var(--ink);font-size:12px;font-weight:600}.bio-text{color:var(--ink-2);font-size:12.5px;line-height:1.85;white-space:pre-wrap}.timeline{position:relative;padding-left:24px}.timeline:before{position:absolute;top:6px;bottom:8px;left:6px;width:1px;background:var(--line);content:""}.tl-item{position:relative;padding-bottom:20px}.tl-item:last-child{padding-bottom:0}.tl-dot{position:absolute;top:2px;left:-24px;width:13px;height:13px;border:2px solid #c3cdb9;border-radius:50%;background:#fcfbf8}.tl-item.family .tl-dot{border-color:var(--primary);background:var(--primary);box-shadow:0 0 0 3px #66795d1a}.tl-year{color:var(--primary);font-size:11px;font-weight:600;letter-spacing:.02em}.tl-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px;color:var(--ink);font-size:13px;font-weight:620}.tl-desc{margin-top:4px;color:var(--ink-2);font-size:11.5px;line-height:1.7}.tl-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:6px;color:var(--faint);font-size:11px}.tl-meta .icon{width:11px;height:11px}.tl-meta span{display:inline-flex;align-items:center;gap:3px}.tl-actions{display:flex;gap:6px;margin-top:7px}.relation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.relation-card{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;text-align:left;transition:border-color .15s,box-shadow .15s}.relation-card:hover{border-color:#b9c4b0;box-shadow:none}.relation-card .avatar{width:34px;height:34px;font-size:11px}.relation-main{display:flex;min-width:0;flex:1;flex-direction:column;align-items:flex-start}.relation-name{color:var(--ink);font-size:12px;font-weight:600}.relation-meta{margin-top:2px;color:var(--faint);font-size:11px}.relation-role{color:var(--muted);font-size:11px}.relation-section{margin-bottom:18px}.relation-section:last-child{margin-bottom:0}.relation-section h4{margin:0 0 8px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.02em}.relation-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.relation-section-head h4{display:flex;align-items:center;margin:0}.rel-count{display:inline-flex;min-width:18px;height:18px;margin-left:6px;padding:0 5px;align-items:center;justify-content:center;border-radius:3px;background:var(--surface-2);color:var(--muted);font-size:11px;font-weight:500;font-variant-numeric:tabular-nums}.relation-list{overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--surface)}.relation-row{display:flex;width:100%;align-items:center;gap:10px;padding:10px 12px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font-family:inherit;text-align:left;cursor:pointer;transition:background .15s}.relation-row:last-child{border-bottom:0}button.relation-row:hover{background:var(--surface-2)}.relation-row.selected{background:var(--primary-soft);box-shadow:inset 3px 0 0 var(--primary)}.relation-row.static{cursor:default}.relation-row .avatar{width:30px;height:30px;font-size:11px}.rank-chip{display:inline-flex;min-width:44px;flex:none;align-items:center;justify-content:center;padding:2px 6px;border:1px solid var(--line);border-radius:3px;background:var(--bg);color:var(--ink-2);font-size:11px;font-weight:500;line-height:1.5;white-space:nowrap}.relation-badges{display:flex;flex:none;align-items:center;gap:5px}.relation-chevron{display:inline-flex;flex:none;color:var(--faint)}.relation-chevron .icon{width:14px;height:14px}.relation-note{display:flex;gap:6px;margin-top:8px;padding:0 2px;color:var(--faint);font-size:11px;line-height:1.55}.relation-note .icon{width:13px;height:13px;flex:none;margin-top:2px;color:var(--primary)}.family-lines{display:flex;flex-direction:column;margin-top:8px}.family-line{display:flex;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);font-size:12px}.family-line:last-child{border-bottom:0}.family-label{width:34px;flex:none;color:var(--faint);font-size:11px}.family-value{min-width:0;color:var(--ink-2);line-height:1.6}.family-add-row{display:flex;gap:8px;margin-top:10px}.family-add-row .btn{flex:1;justify-content:center}.adopt-fields{padding:12px;border:1px solid #e6dcc0;border-radius:4px;background:#faf6ec}.adopt-head{display:flex;align-items:center;gap:6px;color:var(--amber);font-size:12px;font-weight:600}.adopt-head .icon{width:14px;height:14px}.modal-anchor{display:flex;align-items:center;gap:8px;margin-bottom:14px;padding:9px 11px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);color:var(--ink-2);font-size:12px}.modal-anchor .icon{width:15px;height:15px;flex:none;color:var(--primary)}.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.photo-tile{position:relative;overflow:hidden;aspect-ratio:1 / .78;border:1px solid var(--line);border-radius:4px;background:#eef1ea}.photo-tile:nth-child(2){background:#e9efec}.photo-tile:nth-child(3){background:#f4ecdd}.photo-tile:nth-child(4){background:#e9edf0}.photo-tile:after{display:none}.photo-tile .icon{position:absolute;top:50%;left:50%;width:22px;height:22px;color:#4641a059;transform:translate(-50%,-60%)}.photo-caption{position:absolute;right:8px;bottom:7px;left:8px;z-index:1;color:#fcfbf8;font-size:11px;font-weight:500;text-shadow:0 1px 4px rgba(0,0,0,.2)}.review-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.review-main{display:flex;min-width:0;flex-direction:column;gap:12px}.review-side{position:sticky;top:90px;display:flex;flex-direction:column;gap:14px}.review-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.review-count{color:var(--muted);font-size:11.5px;white-space:nowrap}.issue-list,.suggest-list{display:flex;flex-direction:column;gap:12px}.issue-card,.suggest-card{padding:16px 18px;border:1px solid var(--line);border-radius:4px;background:var(--surface)}.issue-card{border-left-width:3px}.issue-card.sev-error{border-left-color:var(--red)}.issue-card.sev-warning{border-left-color:var(--orange)}.issue-card.sev-notice{border-left-color:var(--blue)}.issue-top,.issue-modal-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.issue-field{color:var(--muted);font-size:11px}.issue-person{display:inline-flex;align-items:center;gap:6px;padding:0;border:0;background:transparent;color:var(--ink-2);font-size:11.5px;font-weight:500}button.issue-person:hover{color:var(--primary-deep)}.issue-person.muted{color:var(--faint);font-weight:400}.issue-person .avatar{width:20px;height:20px;font-size:9px}.issue-date{margin-left:auto;color:var(--faint);font-size:10.5px;white-space:nowrap}.issue-title{margin:10px 0 4px;color:var(--ink);font-size:14.5px;font-weight:600;line-height:1.45;letter-spacing:-.01em}.issue-detail{margin:0;color:var(--ink-2);font-size:12.5px;line-height:1.75}.evidence-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.evidence-cell{display:flex;flex-direction:column;gap:3px;padding:9px 11px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.evidence-label{color:var(--faint);font-size:10px}.evidence-value{color:var(--ink-2);font-size:11.5px;line-height:1.5}.issue-foot,.suggest-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.issue-hint{display:inline-flex;align-items:center;gap:5px;color:var(--faint);font-size:10.5px}.issue-hint .icon{width:13px;height:13px}.scope-row{display:flex;flex:1;justify-content:space-between;gap:8px}.scope-row b{color:var(--ink);font-variant-numeric:tabular-nums}.radio-stack{flex-direction:column}.radio-stack .radio-pill{text-align:left}.suggest-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.suggest-proposer{display:inline-flex;align-items:center;gap:8px;padding:0;border:0;background:transparent;text-align:left}.suggest-proposer .avatar{width:28px;height:28px;font-size:10px}.suggest-proposer>span{display:flex;flex-direction:column;line-height:1.3}.suggest-proposer b{color:var(--ink);font-size:12px;font-weight:600}.suggest-proposer span span{color:var(--faint);font-size:10.5px}.suggest-arrow{display:inline-flex;color:var(--faint)}.suggest-arrow .icon{width:13px;height:13px}.suggest-target{padding:0;border:0;background:transparent;color:var(--primary-deep);font-size:11.5px;font-weight:500}.suggest-target:hover{text-decoration:underline}.suggest-field{margin-top:12px;color:var(--muted);font-size:10.5px}.diff-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;margin-top:6px}.diff-cell{display:flex;flex-direction:column;gap:2px;padding:9px 11px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.diff-cell.new{border-color:#c3ceba;background:var(--primary-soft)}.diff-label{color:var(--faint);font-size:10px}.diff-value{color:var(--ink-2);font-size:12.5px;font-weight:500}.diff-value.old{color:var(--muted);text-decoration:line-through}.diff-value.new{color:var(--primary-deep)}.diff-arrow{display:inline-flex;color:var(--faint)}.diff-arrow .icon{width:14px;height:14px}.suggest-reason{margin:10px 0 0;color:var(--ink-2);font-size:12px;line-height:1.7}.source-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:4px;background:var(--surface-2);color:var(--muted);font-size:10.5px}.source-chip .icon{width:12px;height:12px}.dup-list{display:flex;flex-direction:column;gap:12px}.dup-card{padding:16px 18px;border:1px solid var(--line);border-radius:4px;background:var(--surface)}.dup-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dup-top .badge{display:inline-flex;align-items:center;gap:4px}.dup-top .icon{width:12px;height:12px}.dup-compare{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch;margin-top:12px}.dup-side{display:flex;min-width:0;flex-direction:column;gap:7px;padding:12px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.dup-person{display:flex;align-items:center;gap:8px}.dup-person .avatar{width:30px;height:30px;font-size:11px}.dup-person-main{display:flex;min-width:0;flex-direction:column;line-height:1.35}.dup-person-main b{color:var(--ink);font-size:13px;font-weight:600}.dup-person-main span{color:var(--muted);font-size:10.5px}.dup-label{color:var(--faint);font-size:10px}.dup-facts{display:flex;flex-direction:column;gap:3px;color:var(--ink-2);font-size:10.5px;line-height:1.55}.dup-facts span{display:flex;align-items:flex-start;gap:4px}.dup-facts .icon{width:12px;height:12px;margin-top:1px;flex:none;color:var(--faint)}.dup-source{display:flex;align-items:center;gap:4px;margin-top:auto;padding-top:7px;border-top:1px solid var(--line);color:var(--faint);font-size:10px}.dup-source .icon{width:11px;height:11px}.dup-arrow{display:inline-flex;align-self:center;color:var(--faint)}.dup-arrow .icon{width:15px;height:15px}.dup-summary{margin:12px 0 0;color:var(--ink-2);font-size:11.5px;line-height:1.65}.dup-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.dup-foot .issue-hint{margin:0}.merge-alert{display:flex;gap:8px;margin-bottom:14px;padding:10px 12px;border:1px solid #e4d9bf;border-radius:4px;background:var(--amber-soft);color:var(--amber);font-size:11.5px;line-height:1.65}.merge-alert .icon{width:15px;height:15px;margin-top:1px;flex:none}.merge-alert strong{font-weight:600}.merge-profiles{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch}.merge-profile{position:relative;display:flex;flex-direction:column;gap:8px;padding:11px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);cursor:pointer;transition:border-color .15s,background .15s}.merge-profile input{position:absolute;opacity:0;pointer-events:none}.merge-profile-body{display:flex;align-items:center;gap:8px}.merge-profile-body .avatar{width:30px;height:30px;font-size:11px}.merge-profile-main{display:flex;min-width:0;flex-direction:column;line-height:1.4}.merge-profile-main b{color:var(--ink);font-size:12.5px;font-weight:600}.merge-profile-main>span{color:var(--muted);font-size:10.5px}.merge-profile-meta{color:var(--faint);font-size:10px}.merge-primary-tag{display:inline-flex;align-items:center;gap:6px;color:var(--faint);font-size:10.5px}.merge-primary-tag:before{width:12px;height:12px;flex:none;border:1px solid var(--line-strong);border-radius:50%;background:var(--surface);content:"";transition:border-color .15s,background .15s,box-shadow .15s}.merge-profile:has(input:checked){border-color:#b7c4ac;background:var(--primary-soft)}.merge-profile:has(input:checked) .merge-primary-tag{color:var(--primary-deep);font-weight:500}.merge-profile:has(input:checked) .merge-primary-tag:before{border-color:var(--primary);background:var(--primary);box-shadow:inset 0 0 0 3px var(--surface)}.merge-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:18px 0 8px;color:var(--ink);font-size:11.5px;font-weight:600}.merge-section-hint{color:var(--faint);font-size:10px;font-weight:400}.merge-table{overflow:hidden;border:1px solid var(--line);border-radius:4px}.merge-row{display:grid;grid-template-columns:124px 1fr 1fr;border-top:1px solid var(--line)}.merge-row:first-child{border-top:0}.merge-head{background:var(--surface-2);color:var(--faint);font-size:10px}.merge-head span{padding:7px 10px}.merge-field{display:flex;align-items:center;gap:6px;padding:8px 10px;border-right:1px solid var(--line);color:var(--muted);font-size:11px}.merge-row.conflict .merge-field{color:var(--ink)}.merge-field .badge{padding:1px 5px;font-size:9px}.merge-pick{display:flex;align-items:center;gap:7px;padding:8px 10px;border-left:1px solid var(--line);color:var(--ink-2);font-size:11.5px;cursor:pointer;transition:background .15s}.merge-pick input{margin:0;flex:none;accent-color:var(--primary)}.merge-pick .blank{color:var(--faint)}.merge-pick:has(input:checked){background:var(--primary-soft)}.merge-migrate{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;padding:10px 12px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.merge-migrate-row{display:flex;align-items:center;gap:7px;color:var(--ink-2);font-size:11px}.merge-migrate-row input{margin:0;accent-color:var(--primary)}.album-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 14px;padding:12px 14px}.album-search input{width:230px}.album-total{margin-left:auto;color:var(--muted);font-size:11px;white-space:nowrap}.album-total b{color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums}.album-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.album-card{display:flex;overflow:hidden;flex-direction:column;padding:0;border:1px solid var(--line);border-radius:4px;background:var(--surface);text-align:left;transition:border-color .15s}.album-card:hover{border-color:var(--line-strong)}.album-art{position:relative;display:block;overflow:hidden;aspect-ratio:4 / 3;background:var(--surface-2)}.album-art-svg{display:block;width:100%;height:100%}.album-untagged{position:absolute;right:8px;bottom:8px;display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:4px;background:#fcfbf8f0;color:var(--amber);font-size:10px;font-weight:500}.album-untagged .icon{width:12px;height:12px}.album-dispute-badge{position:absolute;top:8px;left:8px;display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border:1px solid #e4d9bf;border-radius:4px;background:#fcfbf8f0;color:var(--amber);font-size:10px;font-weight:500}.album-dispute-badge .icon{width:12px;height:12px}.album-card-body{display:flex;flex-direction:column;gap:2px;padding:10px 12px 12px}.album-title{overflow:hidden;color:var(--ink);font-size:12.5px;font-weight:600;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.album-meta{overflow:hidden;color:var(--muted);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.album-people{display:flex;align-items:center;gap:6px;margin-top:5px;color:var(--faint);font-size:10.5px}.avatar-stack{display:inline-flex;align-items:center}.avatar-stack .avatar{width:19px;height:19px;margin-left:-6px;border:2px solid var(--surface);font-size:8.5px}.avatar-stack .avatar:first-child{margin-left:0}.album-more{margin-left:2px;color:var(--muted);font-size:9px}.photo-detail{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:18px;align-items:start}.photo-detail-art{overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.photo-detail-art .album-art-svg{aspect-ratio:4 / 3}.photo-detail-side{min-width:0}.photo-detail-note{margin:0 0 12px;color:var(--ink-2);font-size:12.5px;line-height:1.75}.photo-meta{display:flex;flex-direction:column;border-top:1px solid var(--line)}.photo-meta>div{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}.photo-meta span{color:var(--faint);font-size:10.5px}.photo-meta b{color:var(--ink-2);font-size:11.5px;font-weight:500;text-align:right}.photo-people-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 7px}.photo-people-head h4{margin:0;color:var(--ink);font-size:12px;font-weight:600}.dispute-banner{margin-bottom:10px;padding:11px 12px;border:1px solid #e4d9bf;border-radius:4px;background:var(--amber-soft)}.dispute-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--amber);font-size:11px}.dispute-head b{font-size:11.5px;font-weight:600}.dispute-head>.icon{width:14px;height:14px}.dispute-head .issue-date{margin-left:auto;color:var(--amber);opacity:.7}.dispute-reason{margin:7px 0 9px;color:var(--ink-2);font-size:11.5px;line-height:1.7}.dispute-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding-top:9px;border-top:1px solid #e4d9bf}.dispute-actions .issue-hint{margin:0;color:var(--amber)}.dispute-actions .issue-hint .icon{color:var(--amber)}.tag-dispute-chip{flex:none;padding:1px 5px;font-size:9px}.tag-list{display:flex;max-height:190px;flex-direction:column;gap:6px;overflow-y:auto}.tag-row{display:flex;align-items:center;gap:6px}.tag-person{display:flex;min-width:0;flex:1;align-items:center;gap:8px;padding:6px 9px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);text-align:left}.tag-person:hover{border-color:var(--line-strong)}.tag-person .avatar{width:26px;height:26px;font-size:10px}.tag-person-main{display:flex;min-width:0;flex-direction:column;line-height:1.3}.tag-person-main b{color:var(--ink);font-size:11.5px;font-weight:600}.tag-person-main span{color:var(--faint);font-size:10px}.tag-remove{width:26px;height:26px;flex:none;color:var(--faint)}.tag-remove:hover{background:var(--red-soft);color:var(--red)}.tag-remove .icon{width:13px;height:13px}.tag-add{display:flex;gap:8px;margin-top:10px}.tag-add .select-wrap{flex:1;min-width:0}.tag-add .select{width:100%}.doc-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}.doc-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8}.doc-icon{display:grid;width:32px;height:32px;flex:none;place-items:center;border-radius:4px;background:var(--primary-soft);color:var(--primary)}.doc-icon .icon{width:15px;height:15px}.doc-main{min-width:0;flex:1}.doc-name{color:var(--ink);font-size:11.5px;font-weight:500}.doc-meta{margin-top:2px;color:var(--faint);font-size:11px}.events-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px;align-items:start}.events-side{position:sticky;top:94px;display:flex;flex-direction:column;gap:14px}.year-heading{display:flex;align-items:center;gap:8px;margin:22px 0 10px;color:var(--ink);font-size:18px;font-weight:600;letter-spacing:-.02em}.year-heading:first-child{margin-top:0}.year-heading small{color:var(--faint);font-size:11px;font-weight:500;letter-spacing:0}.event-card{display:flex;gap:14px;margin-bottom:9px;padding:14px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;transition:border-color .15s,box-shadow .15s}.event-card:hover{border-color:var(--line-strong);box-shadow:none}.event-date{width:48px;flex:none;text-align:center}.event-date b{display:block;color:var(--ink);font-size:18px;font-weight:600;letter-spacing:-.02em;line-height:1.1}.event-date span{display:block;margin-top:2px;color:var(--faint);font-size:11px}.event-body{min-width:0;flex:1}.event-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:var(--ink);font-size:13px;font-weight:600}.event-desc{margin-top:4px;color:var(--ink-2);font-size:11.5px;line-height:1.65}.event-meta{display:flex;gap:13px;flex-wrap:wrap;margin-top:7px;color:var(--faint);font-size:11px}.event-meta span{display:inline-flex;align-items:center;gap:3px}.event-meta .icon{width:11px;height:11px}.event-side{display:flex;flex:none;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:8px}.avatar-stack{display:flex;padding-left:6px}.avatar-stack .avatar{width:24px;height:24px;margin-left:-6px;border:2px solid #fcfbf8;font-size:10px}.pending-list{display:flex;flex-direction:column;gap:9px}.pending-item{padding:10px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.pending-title{color:var(--ink);font-size:11.5px;font-weight:600}.pending-meta{margin-top:2px;color:var(--faint);font-size:11px}.pending-actions{display:flex;gap:6px;margin-top:8px}.draft-note{margin:6px 0 0;color:var(--ink-2);font-size:10.5px;line-height:1.6}.composition{display:flex;flex-direction:column;gap:9px}.comp-row{display:flex;align-items:center;gap:8px}.comp-label{width:44px;flex:none;color:var(--muted);font-size:11px}.comp-track{height:5px;flex:1;overflow:hidden;border-radius:2px;background:#efece4}.comp-track>span{display:block;height:100%;border-radius:inherit;background:var(--primary);opacity:.75}.comp-value{width:26px;flex:none;color:var(--faint);font-size:11px;text-align:right}.finance-tabs{margin-bottom:18px}.chart-card{padding:20px}.chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.legend{display:flex;align-items:center;gap:13px;color:var(--muted);font-size:11px}.legend-item{display:inline-flex;align-items:center;gap:5px}.legend-swatch{display:inline-block;width:8px;height:8px;border-radius:4px}.chart-wrap{position:relative;margin-top:8px}.chart-svg{display:block;width:100%;height:auto}.chart-svg text{font-family:var(--font)}.chart-tooltip{position:absolute;z-index:5;min-width:124px;padding:8px 10px;border:1px solid rgba(255,255,255,.1);border-radius:4px;background:#2f2e2af2;box-shadow:none;color:#fcfbf8;font-size:11px;line-height:1.55;pointer-events:none;opacity:0;transform:translate(-50%,-100%);transition:opacity .12s}.chart-tooltip.show{opacity:1}.chart-tooltip b{display:block;margin-bottom:2px;font-size:11px;font-weight:600;color:#ffffffa8}.chart-tooltip .tt-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.chart-tooltip .tt-dot{display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%}.chart-table{display:none;margin-top:10px;border-top:1px solid var(--line);padding-top:10px}.chart-table.show{display:block}.chart-data{font-size:11px}.fund-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.fund-card{padding:18px}.fund-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.fund-icon{display:grid;width:38px;height:38px;flex:none;place-items:center;border-radius:4px;background:var(--primary-soft);color:var(--primary)}.fund-icon .icon{width:19px;height:19px}.fund-icon.teal{background:var(--teal-soft);color:var(--teal)}.fund-icon.amber{background:var(--amber-soft);color:var(--amber)}.fund-name{margin-top:12px;color:var(--ink);font-size:13px;font-weight:600}.fund-desc{margin-top:3px;color:var(--muted);font-size:11px;line-height:1.5}.fund-amount{margin-top:14px;color:var(--ink);font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1.1}.fund-amount small{color:var(--faint);font-size:11px;font-weight:500;letter-spacing:0}.fund-progress{margin-top:10px}.fund-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;color:var(--faint);font-size:11px}.fund-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.fund-foot span{display:inline-flex;align-items:center;gap:4px}.summary-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}.summary-cell{min-width:0;padding:14px 16px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.summary-cell .summary-label{color:var(--muted);font-size:11px}.summary-cell .summary-value{margin-top:5px;color:var(--ink);font-size:21px;font-weight:600;letter-spacing:-.03em}.summary-cell .summary-value small{color:var(--faint);font-size:11px;font-weight:500}.report-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:14px}.breakdown{display:flex;flex-direction:column;gap:12px}.breakdown-row{display:flex;align-items:center;gap:10px}.breakdown-label{width:48px;flex:none;color:var(--ink-2);font-size:11px;font-weight:500}.breakdown-track{height:22px;flex:1;overflow:hidden;border-radius:4px;background:#f1efe9}.breakdown-track>span{display:block;height:100%;border-radius:3px;background:var(--primary)}.breakdown-value{width:76px;flex:none;color:var(--ink-2);font-size:11px;font-variant-numeric:tabular-nums;text-align:right}.finance-note{display:flex;align-items:flex-start;gap:8px;margin-top:14px;padding:11px 12px;border:1px solid #eae7de;border-radius:4px;background:var(--surface-2);color:var(--muted);font-size:11px;line-height:1.6}.finance-note .icon{width:14px;height:14px;flex:none;margin-top:1px;color:var(--faint)}.settings-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:18px;align-items:start}.family-profile{display:flex;align-items:center;gap:14px}.family-mark{display:grid;width:52px;height:52px;flex:none;place-items:center;border-radius:4px;background:var(--primary);color:#fcfbf8}.family-mark svg{width:30px;height:30px}.family-name{color:var(--ink);font-size:18px;font-weight:600;letter-spacing:-.02em}.family-meta{margin-top:3px;color:var(--muted);font-size:11px}.role-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.role-row:last-child{border-bottom:0}.role-main{min-width:0;flex:1}.role-name{color:var(--ink);font-size:12px;font-weight:600}.role-linked{margin-top:2px;color:var(--faint);font-size:11px}.role-select{height:28px;padding:0 24px 0 8px;border:1px solid var(--line);border-radius:4px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fcfbf8;color:var(--ink-2);font-size:11px;cursor:pointer}.claim-row{padding:11px 0;border-bottom:1px solid var(--line)}.claim-row:last-child{border-bottom:0}.claim-top{display:flex;align-items:center;gap:9px}.claim-main{min-width:0;flex:1}.claim-name{color:var(--ink);font-size:12px;font-weight:600}.claim-meta{margin-top:2px;color:var(--faint);font-size:11px}.claim-note{margin-top:7px;padding:7px 9px;border-radius:4px;background:var(--surface-2);color:var(--muted);font-size:11px;line-height:1.5}.claim-actions{display:flex;gap:6px;margin-top:8px}.privacy-row{display:flex;align-items:flex-start;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.privacy-row:last-child{border-bottom:0}.privacy-main{min-width:0;flex:1}.privacy-title{color:var(--ink-2);font-size:11.5px;font-weight:500}.privacy-desc{margin-top:2px;color:var(--faint);font-size:11px;line-height:1.5}.switch{position:relative;width:38px;height:22px;flex:none;margin-top:2px;border:0;border-radius:999px;background:#d9d4c8;transition:background .18s}.switch:after{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fcfbf8;box-shadow:none;content:"";transition:transform .18s}.switch.on{background:var(--primary)}.switch.on:after{transform:translate(16px)}.switch:disabled{opacity:.45}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#2f2e2a47;animation:fade-in .18s ease}.modal{width:min(560px,100%);max-width:100%;max-height:calc(100vh - 48px);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--surface);box-shadow:var(--shadow-lg);animation:modal-in .16s ease-out}.modal-head{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:22px 24px 0}.modal-title{color:var(--ink);font-size:17px;font-weight:600;letter-spacing:-.02em}.modal-sub{margin-top:4px;color:var(--muted);font-size:11.5px;line-height:1.5}.modal-close{display:grid;width:30px;height:30px;flex:none;place-items:center;border:0;border-radius:4px;background:transparent;color:var(--faint)}.modal-close:hover{background:var(--surface-3);color:var(--ink)}.modal-close .icon{width:16px;height:16px}.modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:18px 24px 22px}.modal-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:0 24px 22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1 / -1}.field label{color:var(--ink-2);font-size:11px;font-weight:600}.field input,.field select,.field textarea{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:4px;outline:none;background:#f4f2ec;color:var(--ink);font-size:12.5px;transition:border-color .15s,background .15s,box-shadow .15s}.field input::-moz-placeholder,.field textarea::-moz-placeholder{color:var(--faint)}.field input::placeholder,.field textarea::placeholder{color:var(--faint)}.field input:focus,.field select:focus,.field textarea:focus{border-color:#b9c4b0;background:#fcfbf8;box-shadow:0 0 0 3px var(--primary-ring)}.field textarea{min-height:74px;resize:vertical;line-height:1.6}.field .hint{color:var(--faint);font-size:11px}.field-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.parent-grid{display:flex;flex-direction:column;gap:8px}.parent-row{display:grid;grid-template-columns:38px minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:8px}.parent-role{color:var(--muted);font-size:11px;font-weight:500}.radio-row{display:flex;gap:7px}.radio-pill{flex:1;padding:8px;border:1px solid var(--line);border-radius:4px;background:#fcfbf8;color:var(--muted);font-size:11.5px;font-weight:500;text-align:center}.radio-pill:hover{border-color:var(--line-strong)}.radio-pill.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-deep);font-weight:600}.check-row{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);color:var(--ink-2);font-size:11px;line-height:1.5;cursor:pointer}.check-row input{width:14px;height:14px;flex:none;margin:2px 0 0;padding:0;border:0;background:transparent;accent-color:var(--primary)}.form-note{display:flex;align-items:flex-start;gap:7px;margin-top:12px;padding:9px 10px;border-radius:4px;background:#f4f5ee;color:#5c6857;font-size:11px;line-height:1.55}.form-note .icon{width:13px;height:13px;flex:none;margin-top:1px;color:var(--primary)}.source-pill{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);color:var(--ink-2);font-size:11px}.source-pill .icon{width:14px;height:14px;color:var(--primary)}.toast-root{position:fixed;right:24px;bottom:24px;z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:9px;padding:11px 14px;border:1px solid var(--line);border-radius:4px;background:var(--surface);box-shadow:none;color:var(--ink);font-size:12.5px;line-height:1.4;animation:toast-in .16s ease-out}.toast .icon{width:16px;height:16px;flex:none;color:var(--primary)}.toast.out{animation:toast-out .16s ease forwards}.empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:36px 20px;color:var(--faint);text-align:center}.empty .empty-icon{display:grid;width:46px;height:46px;place-items:center;border-radius:4px;background:var(--surface-3);color:#b0aba0}.empty .empty-icon .icon{width:21px;height:21px}.empty p{margin:0;font-size:11.5px}@keyframes page-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{to{opacity:0;transform:translateY(3px)}}.summary-strip.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.genealogy-main{display:flex;min-width:0;flex-direction:column;gap:14px}.volume-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.volume-card{padding:15px 16px 13px;border:1px solid var(--line);border-top:2px solid var(--branch-1);border-radius:4px;background:var(--surface)}.volume-card.vol-2{border-top-color:var(--branch-2)}.volume-card.vol-3{border-top-color:var(--branch-3)}.volume-card.vol-aff{border-top-color:var(--branch-aff)}.volume-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.volume-no{color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.08em}.volume-title{margin-top:7px;color:var(--ink);font-size:14px;font-weight:600;letter-spacing:-.01em}.volume-range{margin-top:2px;color:var(--muted);font-size:11px}.volume-desc{margin:8px 0 0;color:var(--ink-2);font-size:11.5px;line-height:1.6}.volume-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}.volume-progress{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:10.5px}.volume-progress .meter{width:64px}.volume-table{min-width:660px}.volume-table th:first-child,.volume-table td:first-child{white-space:nowrap}.volume-table .link-btn{font-weight:500}.motto-card{overflow:hidden}.motto-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:14px;border-top:1px solid var(--line)}.motto-item{padding:11px 12px 0;border-right:1px solid var(--line)}.motto-item:first-child{padding-left:0}.motto-item:last-child{border-right:0}.motto-item b{display:block;color:var(--ink);font-size:12px;font-weight:600}.motto-item span{display:block;margin-top:2px;color:var(--muted);font-size:11px;line-height:1.55}.revision-list{display:flex;flex-direction:column;gap:11px}.revision-row .revision-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;color:var(--ink-2);font-size:11px}.revision-row .meter{width:100%}.revision-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:13px;padding-top:11px;border-top:1px solid var(--line);color:var(--muted);font-size:10.5px}.rule-list{display:flex;flex-direction:column}.rule-item{display:flex;align-items:flex-start;gap:9px;padding:9px 0;border-bottom:1px solid var(--line)}.rule-item:last-child{padding-bottom:0;border-bottom:0}.rule-index{display:inline-flex;width:18px;height:18px;flex:none;align-items:center;justify-content:center;border:1px solid var(--line-strong);border-radius:50%;color:var(--muted);font-size:10px;font-weight:600;line-height:1}.rule-text{min-width:0}.rule-text b{display:block;color:var(--ink-2);font-size:11.5px;font-weight:600}.rule-text span{display:block;margin-top:1px;color:var(--muted);font-size:11px;line-height:1.55}.revision-log-list{display:flex;flex-direction:column}.revision-log{display:flex;gap:9px;padding:8px 0;border-bottom:1px solid var(--line)}.revision-log:last-child{padding-bottom:0;border-bottom:0}.revision-date{width:32px;flex:none;padding-top:1px;color:var(--faint);font-size:10.5px;font-variant-numeric:tabular-nums}.revision-text{color:var(--ink-2);font-size:11.5px;line-height:1.55}.revision-meta{margin-top:1px;color:var(--faint);font-size:10.5px}@media (max-width: 1180px){.global-search{width:170px}.grid-2,.tree-layout,.events-layout,.detail-layout{grid-template-columns:1fr}.side-panel,.events-side,.detail-side{position:static}.fund-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.report-grid,.settings-grid{grid-template-columns:1fr}}@media (max-width: 980px){.topbar-inner{gap:14px;padding:0 18px}.global-search{display:none}.main-nav{margin-left:0}.hero{grid-template-columns:1fr}.hero-art{display:none}.grid-4,.fund-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.view-root{padding:20px 18px 48px}}@media (max-width: 760px){.topbar-inner{height:auto;flex-wrap:wrap;padding:10px 14px 8px;gap:8px}.brand-mark{width:38px;height:38px;border-radius:4px}.brand-text span{display:none}.main-nav{order:3;width:calc(100% + 28px);margin:0 -14px;padding:2px 14px 4px;overflow-x:auto;scrollbar-width:none}.main-nav::-webkit-scrollbar{display:none}.nav-item{padding:7px 10px;font-size:12px}.topbar-actions{gap:4px}.user-chip-text,.user-chip .chevron,.settings-btn{display:none}.user-chip{padding:3px;border:0;background:transparent}.view-root{padding:16px 14px 40px}.page-head{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:14px}.page-title{font-size:23px}.page-actions{width:100%}.page-actions .btn{flex:1}.overview-split{grid-template-columns:minmax(0,1fr)}.overview-split .card{overflow:hidden}.summary-strip{grid-template-columns:repeat(3,minmax(0,1fr))!important}.summary-cell{padding:10px 8px}.hero{padding:22px;border-radius:4px}.hero h2{font-size:27px}.hero-stats{gap:20px;flex-wrap:wrap;margin-top:18px}.hero-actions{margin-top:18px}.hero-actions .btn{flex:1}.stat-value{font-size:22px}.stat-icon{width:30px;height:30px}.card-pad{padding:16px}.detail-header{flex-direction:column;gap:14px;padding:18px}.detail-avatar{width:68px;height:68px;border-radius:4px;font-size:23px}.detail-name{font-size:23px}.detail-actions{width:100%;flex-wrap:wrap}.detail-actions .btn{flex:1}.tab{padding:9px;font-size:12px}.detail-tab-body{padding:16px}.info-grid,.photo-grid{grid-template-columns:1fr 1fr}.relation-grid,.fund-grid{grid-template-columns:1fr}.summary-strip{grid-template-columns:1fr;gap:8px}.summary-strip.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))!important}.volume-grid{grid-template-columns:1fr}.motto-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.motto-item:nth-child(2){border-right:0}.motto-item:nth-child(3),.motto-item:nth-child(4){padding-top:10px;border-top:1px solid var(--line)}.motto-item:nth-child(3){padding-left:0}.filter-bar{gap:6px}.search-box,.search-box input,.tree-toolbar .search-box,.tree-toolbar .search-box input,.tree-toolbar .filter-bar{width:100%}.tree-viewport{height:540px}.tree-legend{gap:10px}.quick-actions{grid-template-columns:1fr 1fr 1fr}.modal-backdrop{padding:10px;align-items:flex-end}.modal{max-height:calc(100vh - 20px);border-radius:4px}.modal-head{padding:18px 18px 0}.modal-body{padding:14px 18px 18px}.modal-foot{padding:0 18px 18px}.form-grid{grid-template-columns:1fr}.toast-root{right:14px;bottom:14px;left:14px}.toast{justify-content:center}.app-footer{flex-wrap:wrap;gap:6px;padding-bottom:18px}}.linked-mark{display:inline-flex;margin-left:4px;color:var(--faint);vertical-align:middle}.linked-mark .icon{width:11px;height:11px}.relation-row .relation-name{display:flex;align-items:center;gap:3px}.relation-row .relation-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bio-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.bio-block-head h4{margin:0}.spouse-hero{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:4px;background:var(--surface)}.spouse-hero .avatar{width:48px;height:48px;flex:none;font-size:15px}.spouse-hero-main{min-width:0}.spouse-hero-name{display:flex;flex-wrap:wrap;align-items:center;gap:7px;color:var(--ink);font-size:15px;font-weight:600}.spouse-hero-meta{margin-top:4px;color:var(--muted);font-size:11.5px}.spouse-profile-callout{display:flex;gap:10px;align-items:flex-start;margin-top:12px;padding:11px 12px;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--muted);font-size:11.5px;line-height:1.6}.spouse-profile-callout .icon{width:15px;height:15px;flex:none;margin-top:1px;color:var(--faint)}.spouse-profile-callout b{display:block;color:var(--ink-2);font-weight:600}.spouse-profile-callout span{display:block;margin-top:2px}.spouse-profile-callout.is-linked{border-color:#d7e0cf;background:#f4f7f0}.spouse-profile-callout.is-linked .icon{color:var(--primary)}.spouse-info-grid{margin-top:12px}.spouse-sensitive-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:10px}.adopt-block .info-cell:last-child{grid-column:span 2}.spouse-sensitive-grid .info-value{white-space:normal;line-height:1.55}.spouse-sensitive-grid .info-cell:last-child{grid-column:1 / -1}.spouse-options{gap:8px}.spouse-options .check-row{margin:0}@media (max-width: 760px){.info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.parent-row{grid-template-columns:38px minmax(0,1fr)}.parent-row input{grid-column:1 / -1}.info-grid>.info-cell:last-child:nth-child(odd){grid-column:1 / -1}.relation-row{gap:8px;padding:9px 10px}.relation-row .rank-chip{min-width:38px}.relation-row .relation-meta{overflow:visible;line-height:1.45;text-overflow:clip;white-space:normal}.spouse-archive-badge{display:none}.spouse-hero{padding:12px}}@media (max-width: 980px){.review-layout{grid-template-columns:1fr}.review-side{position:static;display:grid;grid-template-columns:1fr 1fr}.album-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 760px){.review-side,.evidence-grid{grid-template-columns:1fr}.issue-foot,.suggest-foot{flex-direction:column;align-items:flex-start}.diff-grid{grid-template-columns:1fr;gap:6px}.diff-arrow{display:none}.album-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.album-search,.album-search input{width:100%}.album-toolbar .select-wrap{flex:1 1 120px}.album-toolbar .select{width:100%}.album-total{margin-left:0;width:100%;display:flex;align-items:baseline;gap:5px}.photo-detail{grid-template-columns:1fr}}@media (max-width: 980px){.events-side{order:1}.events-layout>div:first-child{order:2}}@media (max-width: 760px){.dup-card{padding:14px}.dup-compare,.merge-profiles{grid-template-columns:1fr}.dup-arrow{justify-self:center;transform:rotate(90deg)}.dup-foot{flex-direction:column;align-items:flex-start}.merge-section-title{flex-direction:column;align-items:flex-start;gap:2px}.merge-migrate{grid-template-columns:1fr}.dispute-actions{flex-direction:column;align-items:flex-start}}@media (max-width: 560px){.merge-head{display:none}.merge-row{grid-template-columns:1fr 1fr}.merge-field{grid-column:1 / -1;padding:6px 10px;border-right:0;border-bottom:1px solid var(--line);background:var(--surface-2)}.merge-pick{border-left:0}.merge-pick+.merge-pick{border-left:1px solid var(--line)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.activity-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:16px}.activity-card{display:flex;overflow:hidden;flex-direction:column;border:1px solid var(--line);border-radius:5px;background:var(--surface);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}.activity-card:hover{border-color:var(--line-strong);box-shadow:0 2px 10px #2f2e2a0f}.activity-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.activity-card-cover{position:relative;display:block;overflow:hidden;aspect-ratio:16 / 9;background:var(--surface-2)}.activity-card-cover img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.activity-cover-ph{display:flex;height:100%;align-items:center;justify-content:center;color:var(--faint)}.activity-play-badge{position:absolute;top:50%;left:50%;display:flex;width:34px;height:34px;align-items:center;justify-content:center;transform:translate(-50%,-50%);border-radius:50%;background:#1414128c;color:#fff;font-size:11px}.activity-card-body{display:flex;flex:1;flex-direction:column;gap:5px;padding:11px 13px 12px}.activity-card-title{display:flex;flex-wrap:wrap;align-items:center;gap:5px}.activity-card-title strong{color:var(--ink);font-size:13px;font-weight:600;line-height:1.45}.activity-person{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:10.5px}.activity-desc{display:-webkit-box;overflow:hidden;margin:0;color:var(--muted);font-size:11.5px;line-height:1.6;-webkit-box-orient:vertical;-webkit-line-clamp:2}.activity-meta{display:flex;flex-wrap:wrap;gap:3px 12px;color:var(--faint);font-size:10.5px}.activity-meta span{display:inline-flex;align-items:center;gap:4px}.activity-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:8px;border-top:1px dashed var(--line);color:var(--faint);font-size:10.5px}.activity-card-actions{display:inline-flex;align-items:center;gap:2px}.activity-card-actions .icon-btn{width:24px;height:24px}.activity-lock-note{color:var(--amber);font-size:10.5px}.activity-detail-badges{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px}.activity-detail-meta{display:flex;flex-wrap:wrap;gap:5px 16px;margin-bottom:10px;color:var(--muted);font-size:11.5px}.activity-detail-meta span{display:inline-flex;align-items:center;gap:5px}.activity-detail-desc{margin:0 0 12px;color:var(--ink-2);font-size:12.5px;line-height:1.7;white-space:pre-wrap}.activity-media-head{display:flex;align-items:center;gap:10px;margin:16px 0 3px;padding-top:14px;border-top:1px solid var(--line)}.activity-media-head strong{font-size:12.5px}.activity-media-head>span{color:var(--muted);font-size:11px}.activity-upload-btn{margin-left:auto;cursor:pointer}.activity-media-hint{margin:0 0 10px;color:var(--faint);font-size:10.5px}.activity-media-empty{padding:26px;border:1px dashed var(--line);border-radius:4px;color:var(--muted);font-size:11.5px;text-align:center}.activity-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:10px}.activity-media-item{position:relative;overflow:hidden;aspect-ratio:4 / 3;border:1px solid var(--line);border-radius:4px;background:#171714}.activity-media-item img,.activity-media-item video{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.activity-media-img{width:100%;height:100%;padding:0;border:0;background:none;cursor:zoom-in}.media-duration{position:absolute;right:6px;bottom:6px;padding:2px 5px;border-radius:3px;background:#141412a8;color:#fff;font-size:10px;font-variant-numeric:tabular-nums}.media-remove-btn{position:absolute;top:6px;right:6px;display:flex;width:22px;height:22px;align-items:center;justify-content:center;padding:0;border:0;border-radius:50%;background:#1414128c;color:#fff;cursor:pointer}.media-remove-btn:hover{background:#a03c32d9}.activity-preview-img{display:block;max-height:76vh;margin:0 auto;-o-object-fit:contain;object-fit:contain;background:#171714}.album-card{cursor:pointer}.album-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.album-play-badge{position:absolute;top:50%;left:50%;display:flex;width:34px;height:34px;align-items:center;justify-content:center;transform:translate(-50%,-50%);border-radius:50%;background:#1414128c;color:#fff}.album-duration{position:absolute;bottom:8px;left:8px;padding:2px 6px;border-radius:3px;background:#141412a6;color:#fff;font-size:10px;font-variant-numeric:tabular-nums}.album-source{overflow:hidden;color:var(--primary);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.album-source:hover{text-decoration:underline}.photo-detail-video{display:block;width:100%;border-radius:4px;background:#171714}.feed-icon img{width:100%;height:100%;border-radius:inherit;-o-object-fit:cover;object-fit:cover}.tl-title-link{color:inherit;text-decoration:none}.tl-title-link:hover{color:var(--primary)}.field-hint{margin:5px 0 0;color:var(--muted);font-size:10.5px;line-height:1.55}@media (max-width: 760px){.activity-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.activity-media-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}}.chronicle{display:flex;flex-direction:column;gap:6px}.chronicle-year:first-child .year-heading{margin-top:0}.chronicle-list{position:relative;display:flex;flex-direction:column;gap:10px}.chronicle-list:before{position:absolute;top:17px;bottom:17px;left:74px;width:1px;background:var(--line);content:""}.chronicle-row{display:grid;grid-template-columns:52px 16px minmax(0,1fr);gap:14px;align-items:stretch}.chronicle-date{padding-top:13px;color:var(--faint);font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:.02em;text-align:right;white-space:nowrap}.chronicle-axis{position:relative;display:flex;justify-content:center;padding-top:16px}.chronicle-dot{width:9px;height:9px;border:2px solid var(--line-strong);border-radius:50%;background:var(--surface);box-shadow:0 0 0 4px var(--surface)}.chronicle-dot.major{border-color:var(--primary);background:var(--primary)}.chronicle-dot.birth{border-color:#7d9b74}.chronicle-dot.death{border-color:#aaa59b}.chronicle-dot.marriage{border-color:#b17e7e}.chronicle-card{position:relative;display:flex;min-width:0;gap:14px;padding:12px 14px;border:1px solid var(--line);border-left-width:2px;border-radius:5px;background:var(--surface);cursor:pointer;transition:border-color .15s,box-shadow .15s}.chronicle-card:hover{border-color:var(--line-strong);box-shadow:0 2px 10px #2f2e2a0f}.chronicle-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.chronicle-activity{border-left-color:#b08a3e80}.chronicle-milestone{background:linear-gradient(90deg,rgba(247,246,243,.65),var(--surface) 42%)}.chronicle-milestone.birth{border-left-color:#7d9b748c}.chronicle-milestone.death{border-left-color:#aaa59b8c}.chronicle-milestone.marriage{border-left-color:#b17e7e8c}.chronicle-main{min-width:0;flex:1}.chronicle-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chronicle-title strong{color:var(--ink);font-size:13px;font-weight:600;line-height:1.5}.chronicle-person{display:inline-flex;align-items:center;gap:3px;color:var(--muted);font-size:10.5px}.chronicle-source{color:var(--faint);font-size:10px;letter-spacing:.02em}.chronicle-desc{margin:4px 0 0;color:var(--ink-2);font-size:11.5px;line-height:1.75}.chronicle-desc.classical{font-family:Songti SC,STSong,"Noto Serif SC",serif;font-size:12.5px;letter-spacing:.02em}.chronicle-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:6px;color:var(--faint);font-size:10.5px}.chronicle-meta span{display:inline-flex;align-items:center;gap:4px}.chronicle-thumb{position:relative;overflow:hidden;flex:none;width:104px;aspect-ratio:4 / 3;border-radius:4px;background:var(--surface-2)}.chronicle-thumb img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.chronicle-milestone-icon{display:flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;margin-top:1px;border-radius:50%;background:var(--surface-2);color:var(--muted)}.chronicle-milestone-icon.birth{background:#7d9b741f;color:#5f7a63}.chronicle-milestone-icon.death{background:#7873691a;color:#7d776d}.chronicle-milestone-icon.marriage{background:#b17e7e24;color:#9d6868}.chronicle-arrow{align-self:center;flex:none;color:var(--faint)}@media (max-width: 640px){.chronicle-list:before{left:15px}.chronicle-row{grid-template-columns:0 14px minmax(0,1fr);gap:8px}.chronicle-date{display:none}.chronicle-card{gap:10px;padding:11px 12px}.chronicle-thumb{width:72px}}@media print{.tree-layout.register-mode .tree-toolbar,.tree-layout.register-mode .tree-legend,.tree-layout.register-mode .side-panel,.page-actions{display:none!important}.tree-layout.register-mode{display:block}.tree-layout.register-mode .tree-card{border:none;box-shadow:none;background:#fff}.tree-layout.register-mode .tree-viewport{height:auto!important;overflow:visible!important}.tree-layout.register-mode .reg{max-width:none;padding:0}.tree-layout.register-mode .reg-gen-head{position:static;background:#fff}.tree-layout.register-mode .reg-entry{-moz-column-break-inside:avoid;break-inside:avoid;page-break-inside:avoid;background:#fff;box-shadow:none}.tree-layout.register-mode .reg-entry.dimmed{opacity:1}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;padding:0;border:0;margin:-1px;clip:rect(0 0 0 0);white-space:nowrap}.spin{animation:app-spin .9s linear infinite}@keyframes app-spin{to{transform:rotate(360deg)}}.route-loading{display:flex;min-height:100vh;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:12.5px;background:var(--bg)}.route-loading .spin{color:var(--primary)}.loading-block{display:flex;align-items:center;justify-content:center;gap:9px;padding:44px 20px;color:var(--muted);font-size:12px}.loading-block .spin{color:var(--primary)}.modal-wide{width:min(880px,100%)}.confirm-modal .modal-foot{padding-top:18px}.empty.compact{padding:18px 10px}.empty.compact .empty-icon{display:none}.empty p span{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.6}.danger-link,.danger-link:hover,.danger{color:var(--red)}.tab-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:0 0 12px;margin-bottom:2px;border-bottom:1px solid var(--line);font-size:11.5px}.form-section-label{margin:20px 0 10px;padding-bottom:7px;border-bottom:1px solid var(--line);color:var(--primary-deep);font-size:11px;font-weight:600;letter-spacing:.08em}.form-section-label:first-child{margin-top:0}.input-pair{display:flex;gap:8px;align-items:center}.input-pair input{flex:1;min-width:0}.input-pair .select{width:92px;flex:none}.input{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:4px;outline:none;background:#f4f2ec;color:var(--ink);font-size:12.5px;transition:border-color .15s,background .15s,box-shadow .15s}.input::-moz-placeholder{color:var(--faint)}.input::placeholder{color:var(--faint)}.input:focus{border-color:#b9c4b0;background:#fcfbf8;box-shadow:0 0 0 3px var(--primary-ring)}.toast.success .icon{color:var(--primary)}.toast.error{border-color:#e6d3cf}.toast.error .icon{color:var(--red)}.toast.info .icon{color:var(--blue)}.toast-close{display:grid;width:20px;height:20px;flex:none;place-items:center;padding:0;border:0;border-radius:3px;margin-left:2px;background:transparent;color:var(--faint);pointer-events:auto}.toast-close:hover{background:var(--surface-3);color:var(--ink)}.table{width:100%;border-collapse:collapse;font-size:12px}.table th{padding:10px 12px;border-bottom:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink-2);font-size:11px;font-weight:600;text-align:left;white-space:nowrap}.table td{padding:11px 12px;border-bottom:1px solid #f0ede5;color:var(--ink-2);vertical-align:middle}.table tbody tr:hover td{background:#faf9f5}.table tbody tr:last-child td{border-bottom:0}.member-table{min-width:860px}.audit-table{min-width:900px}.audit-detail{max-width:340px;overflow:hidden;color:var(--faint);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.feed-button,.todo-button{width:100%;border:0;background:transparent;text-align:left;font-family:inherit}.todo-button{cursor:pointer}.lineage-chain{display:inline-flex;flex:none;align-items:center;gap:5px}.person-cell .person-name,.person-cell .person-meta{display:block}.pager button{width:auto;min-width:28px;padding:0 9px;white-space:nowrap}.tree-stage{position:relative}.tree-canvas-outer{position:relative;margin:0 auto}.tree-canvas{margin:0;transform-origin:top left}.tree-zoom{z-index:4}.album-art img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.album-people-text{color:var(--faint);font-size:10.5px}.album-total{font-variant-numeric:tabular-nums}.photo-detail-art img{display:block;width:100%;max-height:460px;-o-object-fit:contain;object-fit:contain;background:#efede6}.photo-detail-art{padding:0}.photo-detail-art>.icon{display:block;margin:48px auto;color:var(--faint)}.photo-detail-note{padding:10px 12px 0}.photo-detail-art>.muted,.photo-detail-art>.btn{margin-left:12px;margin-right:12px}.photo-detail-art>.muted{display:block;padding-bottom:12px}.photo-people-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 0 8px;color:var(--ink);font-size:11.5px}.photo-people-head b{font-size:11.5px;font-weight:600}.photo-detail-side .tag-add{flex-direction:column;align-items:stretch;gap:7px;padding:12px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.photo-detail-side .tag-add .btn{align-self:flex-start}.photo-detail-side .tag-list{max-height:230px}.tag-person-main .tag-person{display:block;padding:0;border:0;background:transparent;color:var(--ink);font-size:11.5px;font-weight:600;line-height:1.35}.tag-meta{display:flex;align-items:center;gap:5px;margin-top:2px;color:var(--faint);font-size:10px;line-height:1.4}.tag-person-main .tag-dispute-chip{display:block;width:-moz-fit-content;width:fit-content;margin-top:4px;padding:1px 5px;border-radius:3px;background:var(--amber-soft);color:var(--amber);font-size:10px;line-height:1.5}.tag-row .icon-btn{width:28px;height:28px;flex:none}.tag-add .select,.tag-add input{width:100%;padding:8px 9px;border:1px solid var(--line);border-radius:4px;outline:none;background:#fcfbf8;color:var(--ink);font-size:12px}.tag-add .select:focus,.tag-add input:focus{border-color:#b9c4b0;box-shadow:0 0 0 3px var(--primary-ring)}.tag-pick-list{max-height:240px;overflow-y:auto;padding:4px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.tag-pick-list .pick-row{background:transparent}.tag-pick-list .pick-row:hover{background:#f8f6f0}.pick-list{display:flex;flex-direction:column;max-height:420px;overflow-y:auto;border:1px solid var(--line);border-radius:4px;background:#fcfbf8}.pick-row{display:flex;align-items:center;gap:9px;padding:9px 11px;border-bottom:1px solid var(--line);background:#fcfbf8;cursor:pointer;transition:background .12s}.pick-row:last-child{border-bottom:0}.pick-row:hover{background:#f7f5ef}.pick-row.checked{background:var(--primary-soft)}.pick-row input[type=checkbox]{width:14px;height:14px;flex:none;accent-color:var(--primary)}.pick-main{display:flex;min-width:0;flex:1;flex-direction:column;line-height:1.35}.pick-name{color:var(--ink);font-size:12px;font-weight:600}.pick-meta{overflow:hidden;margin-top:2px;color:var(--faint);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.pick-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px;margin-top:10px;border-top:1px solid var(--line);font-size:11.5px}.row-link{display:flex;width:100%;align-items:center;gap:8px;padding:0;border:0;background:transparent;text-align:left;font-family:inherit;cursor:pointer}.finish-note{display:flex;align-items:flex-start;gap:7px;color:var(--muted);font-size:11px;line-height:1.6}.finish-note .icon{width:14px;height:14px;flex:none;margin-top:2px;color:var(--primary)}.volume-card{width:100%;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}.volume-card:hover{border-color:var(--line-strong)}.volume-card.selected{border-color:#a9b8a2;background:#fbfaf5}.volume-card.vol-4{border-top-color:var(--clay)}.event-year{margin-bottom:24px}.event-year:last-child{margin-bottom:0}.event-side-actions{display:flex;align-items:center;gap:2px}.draft-list{display:flex;flex-direction:column;margin-top:6px}.draft-card{display:flex;align-items:flex-start;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}.draft-card:last-child{border-bottom:0;padding-bottom:0}.draft-main{min-width:0;flex:1}.draft-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--ink);font-size:13px;font-weight:600}.draft-desc{margin-top:4px;color:var(--ink-2);font-size:11.5px;line-height:1.65}.draft-meta{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px;color:var(--faint);font-size:10.5px}.draft-actions{display:flex;flex:none;gap:6px;align-items:center}.income{color:var(--green)}.expense{color:var(--orange)}.summary-value.income{color:var(--chart-income)}.summary-value.expense{color:var(--chart-expense)}.finance-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 22px;border-bottom:1px solid var(--line)}.fund-kind{overflow:hidden;color:var(--faint);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.fund-actions{display:flex;align-items:center;gap:1px;margin-left:auto}.fund-actions .icon-btn{width:28px;height:28px}.fund-add{margin-top:10px}.tx-note{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-head-count{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--muted);font-size:11.5px}.review-head-count .icon{color:var(--primary)}.issue-modal-body{display:flex;flex-direction:column;gap:14px}.issue-modal-body .evidence-grid{margin:0}.issue-modal-body .radio-stack{display:flex;flex-wrap:wrap;gap:6px}.issue-modal-body .tip-box{margin:0}.merge-body{display:flex;flex-direction:column;gap:14px}.merge-profiles{margin-top:0}.merge-section-title{margin-top:2px}.merge-table,.merge-migrate{margin-top:0}.merge-body>.tip-box{margin-top:0}.merge-body>.field{margin-top:2px}.merge-profile,.merge-pick{cursor:pointer}.account-list{display:flex;flex-direction:column;margin-top:4px}.account-row{display:flex;align-items:center;gap:11px;padding:12px 0;border-bottom:1px solid var(--line)}.account-row:last-child{border-bottom:0}.account-main{min-width:0;flex:1}.account-name{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--ink);font-size:12.5px;font-weight:600}.account-meta{margin-top:3px;color:var(--faint);font-size:10.5px;line-height:1.5}.account-binding,.account-role{display:flex;width:176px;flex:none;flex-direction:column;gap:4px}.account-binding label,.account-role label{color:var(--faint);font-size:10px}.account-binding .select,.account-role .select{width:100%}.account-actions{display:flex;width:186px;flex:none;flex-wrap:wrap;gap:6px;justify-content:flex-end}.invite-list{display:flex;flex-direction:column}.invite-list .claim-actions{display:flex;align-items:center;gap:7px;margin-top:8px}.copy-row{display:flex;align-items:center;gap:7px}.copy-row input{flex:1;min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:4px;outline:none;background:#f4f2ec;color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.copy-row .btn{flex:none}.invite-result{display:flex;flex-direction:column;gap:13px}.invite-result .field{gap:5px}.invite-result .field>label{color:var(--ink-2);font-size:11px;font-weight:600}.mini-code{display:flex;gap:12px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:6px;background:#faf8f2}.mini-code img{width:132px;height:132px;flex:none;border-radius:4px;background:#fff}.mini-code-meta{display:flex;flex-direction:column;gap:10px;min-width:0;align-self:center;font-size:12px;line-height:1.6}.mini-code-meta .btn{align-self:flex-start;text-decoration:none}.notify-wrap,.user-menu{position:relative}.notify-pop{position:absolute;top:calc(100% + 8px);right:-8px;z-index:60;width:min(360px,calc(100vw - 28px));overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--surface);box-shadow:0 18px 44px #2f2e2a1a}.notify-pop-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--line);color:var(--ink);font-size:12px}.notify-pop-head span{color:var(--faint);font-size:10.5px;font-weight:400}.notify-list{display:flex;max-height:380px;flex-direction:column;overflow-y:auto}.notify-item{display:flex;width:100%;flex-direction:column;gap:2px;padding:10px 14px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer}.notify-item:last-child{border-bottom:0}.notify-item:hover{background:var(--surface-2)}.notify-item.unread{background:#f5f7f1}.notify-item-title{color:var(--ink);font-size:11.5px;font-weight:600}.notify-item-body{color:var(--muted);font-size:11px;line-height:1.55}.notify-item-time{margin-top:1px;color:var(--faint);font-size:10px}.notify-empty{padding:28px 16px;color:var(--faint);font-size:11.5px;text-align:center}.user-menu-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:60;display:flex;width:230px;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--surface);box-shadow:0 18px 44px #2f2e2a1a}.user-menu-meta{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);font-size:11px}.user-menu-meta b{color:var(--ink);font-size:12px;font-weight:600}.user-menu-meta>span{color:var(--muted);font-size:10.5px}.user-menu-meta .badge{width:-moz-fit-content;width:fit-content;margin-top:3px}.user-menu-pop>button{display:flex;align-items:center;gap:8px;padding:9px 14px;border:0;background:transparent;color:var(--ink-2);font-family:inherit;font-size:11.5px;text-align:left;cursor:pointer}.user-menu-pop>button:hover{background:var(--surface-2);color:var(--ink)}.user-menu-pop>button.danger{border-top:1px solid var(--line);color:var(--red)}.user-menu-pop>button .icon{width:15px;height:15px}.login-page{display:grid;min-height:100vh;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);background:var(--bg)}.login-story{display:flex;min-height:100vh;flex-direction:column;justify-content:space-between;gap:32px;padding:46px 52px;border-right:1px solid var(--line);background:radial-gradient(circle at 18% 12%,rgba(102,121,93,.08),transparent 42%),var(--surface-2)}.login-brand{display:flex;align-items:center;gap:11px}.login-story-copy{max-width:520px;margin:auto 0}.login-eyebrow{display:inline-flex;align-items:center;gap:6px;color:var(--primary);font-size:10.5px;font-weight:600;letter-spacing:.14em}.login-story-copy h1{margin:17px 0 14px;color:var(--ink);font-size:clamp(27px,3.3vw,38px);font-weight:600;letter-spacing:-.03em;line-height:1.34}.login-story-copy p{max-width:440px;margin:0;color:var(--muted);font-size:12.5px;line-height:1.9}.login-story-points{display:flex;flex-direction:column;gap:13px;margin-top:30px;padding-top:22px;border-top:1px solid var(--line)}.login-story-points>div{display:flex;align-items:baseline;gap:12px}.login-story-points b{width:64px;flex:none;color:var(--primary-deep);font-size:11.5px;font-weight:600}.login-story-points span{color:var(--muted);font-size:11.5px;line-height:1.7}.login-story-foot{color:var(--faint);font-size:10.5px;letter-spacing:.02em}.login-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 28px}.login-card{width:min(440px,100%);padding:32px 32px 28px;border:1px solid var(--line);border-radius:4px;background:var(--surface)}.login-card-head{margin-bottom:20px}.login-card-kicker{color:var(--primary);font-size:9.5px;font-weight:600;letter-spacing:.16em}.login-card-head h2{margin:6px 0;color:var(--ink);font-size:21px;font-weight:600;letter-spacing:-.02em}.login-card-head p{margin:0;color:var(--muted);font-size:11.5px;line-height:1.65}.login-tabs{display:flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:4px;margin-bottom:18px;background:var(--surface-2)}.login-tabs button{flex:1;height:30px;border:0;border-radius:3px;background:transparent;color:var(--muted);font-family:inherit;font-size:11px;cursor:pointer}.login-tabs button.active{background:#fcfbf8;color:var(--ink);font-weight:600;box-shadow:0 1px 2px #2f2e2a0f}.login-error{display:flex;align-items:flex-start;gap:7px;padding:9px 11px;border:1px solid #e6d3cf;border-radius:4px;margin-bottom:14px;background:var(--red-soft);color:var(--red);font-size:11px;line-height:1.55}.login-error svg{flex:none;margin-top:1px}.login-form{display:flex;flex-direction:column;gap:13px}.login-field{display:flex;flex-direction:column;gap:5px}.login-field>span{color:var(--ink-2);font-size:10.5px;font-weight:600}.login-input{display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--line);border-radius:4px;background:#f4f2ec;transition:border-color .15s,background .15s,box-shadow .15s}.login-input:focus-within{border-color:#b9c4b0;background:#fcfbf8;box-shadow:0 0 0 3px var(--primary-ring)}.login-input>svg{width:15px;height:15px;flex:none;color:var(--faint)}.login-input input{width:100%;height:38px;padding:0;border:0;outline:none;background:transparent;color:var(--ink);font-family:inherit;font-size:12.5px}.login-input input::-moz-placeholder{color:var(--faint)}.login-input input::placeholder{color:var(--faint)}.login-eye{display:grid;width:24px;height:24px;flex:none;place-items:center;padding:0;border:0;border-radius:3px;background:transparent;color:var(--faint)}.login-eye:hover{color:var(--ink-2)}.login-eye svg{width:15px;height:15px}.login-field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.login-submit{width:100%;height:40px;justify-content:center;margin-top:2px}.login-wechat-note{color:var(--faint);font-size:10.5px;line-height:1.6;text-align:center}.login-qr{display:flex;align-items:center;justify-content:center;width:208px;height:208px;margin:0 auto;padding:10px;border:1px solid var(--line);border-radius:6px;background:#fff}.login-qr-image{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.login-qr-placeholder{display:flex;flex-direction:column;align-items:center;gap:8px;padding:0 12px;color:var(--muted);font-size:11px;line-height:1.5;text-align:center}.login-qr-placeholder.error{color:var(--red)}.login-qr-hint{color:var(--ink-2);font-size:12px;text-align:center}.login-qr-note{font-size:10.5px;line-height:1.6;text-align:center}.login-invite-hint{color:var(--muted);font-size:10.5px}.login-invite-hint.error{color:var(--red)}.login-invite-card{display:flex;flex-direction:column;gap:3px;padding:10px 11px;border:1px solid #d6dfcd;border-radius:4px;background:var(--primary-soft);color:var(--ink-2);font-size:11px;line-height:1.55}.login-invite-card .badge{width:-moz-fit-content;width:fit-content;margin-bottom:2px}.login-bind{display:flex;flex-direction:column;gap:12px}.login-bind-actions{display:flex;flex-wrap:wrap;gap:8px}.login-bind-actions .btn{flex:1;justify-content:center;min-width:132px}.login-switch{align-self:center;padding:0;border:0;background:none;color:var(--primary);font-size:11px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.login-switch:hover{color:var(--primary-strong, var(--primary))}.login-panel-foot{margin-top:16px;color:var(--faint);font-size:10px;text-align:center}.login-panel-foot a{color:inherit;text-decoration:none}.login-panel-foot a:hover{color:var(--primary);text-decoration:underline;text-underline-offset:2px}@media (max-width: 1180px){.account-binding{width:156px}}@media (max-width: 980px){.login-page{grid-template-columns:1fr}.login-story{min-height:auto;padding:26px 28px;border-right:0;border-bottom:1px solid var(--line)}.login-story-copy,.login-story-foot{display:none}.login-panel{justify-content:flex-start;padding:28px 24px 48px}.notify-pop{right:0}.account-row{flex-wrap:wrap}.account-binding,.account-role{width:calc(50% - 6px)}.account-actions{width:100%}}@media (max-width: 760px){.login-story{padding:20px 18px}.login-story .brand-text span{display:block}.login-panel{padding:24px 14px 40px}.login-card{padding:24px 20px 22px}.login-field-row{grid-template-columns:1fr}.photo-detail{grid-template-columns:minmax(0,1fr)}.draft-card{flex-direction:column;gap:8px}.draft-actions{width:100%}.finance-toolbar{padding:12px 14px}.account-binding,.account-role{width:100%}.account-row>.avatar{width:34px;height:34px}.album-grid{gap:10px}.copy-row{flex-wrap:wrap}.copy-row .btn{width:100%}}
