:root{color-scheme:light;--ink:#1c2722;--muted:#69746f;--line:#d9dfdb;--line-dark:#bac5be;--canvas:#f3f5f2;--paper:#fff;--green:#18382b;--green-2:#315d45;--red:#9e3c34;--gold:#a57b39;--gold-soft:#f6f0e5;--blue:#35657b;--shadow:0 10px 28px rgba(25,42,32,.08)}
*{box-sizing:border-box}html{min-width:320px;background:var(--canvas)}body{margin:0;color:var(--ink);background:var(--canvas);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}button,input,select,textarea{font:inherit}button,select{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.lucide{width:18px;height:18px;stroke-width:1.8}
.boot{position:fixed;z-index:200;inset:0;display:grid;place-content:center;justify-items:center;gap:13px;color:var(--green);background:var(--canvas);font-weight:700}.boot img{object-fit:contain}
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(460px,1.18fr) minmax(420px,.82fr);background:#fff}.auth-image{position:relative;min-height:100vh;background:var(--green) url("https://zongmai.art/assets/home-hero-genealogy-memoir-v1.webp") center/cover no-repeat}.auth-image:after{content:"";position:absolute;inset:0;background:rgba(16,35,26,.47)}.auth-image>div{position:absolute;z-index:1;left:clamp(34px,6vw,84px);right:42px;bottom:9vh;color:#fff}.auth-image p{margin:14px 0 9px;color:#f0d69e;font-size:17px;font-weight:800}.auth-image h1{max-width:620px;margin:0;font-family:"Songti SC","STSong",serif;font-size:46px;line-height:1.25}.auth-main{display:grid;align-items:center;padding:48px clamp(28px,5vw,72px)}.auth-inner{width:min(420px,100%);margin:auto}.auth-inner h2{margin:0 0 8px;font-size:28px}.auth-inner>p{margin:0 0 26px;color:var(--muted);font-size:14px}.eyebrow{display:block;margin-bottom:7px;color:var(--gold);font-size:11px;font-weight:850;letter-spacing:0}.segmented{display:grid;grid-template-columns:1fr 1fr;height:42px;padding:3px;border:1px solid var(--line);border-radius:5px;background:var(--canvas)}.segmented button{border:0;border-radius:3px;color:var(--muted);background:transparent;font-weight:750}.segmented button.is-active{color:var(--green);background:#fff;box-shadow:0 1px 4px rgba(25,40,31,.1)}.back-link{display:inline-block;margin-top:20px;color:var(--muted);font-size:13px}
.form-stack{display:grid;gap:17px;margin-top:22px}.form-stack label,.form-grid label{display:grid;gap:7px;color:#3d4842;font-size:13px;font-weight:700}input,select,textarea{width:100%;min-height:42px;padding:10px 12px;border:1px solid var(--line-dark);border-radius:4px;outline:0;color:var(--ink);background:#fff}textarea{resize:vertical;line-height:1.65}input:focus,select:focus,textarea:focus{border-color:var(--green-2);box-shadow:0 0 0 3px rgba(49,93,69,.11)}.form-message{min-height:19px;margin:0;color:var(--red);font-size:12px}.btn{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;border:1px solid transparent;border-radius:5px;font-weight:750}.btn.primary{color:#fff;background:var(--green)}.btn.primary:hover{background:var(--green-2)}.btn.secondary{color:var(--green);border-color:var(--line-dark);background:#fff}.btn.secondary:hover{border-color:var(--green)}.btn.wide{width:100%}.icon-btn{width:38px;height:38px;display:grid;place-items:center;padding:0;border:1px solid var(--line);border-radius:5px;color:var(--ink);background:#fff}
.shell{min-height:100vh}.topbar{position:fixed;z-index:50;top:0;left:0;right:0;height:66px;display:grid;grid-template-columns:248px 1fr auto;align-items:center;border-bottom:1px solid var(--line);background:rgba(255,255,255,.97)}.brand{height:100%;display:flex;align-items:center;gap:10px;padding:0 21px;border-right:1px solid var(--line)}.brand img{width:34px;height:34px;object-fit:contain}.brand span{display:grid}.brand strong{font-size:15px}.brand small{color:var(--muted);font-size:10px}.top-context{padding:0 26px;color:var(--muted);font-size:13px;font-weight:700}.user-chip{display:flex;align-items:center;gap:9px;padding-right:22px}.user-chip>span{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--red);font-size:13px;font-weight:800}.user-chip b{max-width:120px;overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.mobile-menu{display:none}
.sidebar{position:fixed;z-index:40;top:66px;bottom:0;left:0;width:248px;display:flex;flex-direction:column;padding:20px 14px 16px;border-right:1px solid var(--line);background:#fff}.sidebar nav{display:grid;gap:4px}.nav-item{min-height:44px;display:flex;align-items:center;gap:12px;padding:0 12px;border:0;border-radius:5px;color:#4e5953;background:transparent;font-size:14px;font-weight:700;text-align:left}.nav-item .lucide{color:#78847d}.nav-item:hover{background:#f3f6f3}.nav-item.is-active{color:#fff;background:var(--green)}.nav-item.is-active .lucide{color:#efd296}.sidebar-modules{display:grid;gap:4px;margin-top:25px;padding-top:18px;border-top:1px solid var(--line)}.sidebar-modules>span{padding:0 10px 7px;color:var(--muted);font-size:10px;font-weight:800}.sidebar-modules a{min-height:38px;display:flex;align-items:center;gap:10px;padding:0 10px;color:#56615b;font-size:12px}.sidebar-modules a.disabled{opacity:.5;cursor:default}.sidebar-modules .lucide{width:16px}.logout{min-height:40px;display:flex;align-items:center;gap:9px;margin-top:auto;padding:0 10px;border:0;border-top:1px solid var(--line);color:var(--muted);background:transparent;font-size:12px}
.workspace{min-height:100vh;margin-left:248px;padding-top:66px}.view{width:min(1180px,100%);margin:0 auto;padding:34px 38px 68px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:26px}.page-heading h1{margin:0;font-family:"Songti SC","STSong",serif;font-size:33px;line-height:1.25}.page-heading p{margin:7px 0 0;color:var(--muted);font-size:13px}.identity-band{min-height:150px;display:grid;grid-template-columns:auto 1fr minmax(190px,260px);align-items:center;gap:20px;margin-bottom:34px;padding:26px 30px;border:1px solid var(--line);border-radius:6px;background:#fff;box-shadow:var(--shadow)}.avatar{width:72px;height:72px;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--green);font-family:"Songti SC",serif;font-size:28px}.identity-band>div:nth-child(2)>span{color:var(--gold);font-size:10px;font-weight:800}.identity-band h2{margin:5px 0;font-size:24px}.identity-band p{margin:0;color:var(--muted);font-size:12px}.completion{display:grid;justify-items:end}.completion strong{color:var(--green);font-size:30px}.completion>span{margin:3px 0 11px;color:var(--muted);font-size:11px}.completion>div{width:100%;height:6px;overflow:hidden;border-radius:3px;background:#e5eae6}.completion i{display:block;width:0;height:100%;background:var(--gold);transition:width .25s}.section-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:26px 0 14px}.section-head h2{margin:0;font-size:18px}.section-head p{margin:5px 0 0;color:var(--muted);font-size:12px}.module-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:14px}.module-item{min-height:188px;display:flex;flex-direction:column;padding:20px;border:1px solid var(--line);border-radius:6px;background:#fff}.module-head{display:flex;align-items:center;justify-content:space-between}.module-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:5px;color:var(--green);background:#eaf1eb}.module-state{padding:4px 7px;border-radius:3px;color:var(--muted);background:#f1f3f1;font-size:10px;font-weight:750}.module-state.active{color:var(--green-2);background:#e7f0e9}.module-item h3{margin:17px 0 5px;font-size:16px}.module-item p{margin:0;color:var(--muted);font-size:11px;line-height:1.65}.module-item a{display:inline-flex;align-items:center;gap:5px;margin-top:auto;color:var(--green-2);font-size:11px;font-weight:750}.security-strip{display:grid;grid-template-columns:repeat(3,1fr);margin-top:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.security-strip>div{display:flex;align-items:center;gap:13px;padding:20px}.security-strip>div+div{border-left:1px solid var(--line)}.security-strip .lucide{color:var(--gold)}.security-strip span{display:grid}.security-strip strong{font-size:12px}.security-strip small{margin-top:3px;color:var(--muted);font-size:10px}
.sheet{padding:26px 28px;border:1px solid var(--line);border-radius:6px;background:#fff;box-shadow:0 4px 16px rgba(24,42,31,.04)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 22px}.span-2{grid-column:1/-1}.form-section{padding-top:8px;border-bottom:1px solid var(--line)}.form-section:first-child{padding-top:0}.form-section h2{margin:0 0 5px;font-size:17px}.form-section p{margin:0 0 15px;color:var(--muted);font-size:11px}.check-label{display:flex!important;align-items:center;align-self:end;min-height:42px}.check-label input,.preference-form input,.scope-field input{width:17px;min-height:17px;margin:0}.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:20px;padding-top:8px}.form-actions .form-message{margin-right:auto}
.address-list,.consent-list{display:grid;gap:10px}.address-row{display:grid;grid-template-columns:46px 1fr auto;align-items:center;gap:16px;padding:18px 20px;border:1px solid var(--line);border-radius:6px;background:#fff}.address-row>.lucide{width:24px;height:24px;color:var(--gold)}.address-row h3{margin:0 0 5px;font-size:14px}.address-row p{margin:0;color:var(--muted);font-size:11px}.address-tags{display:flex;gap:6px;margin-top:8px}.tag{padding:3px 6px;border-radius:3px;color:var(--green-2);background:#eaf1eb;font-size:9px;font-weight:800}.row-actions{display:flex;gap:6px}.row-actions button{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line);border-radius:4px;color:var(--muted);background:#fff}.row-actions .danger{color:var(--red)}.empty{min-height:280px;display:grid;place-content:center;justify-items:center;padding:38px;border:1px dashed var(--line-dark);border-radius:6px;color:var(--muted);text-align:center}.empty>.lucide{width:42px;height:42px;color:var(--gold)}.empty h2{margin:14px 0 5px;color:var(--ink);font-size:18px}.empty p{max-width:390px;margin:0;font-size:12px;line-height:1.7}
.privacy-default{display:flex;align-items:center;justify-content:space-between;gap:30px}.privacy-default h2{margin:0 0 5px;font-size:17px}.privacy-default p{margin:0;color:var(--muted);font-size:11px}.privacy-default select{width:180px}.consent-row{display:grid;grid-template-columns:1fr auto;gap:16px;padding:18px 20px;border:1px solid var(--line);border-radius:6px;background:#fff}.consent-row h3{margin:0 0 5px;font-size:14px}.consent-row p{margin:0;color:var(--muted);font-size:11px;line-height:1.6}.consent-row button{align-self:center;border:0;color:var(--red);background:transparent;font-size:11px;font-weight:700}.preference-form{display:grid;gap:0}.preference-form fieldset,.scope-field{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:13px;margin:0;padding:22px 0;border:0;border-bottom:1px solid var(--line)}.preference-form legend,.scope-field legend{padding:0 0 14px;font-size:15px;font-weight:800}.preference-form fieldset>label,.scope-field label{display:flex;align-items:center;gap:9px;font-size:12px}.time-row{grid-column:1/-1;display:flex;gap:14px}.time-row label{display:grid!important;gap:6px!important}.time-row input{width:140px}.preference-form .form-actions{padding-top:20px}
.dialog{width:min(680px,calc(100% - 28px));max-height:calc(100vh - 36px);padding:0;overflow:auto;border:0;border-radius:6px;background:#fff;box-shadow:0 24px 70px rgba(15,28,19,.28)}.dialog.small{width:min(520px,calc(100% - 28px))}.dialog::backdrop{background:rgba(22,31,26,.56);backdrop-filter:blur(2px)}.dialog form{margin:0}.dialog-head{position:sticky;z-index:2;top:0;display:flex;align-items:center;justify-content:space-between;padding:19px 22px;border-bottom:1px solid var(--line);background:#fff}.dialog-head h2{margin:0;font-size:19px}.dialog-body{padding:22px}.dialog-actions{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:9px;padding:13px 22px;border-top:1px solid var(--line);background:#fff}.scope-field{grid-template-columns:1fr 1fr;padding:0;border:0}.toast{position:fixed;z-index:210;left:50%;bottom:25px;max-width:min(460px,calc(100% - 30px));padding:11px 15px;border-radius:5px;color:#fff;background:#26322c;box-shadow:var(--shadow);font-size:12px;opacity:0;pointer-events:none;transform:translate(-50%,14px);transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:var(--red)}
@media(max-width:1000px){.module-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}.security-strip{grid-template-columns:1fr}.security-strip>div+div{border-left:0;border-top:1px solid var(--line)}}
@media(max-width:780px){.auth{grid-template-columns:1fr}.auth-image{min-height:215px}.auth-image>div{left:22px;bottom:24px}.auth-image h1{font-size:29px}.auth-main{padding:32px 22px 50px}.topbar{height:58px;grid-template-columns:auto auto 1fr auto}.mobile-menu{display:grid;margin-left:8px}.brand{padding:0 8px;border:0}.brand img{width:30px;height:30px}.brand small,.top-context,.user-chip b{display:none}.user-chip{padding-right:10px}.sidebar{top:58px;width:min(280px,84vw);box-shadow:14px 0 35px rgba(20,30,24,.2);transform:translateX(-105%);transition:transform .2s}.sidebar.open{transform:translateX(0)}.workspace{margin-left:0;padding-top:58px}.view{padding:24px 15px 48px}.page-heading{align-items:flex-start}.page-heading h1{font-size:28px}.identity-band{grid-template-columns:auto 1fr;padding:20px}.completion{grid-column:1/-1;justify-items:start;width:100%}.module-grid{grid-template-columns:1fr}.security-strip{margin-top:20px}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.sheet{padding:20px 16px}.form-section{grid-column:1}.form-actions{grid-column:1;flex-wrap:wrap}.address-row{grid-template-columns:32px 1fr}.row-actions{grid-column:2}.privacy-default{align-items:flex-start;flex-direction:column}.privacy-default select{width:100%}.preference-form fieldset{grid-template-columns:1fr}.time-row{grid-column:auto}.dialog-body.form-grid{grid-template-columns:1fr}.dialog-body .span-2{grid-column:auto}}
@media(max-width:430px){.page-heading{display:grid}.page-heading .btn{width:100%}.identity-band{gap:13px}.avatar{width:58px;height:58px;font-size:23px}.identity-band h2{font-size:20px}.time-row{display:grid}.time-row input{width:100%}}
