/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.start{inset-inline-start:var(--spacing)}.table{display:table}}:root{--paper:#f4efe3;--paper-deep:#e8dfcf;--cream:#fffaf0;--ink:#24251f;--muted:#727065;--line:#d2c7b5;--red:#9d3128;--red-dark:#742219;--jade:#345f55;--gold:#aa824a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--font-geist-sans),"PingFang SC",sans-serif;background-image:radial-gradient(#8b795f15 .7px,#0000 .7px);background-size:7px 7px;margin:0}button,input,select,textarea{font:inherit}button,a{transition:all .18s}button{cursor:pointer}.site-header{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f4efe3ee;align-items:center;height:82px;padding:0 5vw;display:flex;position:sticky;top:0}.brand{color:inherit;align-items:center;gap:12px;text-decoration:none;display:flex}.brand>span{border:1px solid var(--red);width:44px;height:44px;color:var(--red);place-items:center;font:700 25px Songti SC,serif;display:grid;transform:rotate(-3deg)}.brand b,.brand small{display:block}.brand b{letter-spacing:.08em;font:700 16px Songti SC,serif}.brand small{color:var(--muted);font:8px var(--font-geist-mono);letter-spacing:.13em;margin-top:4px}.site-header nav{gap:32px;margin:auto;display:flex}.site-header nav a{color:var(--muted);font-size:12px;text-decoration:none}.site-header nav a:hover{color:var(--red)}.primary{border:1px solid var(--red);background:var(--red);color:#fff;padding:13px 20px;font-weight:700}.primary:hover{background:var(--red-dark)}.primary.small{padding:10px 15px;font-size:11px}.hero{grid-template-columns:1fr .95fr;min-height:680px;padding:76px 7vw 68px;display:grid;overflow:hidden}.hero-copy{align-self:center}.eyebrow,.section-title span,.relation-copy>span,.member-modal header span{color:var(--red);font:10px var(--font-geist-mono);letter-spacing:.2em}.hero h1{letter-spacing:.05em;margin:20px 0;font:700 clamp(58px,7.4vw,108px)/.98 Songti SC,STSong,serif}.intro{max-width:570px;color:var(--muted);font:17px/1.85 Songti SC,serif}.hero-actions{align-items:center;gap:27px;margin-top:34px;display:flex}.hero-actions>a{color:var(--ink);font-size:12px;text-decoration:none}.hero-actions>a:hover{color:var(--red)}.hero-actions span{margin-left:10px}.hero dl{margin:58px 0 0;display:flex}.hero dl div{border-right:1px solid var(--line);min-width:120px;margin-right:35px;padding-right:35px}.hero dl div:last-child{border:0}.hero dt{font:38px var(--font-geist-mono);color:var(--jade)}.hero dd{color:var(--muted);margin:6px 0 0;font-size:10px}.hero-tree{align-self:center;height:500px;position:relative}.hero-tree:before{content:"";border:1px solid var(--line);border-radius:50% 48% 45% 50%;position:absolute;inset:20px 7% 12px;transform:rotate(-7deg)}.seal{z-index:2;border:2px solid var(--red);width:120px;height:120px;color:var(--red);place-items:center;font:700 65px Songti SC,serif;display:grid;position:absolute;top:38%;left:42%;transform:rotate(-4deg)}.seal:after{content:"";border:1px solid var(--red);position:absolute;inset:6px}.seal small{background:var(--red);color:#fff;font:8px var(--font-geist-mono);letter-spacing:.15em;padding:4px;position:absolute;bottom:8px;right:-16px}.branch-line{background:var(--red);opacity:.45;position:absolute}.b1{width:1px;height:80px;top:27%;left:50%}.b2{width:26%;height:1px;top:64%;left:31%}.b3{width:19%;height:1px;top:64%;left:57%}.ancestor-card{border:1px solid var(--line);background:#fffaf0d9;padding:15px 17px;position:absolute;box-shadow:0 12px 35px #65451e0c}.ancestor-card small,.ancestor-card strong,.ancestor-card span{display:block}.ancestor-card small{color:var(--red);font:8px var(--font-geist-mono)}.ancestor-card strong{margin-top:6px;font:700 18px Songti SC,serif}.ancestor-card span{color:var(--muted);margin-top:5px;font-size:9px}.ancestor-card.root{top:7%;left:35%}.ancestor-card.left{bottom:12%;left:9%}.ancestor-card.right{bottom:12%;right:0}.notice{z-index:50;background:var(--jade);color:#fff;align-items:center;gap:20px;max-width:420px;padding:14px 17px;font-size:12px;display:flex;position:fixed;bottom:22px;right:22px;box-shadow:0 12px 40px #0003}.notice button{color:#fff;background:0 0;border:0}.tree-section,.index-section{padding:86px 5vw}.tree-section{border-top:1px solid var(--line);background:#faf6ed}.section-title{justify-content:space-between;align-items:end;gap:40px;margin-bottom:38px;display:flex}.section-title h2,.relation-copy h2{margin:8px 0 0;font:700 38px Songti SC,serif}.section-title>p{max-width:440px;color:var(--muted);margin:0;font-size:12px;line-height:1.8}.generation-scroll{gap:14px;padding:8px 0 25px;display:flex;overflow-x:auto}.generation{border:1px solid var(--line);background:var(--cream);flex:0 0 285px;min-height:340px}.generation>header{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:18px;display:flex}.generation>header i{font:normal 21px var(--font-geist-mono);color:var(--red)}.generation>header b,.generation>header small{display:block}.generation>header b{font:700 15px Songti SC,serif}.generation>header small{color:var(--muted);margin-top:4px;font-size:8px}.generation>div{padding:8px 14px}.person-card{border-bottom:1px dashed var(--line);align-items:center;gap:11px;padding:13px 4px;display:flex}.person-card>span,.avatar{border:1px solid var(--red);width:36px;height:36px;color:var(--red);border-radius:50%;flex:none;place-items:center;font:700 15px Songti SC,serif;display:grid}.person-card b,.person-card small,.person-card em{display:block}.person-card b{font-size:12px}.person-card small{color:var(--muted);margin-top:3px;font-size:8px}.person-card em{color:var(--jade);font:normal 8px var(--font-geist-mono);margin-top:4px}.empty-state{border:1px dashed var(--line);text-align:center;place-items:center;min-height:330px;display:grid}.empty-state>span{border:1px solid var(--red);width:65px;height:65px;color:var(--red);place-items:center;font:700 32px Songti SC,serif;display:grid}.empty-state h3{margin:16px 0 0;font:700 22px Songti SC,serif}.empty-state p{color:var(--muted);margin:8px 0 22px;font-size:11px}.relation-section{background:var(--ink);color:#eee8db;grid-template-columns:.75fr 1.25fr;gap:7vw;padding:100px 7vw;display:grid}.relation-copy p{color:#a9a89e;max-width:470px;font-size:13px;line-height:1.8}.privacy-note{border-top:1px solid #ffffff25;gap:15px;margin-top:40px;padding-top:18px;display:flex}.privacy-note b{color:#c98b80;font-size:10px}.privacy-note span{color:#8f9189;max-width:320px;font-size:9px;line-height:1.7}.relation-tool{background:#ffffff08;border:1px solid #ffffff28;padding:24px}.selectors{grid-template-columns:1fr 30px 1fr;align-items:end;gap:15px;display:grid}.selectors label span{color:#9fa198;margin-bottom:8px;font-size:9px;display:block}.selectors select{color:#eee8db;background:#2e302a;border:1px solid #ffffff24;outline:none;width:100%;padding:14px}.selectors>i{color:#c98b80;text-align:center;padding-bottom:14px;font-style:normal}.relation-result{text-align:center;background:#171914;border:1px solid #ffffff18;place-items:center;min-height:250px;margin-top:22px;padding:24px;display:grid}.relation-result>small{color:#a9a89e}.relation-result>strong{color:#d99b8e;margin:10px 0;font:700 44px Songti SC,serif}.relation-result>p{color:#8f9189;max-width:400px;font-size:11px}.relation-result>div{flex-wrap:wrap;justify-content:center;gap:7px;margin-top:12px;display:flex}.relation-result>div span{align-items:center;gap:7px;display:flex}.relation-result>div b{border:1px solid #ffffff24;padding:6px 9px;font-size:9px}.relation-result>div i{color:#8f9189;font:normal 8px var(--font-geist-mono)}.index-section{background:var(--paper)}.search{border-bottom:1px solid var(--ink);align-items:center;width:min(360px,100%);display:flex}.search input{background:0 0;border:0;outline:0;width:100%;padding:10px}.directory{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.directory>article{border:1px solid var(--line);background:#faf6ed;gap:14px;padding:20px;display:flex}.directory h3{margin:0;font:700 17px Songti SC,serif}.directory p{color:var(--muted);margin:6px 0;font-size:9px}.directory small{color:var(--jade);font-size:9px}.directory blockquote{border-left:2px solid var(--red);color:var(--muted);margin:11px 0 0;padding-left:9px;font-size:10px;line-height:1.6}.directory-empty{border:1px dashed var(--line);color:var(--muted);text-align:center;grid-column:1/-1;padding:70px}footer{background:#ded4c3;align-items:center;gap:18px;padding:36px 6vw;display:flex}.footer-seal{border:1px solid var(--red);width:44px;height:44px;color:var(--red);place-items:center;font:700 24px Songti SC,serif;display:grid}footer b{font:700 15px Songti SC,serif}footer p{color:var(--muted);margin:5px 0 0;font-size:9px}footer>a{color:var(--ink);margin-left:auto;font-size:10px;text-decoration:none}.modal-backdrop{z-index:60;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#181914b8;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.member-modal{background:var(--cream);width:min(820px,100%);max-height:92vh;overflow:auto;box-shadow:0 30px 90px #0005}.member-modal>header{border-bottom:1px solid var(--line);justify-content:space-between;padding:27px 30px;display:flex}.member-modal h2{margin:6px 0 0;font:700 28px Songti SC,serif}.member-modal header p{color:var(--muted);margin:6px 0 0;font-size:10px}.member-modal header button{border:1px solid var(--line);background:0 0;width:36px;height:36px;font-size:22px}.member-modal form{padding:26px 30px 30px}.form-grid{grid-template-columns:1fr 1fr;gap:17px;display:grid}.member-modal label>span{color:var(--muted);margin-bottom:7px;font-size:9px;display:block}.member-modal input,.member-modal select,.member-modal textarea{border:1px solid var(--line);background:#fffdfa;outline:0;width:100%;padding:12px}.member-modal input:focus,.member-modal select:focus,.member-modal textarea:focus{border-color:var(--red)}.member-modal label small{color:var(--muted);margin-top:5px;font-size:8px;display:block}.notes{margin-top:17px;display:block}.notes textarea{resize:vertical;height:90px}.form-actions{justify-content:flex-end;gap:9px;margin-top:22px;display:flex}.form-actions button{border:1px solid var(--line);background:0 0;padding:12px 20px}.form-actions .primary{border-color:var(--red);background:var(--red)}.family-tree-canvas{border:1px solid var(--line);background:linear-gradient(#fffaf0,#f7f0e4);padding:8px 0 30px;overflow:auto}.family-tree{width:max-content;min-width:100%;padding:34px 24px 16px}.family-tree ul{justify-content:center;margin:0;padding:34px 0 0;display:flex;position:relative}.family-tree>ul{padding-top:0}.family-tree li{text-align:center;padding:34px 10px 0;list-style:none;position:relative}.family-tree>ul>li{padding-top:0}.family-tree li:before,.family-tree li:after{content:"";border-top:1px solid var(--red);width:50%;height:34px;position:absolute;top:0;right:50%}.family-tree li:after{border-left:1px solid var(--red);left:50%;right:auto}.family-tree li:only-child:before,.family-tree li:only-child:after{display:none}.family-tree li:first-child:before,.family-tree li:last-child:after{border:0}.family-tree li:last-child:before{border-right:1px solid var(--red);border-radius:0 7px 0 0}.family-tree li:first-child:after{border-radius:7px 0 0}.family-tree ul ul:before{content:"";border-left:1px solid var(--red);height:34px;position:absolute;top:0;left:50%}.family-node-group{z-index:1;align-items:stretch;gap:26px;padding:8px;display:inline-flex;position:relative}.family-node{border:1px solid var(--line);text-align:left;background:#fffdf8;grid-template-columns:38px minmax(90px,1fr) auto;align-items:center;gap:9px;min-width:210px;padding:13px;display:grid;position:relative;box-shadow:0 8px 24px #745c3712}.family-node:before{content:"";pointer-events:none;border:1px solid #9d312815;position:absolute;inset:4px}.node-seal{border:1px solid var(--red);width:38px;height:38px;color:var(--red);border-radius:50%;place-items:center;font:700 17px Songti SC,serif;display:grid}.family-node b,.family-node small{display:block}.family-node b{font:700 14px Songti SC,serif}.family-node small{color:var(--muted);margin-top:4px;font-size:8px}.family-node button,.edit-person{border:0;border-bottom:1px solid var(--red);color:var(--red);background:0 0;font-size:8px;position:relative}.family-node button:hover,.edit-person:hover{color:var(--red-dark)}.spouse-link{border-top:1px solid var(--red);color:#0000;width:24px;position:absolute;top:50%;left:-25px}.spouse-link:after{content:"合";background:var(--cream);color:var(--red);padding:1px 2px;font:7px Songti SC,serif;position:absolute;top:-8px;left:7px}.directory>article{position:relative}.edit-person{white-space:nowrap;align-self:flex-start;margin-left:auto}.danger-zone{background:#9d31280a;border:1px solid #b6534738;align-items:center;gap:10px;margin-top:20px;padding:14px;display:flex}.danger-zone>div{margin-right:auto}.danger-zone b,.danger-zone span{display:block}.danger-zone b{color:var(--red-dark);font-size:11px}.danger-zone span{color:var(--muted);margin-top:4px;font-size:8px}.danger-zone button{border:1px solid var(--line);color:var(--muted);background:0 0;padding:8px 11px;font-size:9px}.danger-zone .danger-trigger,.danger-zone .danger-confirm{border-color:var(--red);color:var(--red)}.danger-zone .danger-confirm{background:var(--red);color:#fff}.danger-zone button:disabled{cursor:not-allowed;opacity:.55}@media (width<=900px){.site-header nav{display:none}.site-header .primary{margin-left:auto}.hero{grid-template-columns:1fr;padding-top:55px}.hero-tree{height:430px}.relation-section{grid-template-columns:1fr}.directory{grid-template-columns:1fr 1fr}}@media (width<=600px){.site-header{height:70px;padding:0 16px}.brand b{font-size:13px}.brand small{display:none}.site-header .small{padding:9px}.hero{min-height:0;padding:48px 20px 45px}.hero h1{font-size:56px}.intro{font-size:15px}.hero dl div{flex:1;min-width:0;margin-right:15px;padding-right:15px}.hero-tree{height:360px}.seal{width:100px;height:100px;left:36%}.ancestor-card.root{left:24%}.tree-section,.index-section{padding:65px 18px}.section-title{display:block}.section-title>p,.search{margin-top:18px}.relation-section{padding:70px 18px}.selectors{grid-template-columns:1fr}.selectors>i{padding:0}.directory,.form-grid{grid-template-columns:1fr}.member-modal>header,.member-modal form{padding-left:20px;padding-right:20px}footer{align-items:flex-start}footer>a{display:none}}
