:root{color:#172033;background:#f5efe4;font-family:Songti SC,"Noto Serif CJK SC",Microsoft YaHei,serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--zupu-ink: #172033;--zupu-muted: #667085;--zupu-paper: #fffdf8;--zupu-paper-deep: #f8f0df;--zupu-line: #dfd0b8;--zupu-red: #9f2d20;--zupu-red-dark: #6f2018;--zupu-gold: #b58a45;--zupu-shadow: 0 20px 56px rgba(62, 38, 20, .12);--zupu-soft-shadow: 0 10px 30px rgba(62, 38, 20, .08)}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden;background:radial-gradient(circle at top left,rgba(181,138,69,.16),transparent 32rem),linear-gradient(180deg,#fbf6ec,#f3eadc 46%,#efe4d2)}a{color:inherit;text-decoration:none}.app-shell{display:flex;flex-direction:column;min-height:100vh;overflow-x:hidden;background-image:linear-gradient(rgba(112,78,45,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(112,78,45,.03) 1px,transparent 1px);background-size:36px 36px}.topbar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;min-height:72px;padding:0 32px;background:#fffdf8db;border-bottom:1px solid var(--zupu-line);box-shadow:0 8px 30px #402a180f;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand-link{display:inline-flex}.topbar-actions{display:flex;gap:10px;align-items:center}.public-nav-link{display:inline-flex;align-items:center;min-height:34px;padding:0 14px;border:1px solid transparent;border-radius:999px;color:#614531;font-weight:700;line-height:1;text-decoration:none;transition:color .18s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease}.public-nav-link:hover{border-color:#9f2d2038;color:var(--zupu-red);background:#9f2d200f}.public-nav-link.active{border-color:#9f2d204d;color:#fff;background:var(--zupu-red);box-shadow:0 10px 20px #9f2d2029}.topbar-actions .ant-btn{border-radius:999px;font-weight:700}.topbar-actions .ant-btn-primary{border-color:var(--zupu-red);background:var(--zupu-red);box-shadow:0 10px 20px #9f2d2029}.user-nav-button.ant-btn{min-height:36px;padding-inline:14px;color:#6f2018;border-color:#9f2d202e;background:#fffdf8c2;box-shadow:inset 0 0 0 1px #fffdf880}.user-nav-button.ant-btn:hover,.user-nav-button.ant-btn:focus{color:var(--zupu-red);border-color:#9f2d2052;background:#9f2d200f}.user-nav-button--primary.ant-btn{color:#fffdf8;border-color:var(--zupu-red);background:linear-gradient(145deg,var(--zupu-red),var(--zupu-red-dark));box-shadow:0 10px 20px #9f2d2029}.user-nav-button--primary.ant-btn:hover,.user-nav-button--primary.ant-btn:focus{color:#fffdf8;border-color:var(--zupu-red-dark);background:linear-gradient(145deg,#b93628,var(--zupu-red-dark))}.topbar-account-name{font-weight:700;color:var(--zupu-ink)}.app-logo{display:inline-flex;align-items:center;gap:10px;font-weight:700}.app-logo-mark{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:6px;color:#f6d27a;background:linear-gradient(145deg,var(--zupu-red),var(--zupu-red-dark));box-shadow:inset 0 0 0 1px #fffdf847,0 8px 18px #6f201838;overflow:hidden}.app-logo-seal{width:30px;height:30px;display:block}.app-logo-seal rect{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.35;opacity:.66}.app-logo-seal text{fill:currentColor;font-family:Kaiti SC,STKaiti,KaiTi,FZKai-Z03S,Songti SC,serif;font-size:22px;font-weight:900;text-anchor:middle;dominant-baseline:middle;letter-spacing:0;paint-order:stroke fill;stroke:#5c22122e;stroke-width:.35}.app-logo-text{letter-spacing:0;color:#21160f}.page-main{flex:1 0 auto;width:min(1200px,calc(100% - 32px));margin:0 auto;padding:34px 0 52px}.site-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 16px;width:min(1200px,calc(100% - 32px));box-sizing:border-box;margin:0 auto;padding:18px 0 24px;border-top:1px solid rgba(151,118,78,.16);color:#876d55;font-family:Microsoft YaHei,sans-serif;font-size:12px;line-height:1.6}.site-footer a{color:inherit;text-decoration:none}.site-footer a:hover,.site-footer a:focus-visible{color:var(--zupu-red);text-decoration:underline}.page-main--wide{box-sizing:border-box;width:min(1360px,calc(100vw - 32px));max-width:calc(100vw - 32px);margin:0 auto;overflow-x:clip;padding-right:0;padding-left:0}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px}.page-header h1{margin:0;font-size:32px;line-height:1.25;color:#201510}.page-header p{margin:8px 0 0;color:var(--zupu-muted)}.placeholder-panel{padding:32px;border:1px solid var(--zupu-line);border-radius:8px;background:var(--zupu-paper);color:var(--zupu-muted)}.home-page{display:grid;gap:30px}.home-hero{position:relative;min-height:520px;overflow:hidden;border:1px solid rgba(255,253,248,.42);border-radius:8px;background-size:cover;background-position:center;box-shadow:var(--zupu-shadow);isolation:isolate}.home-hero:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;content:"";background:linear-gradient(90deg,#120c09bd,#3619117a 42%,#36191124),linear-gradient(180deg,#0000000a,#00000057)}.home-hero__shade{display:flex;min-height:440px;flex-direction:column;justify-content:flex-end;padding:68px;color:#fffdf8}.home-hero h1{max-width:720px;margin:16px 0 14px;font-size:58px;line-height:1.04;text-shadow:0 12px 30px rgba(0,0,0,.42)}.home-hero p{max-width:680px;margin:0;color:#fffdf8e6;font-size:19px;line-height:1.85}.home-hero__content{max-width:760px!important;margin-top:12px!important;color:#fffdf8d1!important;font-size:16px!important;line-height:1.9!important;white-space:pre-line}.home-kicker{display:inline-flex;width:fit-content;align-items:center;gap:8px;padding:5px 12px;border:1px solid rgba(159,45,32,.28);border-radius:999px;color:var(--zupu-red);font-size:13px;font-weight:700;background:#9f2d200f}.home-kicker:before{width:6px;height:6px;border-radius:999px;background:currentColor;content:""}.home-hero .home-kicker{color:#fffdf8;border-color:#fffdf861;background:#fffdf81a}.home-section{position:relative;overflow:hidden;padding:38px;border:1px solid var(--zupu-line);border-radius:8px;background:linear-gradient(135deg,#fffdf8f5,#f8f0dff0),var(--zupu-paper);box-shadow:var(--zupu-soft-shadow)}.home-section:before{position:absolute;top:0;left:0;width:5px;height:100%;background:linear-gradient(180deg,var(--zupu-red),var(--zupu-gold));content:""}.home-section h2{margin:14px 0 18px;color:#241710;font-size:30px;line-height:1.25}.home-section--intro{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:32px}.heritage-showcase{display:grid;gap:24px;padding-bottom:32px;background:linear-gradient(135deg,#fffdf8fa,#f8f0dff0),var(--zupu-paper)}.heritage-showcase__heading{display:grid;max-width:760px;gap:8px}.heritage-showcase__heading h2{margin-bottom:0}.heritage-showcase__heading p{margin:0;color:#5a6476;font-size:15px;line-height:1.8}.heritage-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.heritage-card{position:relative;display:grid;min-height:260px;overflow:hidden;border:1px solid rgba(92,53,34,.18);border-radius:8px;color:#fffdf8;background:#392019;box-shadow:0 18px 34px #50301e24;isolation:isolate}.heritage-card img{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-2;width:100%;height:100%;object-fit:cover;transform:scale(1.01);transition:transform .28s ease,filter .28s ease}.heritage-card__veil{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:linear-gradient(180deg,#1a100b14,#1a100b6b 44%,#1a100bdb),linear-gradient(90deg,#6f201847,#6f20180a)}.heritage-card__eyebrow{position:absolute;top:14px;left:14px;padding:4px 10px;border:1px solid rgba(255,253,248,.36);border-radius:999px;color:#fffdf8eb;font-size:12px;font-weight:800;background:#1e120c52;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.heritage-card__body{display:grid;align-self:end;gap:8px;padding:22px}.heritage-card__body strong{font-size:21px;line-height:1.25}.heritage-card__body span{color:#fffdf8c7;font-size:14px;line-height:1.65}.heritage-card--link{text-decoration:none}.heritage-card--link:hover{color:#fffdf8}.heritage-card:hover img{filter:saturate(1.06) contrast(1.03);transform:scale(1.045)}.home-rich-text{white-space:pre-wrap;color:#3e4657;font-size:16px;line-height:1.95}.home-muted{color:var(--zupu-muted)}.home-split{display:grid;grid-template-columns:minmax(220px,360px) 1fr;gap:34px;align-items:center}.home-split__media{display:grid;min-height:240px;place-items:center;overflow:hidden;border-radius:8px;background:linear-gradient(145deg,#9f2d2014,#b58a4521),#efe4d2;box-shadow:inset 0 0 0 1px #9f2d2014}.home-split__media img{width:100%;height:100%;object-fit:cover}.emblem-temple-copy{position:relative;min-width:0}.emblem-temple-copy>:not(.emblem-temple-watermark){position:relative;z-index:1}.emblem-temple-watermark{position:absolute;right:-70px;bottom:-78px;z-index:0;width:290px;height:290px;object-fit:contain;opacity:.16;pointer-events:none}.home-seal{display:grid;width:126px;height:126px;place-items:center;border:4px double var(--zupu-red);border-radius:12px;color:var(--zupu-red);font-size:54px;font-weight:800;background:#fffdf8b8;box-shadow:0 16px 34px #6f201824}.generation-words{display:flex;flex-wrap:wrap;gap:12px}.generation-words span{display:grid;width:54px;height:62px;place-items:center;border:1px solid #d9c7a9;border-radius:6px;background:linear-gradient(180deg,#fffdf8,#f8ead2);color:#5b251d;font-size:24px;font-weight:700;box-shadow:0 8px 18px #50301e14}.motto-band{border-color:#6f201847;background-image:linear-gradient(135deg,#5b251df5,#221510f7),var(--motto-bg-image);background-size:cover;background-position:center;color:#fffdf8}.motto-band:after{position:absolute;right:22px;bottom:18px;z-index:0;width:min(260px,42vw);height:min(180px,30vw);border-radius:999px;background:radial-gradient(circle,#f6d27a29,#f6d27a00 70%);content:"";pointer-events:none}.motto-band>*{position:relative;z-index:1}.motto-band .home-kicker{color:#fffdf8}.motto-heading{max-width:760px}.motto-heading h2{margin:10px 0 6px;color:#fffdf8}.motto-heading p{margin:0;color:#fffdf8b8;line-height:1.8}.motto-band blockquote{margin:14px 0 0;font-size:26px;line-height:1.7;color:#fffdf8f5}.motto-rule-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px;margin-top:14px}.motto-rule{display:grid;grid-template-columns:38px 1fr;gap:7px;min-height:0;padding:7px 9px;border:1px solid rgba(255,253,248,.14);border-radius:7px;background:linear-gradient(180deg,#fffdf81a,#fffdf80b),#fffdf80f;box-shadow:inset 0 1px #fffdf814}.motto-rule__mark{display:grid;width:34px;height:22px;align-self:start;place-items:center;border:1px solid rgba(181,138,69,.72);border-radius:999px;color:#ffe9bf;font-size:12px;font-weight:800;letter-spacing:0;line-height:1;white-space:nowrap;background:#9f2d203d}.motto-rule div{min-width:0;line-height:1.42}.motto-rule strong{display:inline;color:#fffdf8;font-size:14px;line-height:inherit}.motto-rule div>span{display:inline;margin-left:4px;color:#fffdf8a8;font-size:13px;line-height:inherit}.motto-summary{margin-top:16px;padding:16px 18px;border:1px solid rgba(181,138,69,.42);border-left:5px solid var(--zupu-gold);border-radius:8px;background:linear-gradient(135deg,#fffdf8fa,#f8f0dff5),var(--zupu-paper);color:#34241b}.motto-summary span{display:inline-flex;margin-bottom:8px;color:var(--zupu-red);font-size:13px;font-weight:800}.motto-summary p{margin:0;white-space:pre-wrap;color:#3f342c;font-size:15px;line-height:1.82}.timeline-item h3{margin:4px 0 6px;color:#241710;font-size:18px}.timeline-item__author{display:inline-flex;align-items:center;gap:7px;margin:0 0 10px;padding:4px 9px 4px 5px;border:1px solid rgba(159,45,32,.18);border-radius:999px;color:#7a4d31;font-size:13px;background:#9f2d200e}.timeline-item__author span{display:grid;width:21px;height:21px;place-items:center;border-radius:999px;color:#fffdf8;font-size:12px;font-weight:800;background:linear-gradient(145deg,var(--zupu-red),var(--zupu-red-dark));box-shadow:inset 0 0 0 1px #fffdf83d}.timeline-item__author strong{font-weight:700}.timeline-item p{margin:0 0 10px;color:#4d5668;line-height:1.75}.timeline-item__content{white-space:pre-line}.timeline-item img{display:block;max-width:280px;border-radius:8px}.timeline-item__time{color:var(--zupu-red);font-weight:700}.photo-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px}.photo-gallery figure{margin:0;overflow:hidden;border:1px solid var(--zupu-line);border-radius:8px;background:#fff}.photo-gallery .ant-image,.photo-gallery img{width:100%;height:180px;object-fit:cover}.photo-gallery figcaption{display:grid;gap:4px;padding:12px;color:var(--zupu-muted)}.photo-gallery figcaption strong{color:var(--zupu-ink)}.genealogy-page{display:grid;box-sizing:border-box;gap:18px;width:100%;max-width:100%;min-height:calc(100vh - 150px);min-width:0;overflow-x:clip}.genealogy-hero{position:relative;display:flex;box-sizing:border-box;width:100%;max-width:100%;overflow:hidden;align-items:flex-end;justify-content:space-between;gap:18px;padding:18px 24px;border:1px solid rgba(223,208,184,.96);border-radius:8px;background:linear-gradient(112deg,#fffdf8fa,#f8f0dff0 58%,#9f2d2021),var(--zupu-paper);box-shadow:var(--zupu-soft-shadow)}.genealogy-hero:before{position:absolute;right:-36px;bottom:-52px;width:230px;height:230px;border:1px solid rgba(159,45,32,.16);border-radius:999px;background:repeating-linear-gradient(90deg,rgba(159,45,32,.08) 0 1px,transparent 1px 18px);content:"";opacity:.6;transform:rotate(-12deg)}.genealogy-hero>*{position:relative}.genealogy-hero>div:first-child{min-width:0}.genealogy-hero h1{margin:8px 0 6px;color:#241710;font-size:28px;line-height:1.18}.genealogy-hero p{max-width:680px;margin:0;color:#5a6476;font-size:14px;line-height:1.65}.genealogy-hero__stats{display:flex;flex-shrink:0;gap:10px}.genealogy-hero__stats span{display:grid;min-width:104px;gap:2px;padding:9px 12px;border:1px solid rgba(159,45,32,.16);border-radius:8px;background:#fffdf8b8;box-shadow:inset 0 0 0 1px #fffdf88a}.genealogy-hero__stats strong{color:var(--zupu-red);font-size:22px;line-height:1}.genealogy-hero__stats small{color:var(--zupu-muted);font-size:12px}.genealogy-toolbar{position:absolute;top:14px;right:14px;z-index:2;display:inline-flex;align-items:center;gap:10px;padding:8px;border:1px solid rgba(223,208,184,.92);border-radius:999px;background:#fffdf8d1;box-shadow:0 12px 26px #50301e1f;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.genealogy-toolbar>span{padding-left:8px;color:#7a4d31;font-size:12px;font-weight:800}.genealogy-toolbar .ant-btn{border-radius:999px;color:var(--zupu-red)}.genealogy-toolbar .ant-btn.is-active{border-color:#9f2d206b;color:#fffdf8;background:var(--zupu-red)}.genealogy-toolbar__zoom{min-width:46px;height:32px;padding:0 9px;border:1px solid rgba(159,45,32,.14);border-radius:999px;color:#7a4d31;cursor:pointer;font:inherit;font-size:12px;font-weight:800;background:#fffdf8d1}.genealogy-toolbar__zoom:hover{border-color:#9f2d2052;color:var(--zupu-red)}.genealogy-view-switch{position:absolute;top:14px;left:50%;z-index:3;display:inline-flex;gap:6px;max-width:calc(100% - 650px);padding:7px;overflow-x:auto;border:1px solid rgba(223,208,184,.92);border-radius:999px;background:#fffdf8db;box-shadow:0 12px 26px #50301e1f;transform:translate(-50%);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.genealogy-view-switch button{min-height:32px;padding:0 12px;border:1px solid transparent;border-radius:999px;color:#7a4d31;cursor:pointer;font:inherit;font-size:12px;font-weight:900;white-space:nowrap;background:transparent}.genealogy-view-switch button:not(:disabled):not(.is-active):hover{border-color:#9f2d2038;color:var(--zupu-red);background:#9f2d200f}.genealogy-view-switch button.is-active,.genealogy-view-switch button.is-active:hover,.genealogy-view-switch button.is-active:focus-visible{border-color:#9f2d2057;color:#fffdf8!important;background:linear-gradient(135deg,var(--zupu-red),var(--zupu-red-dark));box-shadow:0 8px 18px #6f201824}.genealogy-view-switch button:disabled:not(.is-active){color:#7a4d316b;cursor:not-allowed}.genealogy-view-switch__divider{width:1px;min-width:1px;margin:4px 2px;background:#9f2d2029}.genealogy-view-switch .genealogy-view-switch__back{border-color:#9f2d202e;color:var(--zupu-red);background:#9f2d200f}.genealogy-view-switch .genealogy-view-switch__back:hover,.genealogy-view-switch .genealogy-view-switch__back:focus-visible{border-color:#9f2d2057;color:var(--zupu-red);background:#9f2d201f}.genealogy-workbench{display:block;min-width:0}.person-search-panel{position:absolute;top:58px;left:14px;z-index:3;display:grid;align-content:start;gap:10px;width:min(360px,calc(100% - 188px));max-height:430px;overflow:auto;padding:12px;border:1px solid rgba(223,208,184,.96);border-radius:8px;background:#fffdf8eb;box-shadow:0 12px 26px #50301e1f;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.genealogy-search-toggle{position:absolute;top:14px;left:14px;z-index:4;min-height:34px;padding:0 13px;border:1px solid rgba(159,45,32,.18);border-radius:999px;color:var(--zupu-red);cursor:pointer;font:inherit;font-size:12px;font-weight:800;background:#fffdf8e6;box-shadow:0 12px 26px #50301e1a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.genealogy-search-toggle:hover{border-color:#9f2d2052;background:#9f2d200f}.person-search-panel__head{display:flex;align-items:center;justify-content:space-between;gap:10px}.person-search-panel__head span{width:fit-content;padding:3px 9px;border-radius:999px;color:var(--zupu-red);font-size:12px;font-weight:800;background:#9f2d2014}.person-search-panel__head strong{color:#241710;font-size:14px}.person-search-panel__hint{margin:-6px 0 0;color:#6a7280;font-size:12px;line-height:1.7}.person-search-panel .ant-input-search .ant-input,.person-search-panel .ant-input-search .ant-input-group-addon .ant-btn{border-color:#9f2d2038}.person-search-item{display:grid!important;grid-template-columns:minmax(0,1fr);gap:8px;margin-bottom:8px;padding:10px 12px!important;border:1px solid rgba(223,208,184,.72)!important;background:#fffdf8b8;cursor:pointer;border-radius:6px;transition:background .18s ease,border-color .18s ease,transform .18s ease,box-shadow .18s ease}.person-search-item:hover{background:#9f2d200f;border-color:#9f2d2038!important;box-shadow:0 8px 18px #50301e14;transform:translate(2px)}.person-search-item div{display:grid}.person-search-item span{color:var(--zupu-muted);font-size:12px}.person-search-item small{align-self:center;color:#8b6843;font-size:12px}.person-search-item__actions{display:flex!important;align-items:center;justify-content:space-between;gap:8px}.genealogy-map-panel{position:relative;box-sizing:border-box;width:100%;max-width:100%;min-width:0;overflow:visible}.genealogy-map-panel:fullscreen,.genealogy-map-panel.is-fullscreen{width:100vw;max-width:none;height:100vh;padding:16px;overflow:hidden;background:linear-gradient(rgba(112,78,45,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(112,78,45,.03) 1px,transparent 1px),#f5efe4;background-size:36px 36px,36px 36px,auto}.genealogy-map-panel:fullscreen .genealogy-canvas,.genealogy-map-panel.is-fullscreen .genealogy-canvas{height:calc(100vh - 32px);min-height:0}.genealogy-map-panel:fullscreen .genealogy-tree-scroller,.genealogy-map-panel.is-fullscreen .genealogy-tree-scroller{height:100%;min-height:0}.genealogy-map-panel:fullscreen .genealogy-view-switch,.genealogy-map-panel.is-fullscreen .genealogy-view-switch{max-width:calc(100% - 650px)}.genealogy-canvas{position:relative;box-sizing:border-box;width:100%;max-width:100%;height:clamp(620px,calc(100vh - 300px),720px);min-width:0;min-height:620px;overflow:hidden;border:1px solid rgba(223,208,184,.98);border-radius:8px;background:radial-gradient(circle at top left,rgba(181,138,69,.16),transparent 26rem),linear-gradient(rgba(159,45,32,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(159,45,32,.032) 1px,transparent 1px),linear-gradient(180deg,#fffdf8,#fbf4e7);background-size:auto,28px 28px,28px 28px,auto;box-shadow:var(--zupu-soft-shadow)}.genealogy-tree-scroller{box-sizing:border-box;display:block;width:100%;max-width:100%;height:100%;min-height:0;overflow:auto;overscroll-behavior:contain;padding:112px 34px 34px;cursor:grab;touch-action:none}.genealogy-tree-scroller.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.genealogy-canvas__note{position:absolute;top:72px;left:16px;z-index:1;display:flex;flex-wrap:wrap;gap:8px;max-width:calc(100% - 210px)}.genealogy-canvas__note span{padding:5px 10px;border:1px solid rgba(159,45,32,.12);border-radius:999px;color:#7a4d31;font-size:12px;font-weight:700;background:#fffdf8b8}.genealogy-tree{display:inline-flex;justify-content:center;width:max-content;min-width:100%;max-width:none;overflow:visible;zoom:var(--genealogy-zoom, 1)}.genealogy-tree-layout{position:relative;flex:none}.genealogy-connectors{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible;pointer-events:none}.genealogy-connector{fill:none;stroke:#825b3794;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}.genealogy-connector.is-highlighted{stroke:var(--zupu-red);stroke-width:2.8}.genealogy-positioned-node{position:absolute;z-index:1}.genealogy-node{position:relative;display:grid;box-sizing:border-box;gap:3px;width:var(--genealogy-node-width, 116px);height:var(--genealogy-node-height, 58px);min-width:0;padding:11px 13px 10px;border:1px solid #d4c2a5;border-radius:7px;background:linear-gradient(180deg,#fffdf8fa,#fff4dffa),#fffdf8;color:var(--zupu-ink);cursor:pointer;font:inherit;text-align:center;box-shadow:0 8px 18px #50301e14;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.genealogy-node:before{position:absolute;top:0;left:0;width:100%;height:3px;border-radius:7px 7px 0 0;background:linear-gradient(90deg,#9f2d20b8,#b58a45b8);content:"";opacity:.5}.genealogy-node:hover{border-color:#9f2d2094;transform:translateY(-1px)}.genealogy-node__name{font-weight:700;letter-spacing:.03em}.genealogy-node em{width:fit-content;justify-self:center;margin-top:2px;padding:2px 7px;border-radius:999px;color:#8b6843;font-size:11px;font-style:normal;background:#b58a451f}.genealogy-node.is-active,.genealogy-node.is-highlighted{border-color:var(--zupu-red);box-shadow:0 0 0 3px #9f2d201f,0 14px 28px #6f20181f}.genealogy-node.is-collapsed{background:linear-gradient(180deg,#f7efe0fa,#efe2cafa),#f7efe0}.genealogy-node.is-male{border-color:#9f2d20b3}.genealogy-node.is-male .genealogy-node__name{color:#7d241b}.genealogy-node.is-female:before{background:linear-gradient(90deg,#b58a459e,#b58a4552)}.genealogy-node.is-female{border:3px double rgba(181,138,69,.82);padding:9px 11px 8px}.genealogy-node.is-female .genealogy-node__name{color:#8c641d}.genealogy-node.is-unknown:before{background:linear-gradient(90deg,#66708557,#b58a455c)}.genealogy-node.is-unknown{border-style:dashed;border-color:#66708594}.genealogy-node.is-unknown .genealogy-node__name{color:#5d6472}.genealogy-toggle{position:absolute;top:calc(100% + 7px);left:50%;z-index:2;display:grid;place-items:center;width:24px;height:24px;padding:0;border:1px solid #dbc8aa;border-radius:999px;background:#fffdf8eb;color:#7a4d31;cursor:pointer;font-size:16px;font-weight:800;line-height:1;box-shadow:0 8px 16px #50301e14;transform:translate(-50%)}.genealogy-canvas.is-compact .genealogy-tree-scroller{padding-top:92px}.genealogy-canvas.is-compact .genealogy-node{gap:1px;padding:7px 9px 6px;font-size:13px}.genealogy-canvas.is-compact .genealogy-node__name{letter-spacing:.01em}.genealogy-canvas.is-compact .genealogy-node em{margin-top:1px;padding:1px 6px;font-size:10px}.genealogy-canvas.is-compact .genealogy-node.is-female{padding:5px 7px 4px}.genealogy-canvas.is-compact .genealogy-toggle{top:calc(100% + 5px);width:20px;height:20px;font-size:14px}.person-detail{display:grid;gap:16px}.person-relationship-actions{display:grid;gap:10px;padding:12px;border:1px solid rgba(159,45,32,.12);border-radius:8px;background:#9f2d200a}.person-relationship-actions strong{color:#241710;font-size:14px}.person-relationship-actions .ant-btn{border-color:#9f2d202e;border-radius:999px;color:var(--zupu-red);font-weight:800}.person-bind-status{margin-bottom:16px;padding:10px 12px;border:1px solid rgba(181,138,69,.24);border-radius:8px;color:#7a4d31;font-size:13px;line-height:1.65;background:#b58a4514}.person-detail-drawer .ant-drawer-header{border-bottom-color:var(--zupu-line);background:linear-gradient(135deg,#9f2d201c,#b58a4517),#fffdf8f5}.person-detail-drawer .ant-drawer-body{background:linear-gradient(180deg,#fffdf8fa,#f8f0dfe6),var(--zupu-paper)}.person-record-head{display:grid;grid-template-columns:82px 1fr;gap:14px;align-items:center;padding:14px;border:1px solid rgba(223,208,184,.96);border-radius:8px;background:#fffdf8d1}.person-record-head__avatar{display:grid;width:74px;height:74px;place-items:center;overflow:hidden;border:2px solid rgba(159,45,32,.2);border-radius:8px;color:var(--zupu-red);font-size:28px;font-weight:800;background:linear-gradient(145deg,#9f2d2014,#b58a451f),#fffdf8}.person-record-head__avatar .ant-image,.person-record-head__avatar img{width:74px;height:74px;object-fit:cover}.person-record-head span{color:var(--zupu-red);font-size:12px;font-weight:800}.person-record-head h3{margin:3px 0;color:#241710;font-size:22px}.person-record-head p{margin:0;color:var(--zupu-muted);font-size:13px}.person-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.person-photos .ant-image,.person-photos img{width:100%;height:96px;object-fit:cover}.table-toolbar,.admin-summary-row{margin-bottom:16px}.admin-summary-row .ant-card{border-color:var(--zupu-line);background:#fffdf8f5;box-shadow:var(--zupu-soft-shadow)}.invite-create-form{align-items:flex-start;padding:14px;border:1px solid var(--zupu-line);border-radius:8px;background:#fffdf8e0}.invite-result-card{margin-bottom:16px;border-color:var(--zupu-line);background:#fffdf8f5}.invite-usage{min-width:130px}.invite-usage span{display:block;margin-bottom:4px;color:#34241b;font-weight:700}.ant-table-wrapper{border:1px solid var(--zupu-line);border-radius:8px;overflow:hidden;background:#fffdf8f5;box-shadow:var(--zupu-soft-shadow)}.ant-table{background:transparent}.ant-table-thead>tr>th{background:#f4ead8!important;color:#37251b!important;font-weight:800!important}.ant-table-tbody>tr>td{border-color:#eee3d1!important}.ant-table-tbody>tr:hover>td{background:#9f2d200b!important}.drawer-submit{border:0;border-radius:6px;padding:6px 14px;background:var(--zupu-red);color:#fff;cursor:pointer}.form-hint{margin-top:-4px;color:var(--zupu-muted);font-size:13px;line-height:1.6}.json-preview{max-height:260px;overflow:auto;padding:12px;border:1px solid var(--zupu-line);border-radius:8px;background:#fbf7ef;white-space:pre-wrap}.floating-review-bar{position:fixed;right:28px;bottom:28px;z-index:1001;display:flex;gap:10px;padding:12px;border:1px solid var(--zupu-line);border-radius:8px;background:#fff;box-shadow:0 12px 30px #0f172a24}.auth-page{display:grid;place-items:center;min-height:calc(100vh - 160px);padding:32px 0}.auth-card{width:min(450px,100%);overflow:hidden;border:1px solid rgba(223,208,184,.96);border-radius:8px;background:linear-gradient(180deg,#fffdf8fa,#f8f0dff5),var(--zupu-paper);box-shadow:var(--zupu-shadow)}.auth-card .ant-card-head{min-height:auto;border-bottom:1px solid var(--zupu-line);background:linear-gradient(135deg,#9f2d201f,#b58a451a),#fffdf8e6}.auth-card .ant-card-head-title{padding:22px 0}.auth-card .ant-card-body{padding:26px}.auth-card-title{display:grid;gap:6px}.auth-card-title span{color:var(--zupu-red);font-size:13px;font-weight:800}.auth-card-title strong{color:#201510;font-size:24px;line-height:1.25}.auth-card-subtitle{margin:0 0 22px;color:var(--zupu-muted);line-height:1.7}.auth-card .ant-form-item-label>label{color:#34241b;font-weight:700}.auth-card .ant-input,.auth-card .ant-input-affix-wrapper{border-radius:8px;border-color:#dcc9aa;background:#fffdf8}.auth-card .ant-btn-primary{height:42px;border-color:var(--zupu-red);border-radius:999px;background:linear-gradient(135deg,var(--zupu-red),var(--zupu-red-dark));font-weight:800;box-shadow:0 12px 24px #9f2d202e}.auth-footer{margin-top:16px;text-align:center;color:var(--zupu-muted)}.admin-layout{min-height:100vh}.admin-logo{height:56px;display:grid;place-items:center;color:#fff;font-weight:700}.admin-header{display:flex;justify-content:space-between;align-items:center;background:#fff;border-bottom:1px solid #eef0f4;font-weight:700}.file-upload-field{width:100%}.file-upload-field .ant-upload-list{margin-top:6px}.file-upload-field .ant-typography{font-size:12px}.file-preview{margin-top:8px}.file-preview--image,.file-preview--avatar{display:grid;gap:10px}.file-preview--multiple{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}.file-preview__image-card{overflow:hidden;border:1px solid #edf0f5;border-radius:8px;background:#fff}.file-preview__image-card .ant-image{display:block;width:100%}.file-preview__image-card img{width:100%;height:108px;object-fit:cover;background:#f6f7f9}.file-preview--avatar .file-preview__image-card{width:132px}.file-preview--avatar .file-preview__image-card img{height:132px;border-radius:50%;padding:8px}.file-preview__placeholder{display:grid;place-items:center;height:108px;color:var(--zupu-muted);background:#f6f7f9;font-size:12px}.file-preview__actions{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:36px;padding:0 10px;font-size:12px}.file-preview__actions span{min-width:0;overflow:hidden;color:var(--zupu-muted);text-overflow:ellipsis;white-space:nowrap}.file-preview__attachment{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #edf0f5;border-radius:8px;background:#fff}.file-preview__attachment>span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-shell .ant-btn-default:hover,.app-shell .ant-btn-link:hover{border-color:#9f2d207a!important;color:var(--zupu-red)!important}.app-shell .ant-input:focus,.app-shell .ant-input:hover,.app-shell .ant-input-affix-wrapper-focused,.app-shell .ant-input-affix-wrapper:hover{border-color:#9f2d209e!important;box-shadow:0 0 0 3px #9f2d2014!important}.v3-page{width:min(1180px,calc(100vw - 48px));margin:0 auto 56px}.v3-page-hero{padding:36px 0 22px}.v3-page-hero.compact{padding-bottom:16px}.v3-kicker{display:inline-block;margin-bottom:8px;color:var(--zupu-red);font-weight:700;letter-spacing:.08em}.v3-page-hero h1{margin:0;color:var(--zupu-ink);font-size:38px;line-height:1.18}.v3-page-hero p{max-width:760px;margin:10px 0 0;color:var(--zupu-muted);font-size:16px;line-height:1.8}.v3-article{color:#43352f;font-size:16px;line-height:2;white-space:pre-wrap}.forest-map{display:grid;place-items:center;overflow:auto;margin:0 0 24px;border:1px solid rgba(120,76,45,.18);border-radius:8px;background:linear-gradient(135deg,#fffdf8d1,#f5efe5f0),#f5efe5}.forest-map img{display:block;width:100%;height:auto;max-height:min(78vh,760px);object-fit:contain}.forest-intro{padding:22px 28px;border-left:4px solid var(--zupu-red);background:#fffbf4db}.photo-search{max-width:420px;margin-top:18px}.featured-photo{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);gap:24px;margin:10px 0 28px;padding:18px;border:1px solid rgba(120,76,45,.16);border-radius:8px;background:#fffaf2}.featured-photo-image img,.photo-card img{display:block;width:100%;height:100%;object-fit:cover}.featured-photo-image .ant-image,.photo-card .ant-image{display:block;width:100%;height:100%}.featured-photo-image{overflow:hidden;min-height:360px;border-radius:8px;background:#f0e8dc}.featured-photo-body h2,.donation-board h2,.announcement-card h2,.announcement-detail h1{margin:10px 0;color:var(--zupu-ink)}.featured-photo-body p{color:var(--zupu-muted);line-height:1.8}.photo-description{display:grid;gap:8px}.photo-description p{margin:0;color:var(--zupu-muted);line-height:1.7;white-space:pre-wrap}.photo-description.compact{max-height:104px;overflow:auto;padding-right:4px}.person-roster{display:grid;gap:8px;margin-top:16px}.person-row{display:grid;grid-template-columns:92px 86px 1fr;gap:10px;align-items:center;padding:8px 10px;border-radius:6px;background:#fff}.person-row span,.person-row em{color:var(--zupu-muted);font-style:normal;font-size:13px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.photo-card{overflow:hidden;border:1px solid rgba(120,76,45,.14);border-radius:8px;background:#fff}.photo-card img,.photo-placeholder{height:188px}.photo-card>div:last-child{padding:14px}.photo-card h3{margin:0 0 8px}.photo-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;color:#8b6a52;font-size:12px}.photo-placeholder{display:grid;place-items:center;color:var(--zupu-muted);background:#f5efe5}.donation-layout{display:grid;grid-template-columns:260px 1fr;gap:20px}.donation-events{display:grid;align-content:start;gap:10px}.donation-events button{padding:12px;border:1px solid rgba(120,76,45,.14);border-radius:8px;color:var(--zupu-ink);text-align:left;background:#fff;cursor:pointer}.donation-events button.active{border-color:#9f2d2057;background:#fff5ea}.donation-events span{display:block;margin-top:5px;color:var(--zupu-muted);font-size:12px}.donation-board{padding:22px;border:1px solid rgba(120,76,45,.16);border-radius:8px;background:#fffaf2}.donation-board header span{color:var(--zupu-red);font-weight:700}.donation-board header p{color:var(--zupu-muted);line-height:1.8}.donor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(156px,1fr));gap:8px;margin-top:18px}.donor-row{min-height:58px;padding:9px 10px;border:1px solid rgba(120,76,45,.12);border-radius:6px;background:#fff}.donor-row strong,.donor-row span,.donor-row em{display:block}.donor-row span{margin-top:2px;color:var(--zupu-red);font-weight:700}.donor-row em{overflow:hidden;color:var(--zupu-muted);font-style:normal;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.announcement-list{display:grid;gap:12px}.announcement-card{display:block;padding:18px 20px;border:1px solid rgba(120,76,45,.14);border-radius:8px;color:inherit;background:#fff}.announcement-card:hover{border-color:#9f2d2052}.announcement-card>div:first-child{display:flex;align-items:center;gap:8px;color:var(--zupu-muted);font-size:13px}.announcement-card p{display:-webkit-box;overflow:hidden;margin:0;color:var(--zupu-muted);line-height:1.7;-webkit-box-orient:vertical;-webkit-line-clamp:2}.announcement-detail{max-width:860px;margin:20px auto 0;padding:26px;border:1px solid rgba(120,76,45,.14);border-radius:8px;background:#fff}.announcement-detail>img{width:100%;max-height:360px;margin-bottom:18px;border-radius:8px;object-fit:cover}.announcement-detail>span{color:var(--zupu-red);font-weight:700}.announcement-summary{color:var(--zupu-muted);font-size:16px;line-height:1.8}.v3-pagination{margin-top:22px;text-align:right}.dynamic-form-list{margin-bottom:20px}.admin-content-preview{max-height:180px;overflow:auto;padding:12px;border:1px solid #edf0f5;border-radius:8px;color:var(--zupu-muted);line-height:1.8;white-space:pre-wrap;background:#fff}.v3-prototype-hero{position:relative;overflow:hidden;margin-top:34px;border:1px solid rgba(223,208,184,.96);border-radius:8px;background:linear-gradient(112deg,#fffdf8fa,#f8f0dff0 58%,#9f2d2021),#fffdf8;box-shadow:0 12px 34px #3e261417}.v3-prototype-hero:after{position:absolute;right:-52px;bottom:-72px;width:260px;height:260px;border:1px solid rgba(159,45,32,.16);border-radius:999px;background:repeating-linear-gradient(90deg,rgba(159,45,32,.08) 0 1px,transparent 1px 18px);content:"";opacity:.6;transform:rotate(-12deg)}.v3-prototype-hero-inner{position:relative;z-index:1;padding:34px 38px}.v3-prototype-kicker{display:inline-flex;width:fit-content;align-items:center;gap:8px;padding:5px 12px;border:1px solid rgba(159,45,32,.24);border-radius:999px;color:var(--zupu-red);background:#9f2d200f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;font-weight:800}.v3-prototype-kicker:before{width:6px;height:6px;border-radius:999px;background:currentColor;content:""}.v3-prototype-title{margin:12px 0 0;color:#241710;font-size:48px;line-height:1.12}.v3-prototype-lead{max-width:720px;margin:13px 0 0;color:#5c6374;font-size:17px;line-height:1.8}.photo-hero{display:grid;grid-template-columns:minmax(0,1fr) 358px;gap:26px;align-items:end}.search-card{display:grid;gap:12px;padding:18px;border:1px solid rgba(223,208,184,.92);border-radius:8px;background:#fffdf8bd}.photo-search{max-width:none;margin-top:0}.tag-row{display:flex;flex-wrap:wrap;gap:8px}.tag{padding:5px 10px;border-radius:999px;color:#6d5645;background:#b58a4521;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:700}.featured-photo{display:grid;grid-template-columns:minmax(0,1.12fr) 430px;gap:18px;margin-top:22px;margin-bottom:0;padding:18px;border:1px solid rgba(223,208,184,.94);border-radius:8px;background:linear-gradient(135deg,#fffdf8fa,#f8f0dff0),#fffdf8;box-shadow:0 12px 34px #3e261417}.featured-photo--image-only{grid-template-columns:1fr}.featured-photo-image{min-height:0;background:transparent}.featured-photo-image .ant-image{overflow:hidden;height:410px;border:1px solid rgba(92,53,34,.2);border-radius:8px;background:#392019}.featured-photo__caption{display:grid;gap:10px;padding:16px 4px 2px}.featured-photo__caption h2{margin:0;color:#241710;font-size:26px;line-height:1.25}.photo-meta-line{display:flex;flex-wrap:wrap;gap:8px}.photo-meta-line span,.photo-meta span{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;color:#6d5645;background:#b58a4521;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:800}.featured-photo-body{display:grid;align-content:start;gap:13px;padding:20px;border:1px solid rgba(159,45,32,.16);border-radius:8px;background:#fffdf8c7}.featured-photo-body h3{margin:0;color:#241710;font-size:22px}.people-panel__hint{margin:0;color:#687083;font-size:13px;line-height:1.7}.person-roster{gap:13px;margin-top:0}.roster-block{display:grid;gap:6px}.roster-title{color:var(--zupu-red);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:900}.person-row{grid-template-columns:72px 82px minmax(0,1fr);gap:8px;align-items:start;padding:8px 0;border-bottom:1px solid rgba(223,208,184,.76);border-radius:0;background:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;line-height:1.55}.person-row:last-child{border-bottom:0}.person-row span:first-child{color:#7a4d31;font-weight:800}.person-row strong{color:#241710;font-weight:900}.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:22px}.photo-card{display:grid;grid-template-rows:auto 1fr;overflow:hidden;border:1px solid var(--zupu-line);background:#fffdf8;box-shadow:0 12px 26px #50301e14}.photo-card-media{position:relative;overflow:hidden;height:206px;background:#efe4d2}.photo-card-media .ant-image,.photo-card-media img,.photo-placeholder{display:block;width:100%;height:100%!important}.photo-card-media img{object-fit:cover}.photo-placeholder{display:grid;place-items:center;color:#8b6a52;font-size:13px}.photo-card--group{grid-column:span 2}.photo-card--group .photo-card-media{height:252px}.photo-card-body{position:relative;z-index:1;display:grid;gap:5px;padding:14px 15px 16px;background:#fffdf8}.photo-card-body h3{margin:0;color:#241710;font-size:17px}.photo-card-body time{color:var(--zupu-red);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:800}.photo-detail-button.ant-btn{justify-self:start;min-height:30px;margin-top:6px;padding-inline:12px;color:var(--zupu-red);border-color:#9f2d2038;border-radius:999px;background:#9f2d200b;font-size:12px;font-weight:800}.photo-detail-button.ant-btn:hover,.photo-detail-button.ant-btn:focus{color:#fffdf8;border-color:var(--zupu-red);background:var(--zupu-red)}.photo-description.compact{max-height:82px;overflow:hidden;margin:0;color:#687083;font-size:13px;line-height:1.6;white-space:pre-wrap}.photo-description.compact p{margin:0}.photo-description.compact p+p{margin-top:4px}.photo-description p{color:#687083;font-size:13px;line-height:1.6}.person-summary{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.person-summary span{padding:3px 8px;border-radius:999px;color:var(--zupu-red);background:#9f2d2012;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:800}.photo-detail-modal .ant-modal-content{border:1px solid rgba(223,208,184,.95);border-radius:8px;background:linear-gradient(135deg,#fffdf8fa,#f8f0dff5),#fffdf8}.photo-detail-modal .ant-modal-header{margin-bottom:14px;background:transparent}.photo-detail-modal .ant-modal-title{color:#241710;font-size:22px}.photo-detail-layout{display:grid;grid-template-columns:minmax(0,1.25fr) 360px;gap:18px;align-items:start}.photo-detail-media{overflow:hidden;min-height:420px;border:1px solid rgba(92,53,34,.18);border-radius:8px;background:#efe4d2}.photo-detail-media .ant-image,.photo-detail-media img{display:block;width:100%}.photo-detail-media img{max-height:70vh;object-fit:contain}.photo-detail-content{display:grid;gap:14px;min-width:0;padding:16px;border:1px solid rgba(159,45,32,.14);border-radius:8px;background:#fffdf8c7}.photo-detail-people{display:grid;gap:10px;min-height:0}.photo-detail-people h3{margin:0;color:#241710;font-size:18px}.photo-detail-people-list{display:grid;max-height:360px;overflow:auto}.donation-page.donation-screen{width:min(1200px,calc(100vw - 64px));overflow:hidden;margin-top:34px;border-radius:8px;color:#fffdf8;background:linear-gradient(180deg,#30160ff5,#4e2117eb),url(/assets/family-genealogy-archive-cover-text-fixed-aPxxuVQ4.webp) center / cover;box-shadow:0 20px 56px #3e261421}.donation-screen .v3-prototype-kicker{color:#ffe9bf;border-color:#ffe9bf52;background:#fffdf814}.donation-screen .v3-prototype-title{color:#fffdf8}.donation-screen .v3-prototype-lead{color:#fffdf8c2}.donation-hero{display:grid;grid-template-columns:1fr 360px;gap:30px;padding:38px 38px 34px}.donation-hero--simple{grid-template-columns:1fr}.donation-filter-card{display:grid;gap:12px;align-self:end;padding:18px;border:1px solid rgba(255,233,191,.22);border-radius:8px;background:#fffdf814;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.donation-filter-card strong{color:#ffe9bf;font-size:15px}.donation-filter-card p{margin:0;color:#fffdf8ad;font-size:13px;line-height:1.65}.donation-filter-row{display:flex;flex-wrap:wrap;gap:8px}.donation-filter-row span{display:inline-flex;align-items:center;min-height:27px;padding:0 10px;border-radius:999px;color:#ffe9bf;background:#fffdf814;font-size:12px;font-weight:800}.donation-content{display:grid;grid-template-columns:260px minmax(0,1fr);gap:18px;padding:0 38px 38px}.event-menu{position:sticky;top:92px;align-self:start;padding:18px;border:1px solid rgba(255,233,191,.24);border-radius:8px;background:#fffdf817;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.event-menu h3{margin:0 0 12px;color:#ffe9bf;font-size:20px}.event-menu p{margin:0 0 14px;color:#fffdf8a8;font-size:13px;line-height:1.7}.event-menu-list{display:grid;gap:8px}.event-menu-item{padding:10px 11px;border:1px solid rgba(255,253,248,.12);border-radius:7px;color:#fffdf8d1;text-align:left;background:#fffdf80f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;font-weight:800;cursor:pointer}.event-menu-item strong,.event-menu-item span{display:block}.event-menu-item span{margin-top:5px;color:#fffdf89e;font-size:12px}.event-menu-item.active{color:#ffe9bf;border-color:#ffe9bf5c;background:#9f2d2038}.donation-list{min-width:0}.donation-event{scroll-margin-top:92px;padding:20px 22px 22px;border:1px solid rgba(223,208,184,.86);border-radius:8px;color:var(--zupu-ink);background:linear-gradient(135deg,#fffdf8f7,#f8f0dff0),#fffdf8;box-shadow:0 12px 34px #3e261417}.donation-event+.donation-event{margin-top:14px}.event-head{display:flex;align-items:start;justify-content:space-between;gap:18px;padding-bottom:12px;border-bottom:1px solid rgba(223,208,184,.9)}.event-head h2{margin:0 0 8px;color:#241710;font-size:24px}.event-head p{margin:0;color:#5a6476;font-size:14px;line-height:1.75}.event-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.event-meta span{display:inline-flex;align-items:center;min-height:25px;padding:0 9px;border-radius:999px;color:var(--zupu-red);background:#9f2d2012;font-size:12px;font-weight:800}.dense-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 9px;color:#78685f;font-size:12px;font-weight:800}.dense-toolbar span:last-child{color:var(--zupu-red)}.donor-compact-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;border:1px solid rgba(223,208,184,.8);border-radius:8px;background:#fffdf89e}.donor-chip{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center;min-height:38px;padding:7px 10px;border-right:1px solid rgba(223,208,184,.7);border-bottom:1px solid rgba(223,208,184,.7);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px}.donor-chip:nth-child(4n){border-right:0}.donor-chip strong{overflow:hidden;color:#2f2119;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.donor-chip span{color:var(--zupu-red);font-weight:900}.announcement-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px;margin-top:22px}.announcement-layout--single{grid-template-columns:1fr}.pinned{display:grid;grid-template-columns:310px minmax(0,1fr);gap:22px;padding:18px;border:1px solid rgba(159,45,32,.22);border-radius:8px;color:inherit;background:linear-gradient(135deg,#9f2d2014,#b58a451f),#fffdf8}.pinned img{width:100%;height:206px;border-radius:7px;object-fit:cover}.pinned--no-cover{grid-template-columns:1fr}.pinned h2{margin:8px 0 10px;color:#241710;font-size:28px}.pinned p{margin:0;color:#4d5668;line-height:1.8}.date-chip{display:inline-flex;width:fit-content;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;color:var(--zupu-red);background:#9f2d2014;font-size:12px;font-weight:800}.notice-list{margin-top:14px;overflow:hidden;border:1px solid var(--zupu-line);border-radius:8px;background:#fffdf8}.notice-row{display:grid;grid-template-columns:104px minmax(0,1fr) auto;gap:18px;align-items:center;padding:17px 18px;border-bottom:1px solid rgba(223,208,184,.8);color:inherit}.notice-row:last-child{border-bottom:0}.notice-row:hover{background:#9f2d2009}.notice-date{color:var(--zupu-red);font-family:Georgia,Times New Roman,serif;font-size:21px;font-weight:800}.notice-date span{display:block;color:var(--zupu-muted);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;font-weight:800}.notice-row h3{margin:0 0 6px;color:#241710;font-size:18px}.notice-row p{display:-webkit-box;overflow:hidden;margin:0;color:#687083;font-size:13px;line-height:1.62;-webkit-box-orient:vertical;-webkit-line-clamp:2}.arrow{display:grid;width:36px;height:36px;place-items:center;border:1px solid rgba(159,45,32,.18);border-radius:999px;color:var(--zupu-red);font-weight:900}.side-box{padding:22px;border:1px solid var(--zupu-line);border-radius:8px;background:linear-gradient(135deg,#fffdf8fa,#f8f0dff0),#fffdf8;box-shadow:0 12px 34px #3e261417}.side-box h3{margin:0 0 12px;color:#241710;font-size:20px}.side-box ul{display:grid;gap:10px;margin:0;padding:0;list-style:none;color:#5f6677;font-size:14px;line-height:1.6}@media(max-width:720px){.topbar{padding:0 16px;min-height:64px}.topbar-actions{gap:6px;overflow-x:auto;max-width:calc(100vw - 92px)}.topbar-actions .ant-btn{padding-inline:10px}.public-nav-link{min-height:30px;padding:0 10px;font-size:13px;white-space:nowrap}.app-logo-text{display:none}.page-header{display:block}.page-header h1{font-size:24px}.home-hero,.home-hero__shade{min-height:360px}.home-hero__shade,.home-section{padding:24px}.home-hero h1{font-size:38px}.home-section--intro,.home-split,.heritage-card-grid{grid-template-columns:1fr}.heritage-card{min-height:220px}.motto-rule-grid{grid-template-columns:1fr}.motto-rule{grid-template-columns:38px 1fr}.motto-rule__mark{width:34px;height:22px;font-size:12px}.motto-summary{padding:16px}.generation-words span{width:46px;height:54px;font-size:22px}.genealogy-hero{display:grid;padding:24px}.genealogy-hero h1{font-size:28px}.genealogy-hero__stats{width:100%}.genealogy-hero__stats span{min-width:0;flex:1}.genealogy-workbench{display:block}.person-search-panel{position:static;width:100%;max-height:none;margin-bottom:10px;padding:16px}.genealogy-view-switch{position:static;width:100%;max-width:none;margin-bottom:10px;border-radius:8px;transform:none}.genealogy-view-switch button{flex:1}.genealogy-search-toggle{position:static;width:100%;margin-bottom:10px;border-radius:8px}.genealogy-toolbar{position:static;justify-content:space-between;width:100%;margin-bottom:10px;border-radius:8px;box-sizing:border-box}.genealogy-canvas{height:clamp(480px,68vh,560px);min-height:480px}.genealogy-tree-scroller{min-height:0;padding:76px 24px 24px}.genealogy-canvas__note{position:absolute;top:16px;left:16px;max-width:calc(100% - 32px);margin:0}.genealogy-node{width:100%;min-width:0;padding:10px 11px 9px}.person-record-head{grid-template-columns:68px 1fr}.person-record-head__avatar,.person-record-head__avatar .ant-image,.person-record-head__avatar img{width:62px;height:62px}.auth-page{min-height:calc(100vh - 128px);padding:20px 0}.auth-card .ant-card-body{padding:22px}.v3-page{width:min(100% - 32px,1180px)}.v3-page-hero h1{font-size:30px}.v3-prototype-hero{margin-top:18px}.v3-prototype-hero-inner{padding:24px}.v3-prototype-title{font-size:34px}.v3-prototype-lead{font-size:15px}.photo-hero,.donation-hero,.donation-content,.announcement-layout,.pinned{grid-template-columns:1fr}.donation-page.donation-screen{width:min(100% - 32px,1180px)}.donation-hero,.donation-content{padding:24px}.event-menu{position:static}.donor-compact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.donor-chip:nth-child(4n){border-right:1px solid rgba(223,208,184,.7)}.donor-chip:nth-child(2n){border-right:0}.photo-grid{grid-template-columns:1fr}.photo-card--group{grid-column:auto}.featured-photo,.donation-layout,.photo-detail-layout{grid-template-columns:1fr}.photo-detail-media{min-height:260px}.featured-photo-image,.featured-photo-image .ant-image{min-height:240px;height:auto}.notice-row{grid-template-columns:72px minmax(0,1fr)}.notice-row .arrow{display:none}.person-row{grid-template-columns:1fr}}
