:root{--ink:#1b3528;--forest:#194c35;--forest2:#2e6b4e;--pale:#f5f2ea;--paper:#fffdf8;--line:#e2e4da;--muted:#718177;--gold:#ba9350;--shadow:0 18px 55px rgba(26,58,37,.10);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--pale)}
*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--forest2)}button:disabled{opacity:.52;cursor:not-allowed}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.03em}p{line-height:1.7}h1{font-size:38px}h2{font-size:26px}h3{font-size:17px}small,.small-text{font-size:12px}.muted{color:var(--muted)}.center{text-align:center}.eyebrow{color:var(--gold);font-size:12px;font-weight:800;letter-spacing:.17em;text-transform:uppercase;margin-bottom:8px}
.primary,.secondary,.outline{border-radius:10px;border:1px solid transparent;padding:11px 18px;font-size:14px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;white-space:nowrap;transition:.18s ease}
.primary{background:var(--forest);color:#fff;box-shadow:0 7px 17px rgba(26,80,53,.16)}.primary:hover{background:#266844;transform:translateY(-1px)}.secondary{background:#eef2e9;color:var(--forest)}.secondary:hover{background:#e2ecdf}.outline{background:#fff;border-color:#b7c9ba;color:var(--forest)}.outline:hover{background:#f4faf4}.small{padding:9px 14px}.wide{width:100%}.text-button{border:0;background:none;color:var(--forest);padding:8px 2px;font-weight:700}
input,select,textarea{border:1px solid #d9e0d6;background:#fff;border-radius:10px;padding:12px 13px;color:var(--ink);outline:none;width:100%;transition:border .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:#6f9b77;box-shadow:0 0 0 3px rgba(69,129,81,.12)}textarea{resize:vertical;line-height:1.65}label{display:grid;gap:7px;font-size:13px;font-weight:700;color:#46594b}label small{font-weight:400;color:var(--muted)}
.loading-screen{min-height:100vh;display:grid;place-content:center;text-align:center;gap:15px}.brand-seal{display:grid;place-items:center;width:42px;height:42px;background:var(--forest);color:#e9d5a6;border-radius:10px;font-family:serif;font-size:25px;font-weight:700;box-shadow:0 0 0 3px rgba(223,198,137,.28)}.loading-screen .brand-seal{margin:auto;width:70px;height:70px;font-size:40px}.loading-screen p{color:var(--muted)}
.welcome{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(430px,.95fr);background:var(--paper)}.welcome-art{position:relative;overflow:hidden;background:radial-gradient(circle at 15% 15%,#486c4e 0,transparent 26%),linear-gradient(138deg,#173e2d 0%,#173b2e 52%,#0e2b23 100%);color:#f4f1e6;padding:46px min(6vw,94px);display:flex;flex-direction:column}.welcome-art:before{content:"";position:absolute;width:700px;height:700px;right:-210px;bottom:-350px;border:1px solid #d5c79a2c;border-radius:50%;box-shadow:0 0 0 60px #d5c79a08,0 0 0 120px #d5c79a0a,0 0 0 180px #d5c79a08}.welcome-art:after{content:"";position:absolute;width:360px;height:360px;right:5%;top:17%;opacity:.24;background:repeating-radial-gradient(circle at 50% 50%,transparent 0 34px,#e7daa4 35px 36px,transparent 37px 68px);border-radius:50%}.welcome-brand{display:flex;align-items:center;gap:13px;position:relative;z-index:1}.welcome-brand span{font-family:Georgia,"Songti SC",serif;font-size:21px;font-weight:700;letter-spacing:.1em}.welcome-brand small{display:block;color:#c7d2bd;letter-spacing:.2em;font:9px system-ui;margin-top:2px}.welcome-copy{position:relative;z-index:1;margin:auto 0;max-width:650px}.welcome-copy h1{font-family:Georgia,"Songti SC",serif;font-size:clamp(42px,5vw,76px);line-height:1.22;font-weight:600;letter-spacing:.04em;margin:18px 0 26px}.welcome-copy h1 em{color:#e6c88b;font-style:normal}.welcome-copy>p:not(.eyebrow){font-size:17px;color:#d4dfd2;max-width:390px}.welcome-points{display:flex;gap:8px;flex-wrap:wrap;margin-top:40px}.welcome-points span{font-size:12px;border:1px solid #d1d6ba55;border-radius:100px;padding:8px 13px;color:#e5e7d4}.ornament{position:relative;z-index:1;display:flex;align-items:center;gap:13px;color:#c5b98e;font-family:serif;font-size:15px}.ornament i{height:1px;width:48px;background:#a8ad8769}.welcome-form{display:flex;align-items:center;justify-content:center;flex-direction:column;padding:50px 28px;background:#f8f7f2}.auth-card{width:min(100%,430px);background:#fff;border:1px solid #e8e9df;border-radius:22px;padding:36px;box-shadow:var(--shadow)}.auth-kicker{display:inline-block;color:var(--forest);background:#edf3e9;border-radius:100px;padding:5px 11px;font-size:11px;font-weight:800;margin-bottom:18px}.auth-card h2{font-family:Georgia,"Songti SC",serif;font-size:28px}.auth-card>p{color:var(--muted);font-size:14px}.auth-card form{display:grid;gap:16px;margin-top:18px}.auth-card form button{margin-top:5px}.wechat-button{width:100%;border:0;background:#2f9a5a;color:#fff;padding:14px;border-radius:10px;font-weight:800;margin-top:20px}.divider{display:flex;align-items:center;gap:12px;margin:23px 0 14px;color:#95a198;font-size:12px}.divider:before,.divider:after{content:"";height:1px;background:var(--line);flex:1}.auth-switch{text-align:center;margin:19px 0 0!important}.auth-switch a{font-weight:700}.welcome-footer{font-size:12px;color:#8f9b91;margin:27px 0 0}
.auth-card [hidden]{display:none!important}.wechat-entry{text-align:center;margin-top:22px}.wechat-caption{font-size:18px;font-weight:800;color:var(--forest);margin-bottom:9px}.wechat-qr-slot{position:relative;width:220px;max-width:100%;aspect-ratio:1;margin:12px auto}.wechat-qr-slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border-radius:12px}.wechat-qr-placeholder{width:100%;height:100%;display:grid;place-items:center;border:1px solid #dce5d9;border-radius:12px;background:#f5f8f3;color:var(--muted);font-size:13px}.wechat-status{min-height:23px;color:#496b54;font-size:13px;margin:10px 0}.wechat-entry .wechat-button{margin-top:3px}.wechat-note{text-align:left;color:var(--muted);font-size:12px;line-height:1.7;margin:16px 0 0}.email-toggle{display:block;width:100%;text-align:center;margin:14px 0 0}
.empty-home{min-height:100vh;background:#f7f6f0}.empty-home header{display:flex;align-items:center;gap:12px;padding:25px 5vw}.empty-home header .text-button{margin-left:auto}.empty-home main{max-width:600px;margin:14vh auto;text-align:center;padding:30px}.empty-home h1{font-family:Georgia,"Songti SC",serif}.empty-icon{width:76px;height:76px;margin:0 auto 20px;display:grid;place-items:center;border-radius:19px;background:#e7eee6;color:var(--forest);font:40px serif}.empty-home main>p:not(.eyebrow){color:var(--muted)}.empty-home .primary{margin-top:14px}
.app-shell{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}.sidebar{background:#173e2d;color:#e6eee5;padding:25px 15px 18px;display:flex;flex-direction:column;min-height:100vh}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:2px 12px 28px}.sidebar-brand strong{font-family:Georgia,"Songti SC",serif;font-size:19px;letter-spacing:.08em}.sidebar-brand small{display:block;font-size:9px;letter-spacing:.18em;color:#a7bba7}.project-switch{position:relative;background:#ffffff14;border:1px solid #ffffff1a;border-radius:13px;margin:0 4px 24px;padding:11px 38px 11px 13px}.project-switch span{display:block;color:#a8c4ad;font-size:10px;margin-bottom:3px}.project-switch select{width:100%;background:transparent;color:white;border:0;box-shadow:none;padding:2px 0;font-weight:700;font-size:14px;appearance:none}.project-switch select option{color:#203b2a}.project-switch button{position:absolute;right:9px;bottom:9px;border:0;background:#ffffff23;color:white;border-radius:7px;width:26px;height:26px;font-size:18px}.nav-list{display:grid;gap:4px}.nav-list button{display:flex;align-items:center;gap:13px;width:100%;padding:11px 15px;border:0;border-radius:9px;background:transparent;color:#c5d5c9;text-align:left;font-size:14px;font-weight:600}.nav-list button:hover{background:#ffffff14;color:#fff}.nav-list button.active{background:#f0eadb;color:var(--forest);box-shadow:0 7px 17px #0002}.nav-icon{font-family:serif;font-size:20px;width:22px;text-align:center}.sidebar-bottom{margin-top:auto;padding:20px 7px 0}.privacy-note{font-size:11px;color:#b9cbbd;padding:0 8px 17px;border-bottom:1px solid #ffffff24}.privacy-note span{color:#c4dca9}.account-button{display:flex;align-items:center;text-align:left;gap:10px;width:100%;border:0;background:none;color:#fff;margin-top:17px;padding:4px}.account-button img,.avatar{width:36px;height:36px;border-radius:50%;background:#dfebd7;color:#2c6648;display:grid;place-items:center;object-fit:cover;font-family:serif;font-size:17px;font-weight:700;flex:none}.account-button small{display:block;color:#b6cbb9;margin-top:2px}.sidebar-bottom>.text-button{color:#b2c5b7;font-size:12px;margin:12px 0 0 3px}
.main{min-width:0;background:#f7f8f3}.topbar{height:100px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:19px 35px}.breadcrumb{font-size:11px;color:#8a9c8d}.topbar h1{font-family:Georgia,"Songti SC",serif;font-size:28px;margin:3px 0 0}.content{padding:27px 34px;max-width:1800px;margin:auto}.page-loading{padding:80px;text-align:center;color:var(--muted)}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:25px}.section-heading h2,.tree-toolbar h2{font-family:Georgia,"Songti SC",serif;font-size:27px;margin-bottom:8px}.section-heading p:not(.eyebrow),.tree-toolbar p:not(.eyebrow){font-size:14px;color:var(--muted);margin-bottom:0}
.tree-toolbar{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:18px}.tree-tools{display:flex;align-items:center;gap:9px}.tree-tools .secondary{white-space:nowrap}.search-wrap{position:relative;width:240px}.search-wrap input,.list-search input{background:#fff;padding-left:16px}.search-results{position:absolute;z-index:8;top:calc(100% + 7px);width:100%;max-height:280px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:6px}.search-results[hidden]{display:none}.search-results button{width:100%;border:0;background:#fff;text-align:left;padding:9px;border-radius:6px;color:var(--ink)}.search-results button:hover{background:#edf3e9}.search-results small{display:block;color:var(--muted)}.search-results>span{display:block;padding:14px;color:var(--muted);font-size:13px}
.tree-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-4px 0 16px;padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--muted);font-size:13px}.tree-pager>div{display:flex;gap:8px}.tree-pager .secondary{padding:7px 11px}
.tree-layout{display:grid;grid-template-columns:minmax(0,1fr) 294px;gap:17px;min-height:620px}.canvas-wrap{position:relative;background:radial-gradient(circle,#e3e9df 1px,transparent 1px) 0 0/20px 20px,#fcfdfa;border:1px solid var(--line);border-radius:17px;overflow:hidden;min-height:620px}.canvas-wrap svg{display:block;width:100%;height:100%;min-height:620px;touch-action:none;cursor:grab}.canvas-wrap svg:active{cursor:grabbing}.canvas-controls{position:absolute;right:17px;top:17px;z-index:2;display:grid;gap:4px;background:white;border-radius:10px;padding:5px;box-shadow:0 6px 20px #1b3b2318}.canvas-controls button{border:0;background:white;width:30px;height:30px;color:var(--forest);font-size:20px;border-radius:6px}.canvas-controls button:hover{background:#edf4ed}.canvas-hint{position:absolute;left:17px;bottom:15px;background:#fffffff2;border:1px solid var(--line);border-radius:100px;padding:7px 13px;font-size:11px;color:#7b8b7f}.edge{fill:none;stroke:#96b39c;stroke-width:2.1}.edge.partner{stroke:#bfa36f;stroke-dasharray:5 4}.node{cursor:pointer}.node rect{fill:white;stroke:#dce7dd;stroke-width:1.4;filter:drop-shadow(0 5px 10px #28443120)}.node:hover rect,.node.focus rect{stroke:#3b8658;stroke-width:2.5}.node.focus rect{fill:#f1f8f0}.node circle{fill:#e3eee1}.node.focus circle{fill:#cfe5d2}.node text{pointer-events:none;fill:#25462f}.node-initial{font:700 15px serif}.node-name{font:700 16px "PingFang SC",sans-serif}.node-sub{font:12px "PingFang SC",sans-serif;fill:#809087!important}
.person-panel{background:#fff;border:1px solid var(--line);border-radius:17px;padding:25px 22px;box-shadow:0 7px 30px #24433008;min-width:0}.panel-top{display:flex;justify-content:space-between;align-items:center}.status-dot{color:#6c9677;font-size:11px}.person-avatar{width:62px;height:62px;display:grid;place-items:center;margin:19px 0 14px;background:#e4eee1;border-radius:17px;color:var(--forest);font:31px Georgia,serif}.person-panel h2{font-family:Georgia,"Songti SC",serif;font-size:26px;margin-bottom:4px}.alias{color:var(--muted);font-size:13px}.fact-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:22px 0}.fact-grid>div{background:#f6f8f4;padding:11px;border-radius:9px}.fact-grid small{display:block;color:#88998b;margin-bottom:3px}.fact-grid strong{font-size:13px}.panel-section{border-top:1px solid var(--line);padding:16px 0 4px}.panel-section h3{font-size:13px;margin-bottom:10px}.panel-section p{font-size:13px;color:#5c7060;white-space:pre-wrap}.relation-list{display:flex;gap:7px;flex-wrap:wrap}.relation-pill{border:1px solid #d9e6d9;background:#f7faf6;border-radius:7px;color:#2e6645;padding:5px 8px;font-size:12px}.relation-pill small{color:#8a9d89;margin-right:5px}.panel-actions{display:grid;gap:8px;margin-top:20px}.panel-tip{color:#9aa69b;font-size:11px;text-align:center;margin-top:25px}.blank-tree{display:grid;place-content:center;min-height:620px;text-align:center}.blank-tree p{color:var(--muted)}
.list-search{max-width:500px;margin-bottom:15px}.people-list,.team-list,.editions-list{display:grid;gap:9px}.person-row,.member-row{display:flex;align-items:center;gap:13px;padding:14px 17px;border:1px solid var(--line);border-radius:11px;background:#fff;text-align:left}.person-row:hover{border-color:#a8c8ac;background:#fbfefa}.person-row>span:nth-child(2),.member-row>div{flex:1}.person-row strong,.member-row strong{display:block;font-size:14px}.person-row small,.member-row small{display:block;color:var(--muted);margin-top:4px}.person-row .arrow{margin-left:auto;color:#7ca084}.blank-list{border:1px dashed #c8d4c5;padding:38px;text-align:center;color:var(--muted);background:#fff;border-radius:13px}.people-list+.secondary{margin-top:16px}
.writing-layout{display:grid;grid-template-columns:245px minmax(0,1fr);gap:17px}.chapter-list,.chapter-editor,.team-help,.billing-card,.orders,.data-export{background:#fff;border:1px solid var(--line);border-radius:15px}.chapter-list{padding:18px 12px}.chapter-list h3{padding:0 10px;font-size:14px}.chapter-list button{display:flex;width:100%;align-items:center;gap:10px;background:none;border:0;border-radius:8px;padding:11px 9px;text-align:left;color:#425c48;font-size:13px}.chapter-list button:hover,.chapter-list button.active{background:#edf5eb;color:var(--forest)}.chapter-list button>span:last-child{flex:1;font-weight:700}.chapter-num{color:#a3b2a2;font-size:11px}.chapter-list small{display:block;color:#87998a;font-weight:400;margin-top:3px}.chapter-list>p{padding:10px;font-size:11px}.chapter-editor{padding:25px;min-height:580px}.editor-top{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid var(--line);padding-bottom:14px}.editor-top h2{font:600 26px Georgia,"Songti SC",serif;margin:0}.save-state{font-size:11px;color:var(--muted)}.editor-fields{display:grid;gap:18px;padding:20px 0}.editor-fields textarea{font-family:Georgia,"Songti SC",serif;font-size:15px;line-height:1.8;min-height:330px}.editor-actions{display:flex;gap:8px;flex-wrap:wrap}.editor-preview{border-top:1px solid var(--line);margin-top:28px;padding-top:20px}.editor-preview>div{font-family:Georgia,"Songti SC",serif;line-height:1.85;color:#2f4032}.editor-preview p{white-space:pre-wrap;text-indent:2em}.editor-empty{display:grid;place-content:center;text-align:center;min-height:500px}.editor-empty p{color:var(--muted)}
.edition-note{display:flex;gap:17px;padding:22px;background:#e9f1e8;border-radius:13px;margin-bottom:18px;color:#294f34}.edition-note>span{font-size:32px}.edition-note strong{font-size:15px}.edition-note p{font-size:13px;margin:4px 0 0;color:#65836b}.edition-card{display:flex;align-items:center;gap:18px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:16px 20px}.edition-icon{width:65px;height:72px;display:grid;place-items:center;background:#f0ebe0;color:#8b6d39;border-radius:7px;font:700 16px serif}.edition-card>div:nth-child(2){flex:1}.edition-card h3{margin:0 0 5px}.edition-card p{margin:0;color:var(--muted);font-size:12px}.edition-actions{display:flex;gap:8px}.data-export{display:flex;justify-content:space-between;align-items:center;padding:22px;margin-top:30px}.data-export h3{margin-bottom:5px}.data-export p{color:var(--muted);font-size:13px;margin-bottom:0}
.team-grid{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:17px}.member-row{padding:15px}.role-tag{border-radius:100px;padding:5px 10px;background:#e9f1e7;color:#397052;font-size:11px;font-weight:700}.team-help{padding:22px;height:max-content}.team-help p{font-size:12px;color:#6c7d70}.team-help strong{color:#325b3e}
.invite-panel{max-width:800px;margin-top:25px;padding:21px;background:#fff;border:1px solid var(--line);border-radius:15px}.invite-panel h3{font-size:15px;margin:0 0 5px}.invite-panel>p{color:var(--muted);font-size:12px}.invite-row{display:flex;align-items:center;justify-content:space-between;gap:14px;border-top:1px solid var(--line);padding:11px 0;font-size:12px}.invite-row .text-button{white-space:nowrap}
.billing-card{display:flex;justify-content:space-between;gap:40px;padding:30px;margin-bottom:22px;background:linear-gradient(125deg,#fff 25%,#eff5ea 100%)}.billing-card h3{font:600 27px Georgia,"Songti SC",serif;margin:12px 0}.billing-card p{font-size:13px;margin:8px 0}.badge{display:inline-block;background:#e7eedf;color:#5b783e;font-size:11px;font-weight:700;padding:5px 10px;border-radius:100px}.price{text-align:right;align-self:center}.price strong{font:700 37px Georgia,serif}.price span{display:block;color:var(--muted);font-size:12px}.price button{margin-top:12px}.orders{padding:23px}.order-row{display:grid;grid-template-columns:1fr 100px 100px;gap:10px;border-top:1px solid var(--line);padding:13px 0;font-size:12px}.order-row span:first-child{font-family:monospace}.order-row span:last-child{text-align:right}
.mobile-logout{display:none}.overview-hero{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:30px;align-items:center;background:linear-gradient(125deg,#173d2e,#285f3e);color:#fff;border-radius:18px;padding:35px 39px;margin-bottom:24px;box-shadow:0 16px 36px #1f4e3230}.overview-hero .eyebrow{color:#e9cf8b}.overview-hero h2{font:600 clamp(25px,2.8vw,37px)/1.35 Georgia,"Songti SC",serif;max-width:700px;margin:4px 0 12px}.overview-hero p:not(.eyebrow){color:#dce9dc;font-size:14px;max-width:650px}.overview-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.overview-hero-actions .primary{background:#e8cc8a;color:#234333}.overview-hero-actions .secondary{background:#ffffff1f;color:#fff}.overview-score{border:1px solid #ffffff45;border-radius:15px;padding:20px;display:grid;gap:2px;background:#ffffff10}.overview-score strong{font:600 43px Georgia,serif}.overview-score small{font-size:20px;color:#bdd3c0}.overview-score span{font-size:12px;color:#dae9d8}.overview-score progress{width:100%;height:8px;margin-top:12px;accent-color:#e8cc8a}.overview-grid{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px}.overview-steps,.overview-tip{background:#fff;border:1px solid var(--line);border-radius:15px;padding:24px}.overview-steps .section-heading{margin-bottom:18px}.overview-steps .section-heading h2{font-size:24px}.step-list{display:grid;gap:9px}.step-card{display:flex;align-items:center;gap:15px;padding:15px;border:1px solid var(--line);border-radius:11px}.step-card.done{background:#f7faf5}.step-mark{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#e9efe6;color:#426b4a;font-weight:800}.step-card.done .step-mark{background:#d9ecd8;color:#2d7948}.step-card>div{flex:1}.step-card h3{font-size:14px;margin:0 0 3px}.step-card p{font-size:12px;color:var(--muted);margin:0 0 5px}.step-card small{font-size:11px;color:#78927b}.step-card button{font-size:12px}.overview-aside{display:grid;gap:13px;align-content:start}.overview-tip h3{font:600 19px Georgia,"Songti SC",serif;margin:6px 0 11px}.overview-tip p:not(.eyebrow){font-size:12px;line-height:1.75;color:#627466}.overview-tip p:last-child{margin-bottom:0}.overview-tip.light{background:#eff4ec}
.template-hint{background:#f4f7f1;border-left:3px solid #79a87b;padding:10px 12px;margin:0;color:#53705a;font-size:12px;line-height:1.6}.invite-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px}.invite-actions button{flex:1}#invite-message{margin:9px 0 15px;min-height:105px}
.welcome-sample{display:inline-flex;align-items:center;margin-top:20px;color:#f2d99b;font-size:13px;font-weight:700;text-decoration:none;border-bottom:1px solid #f2d99b90;padding-bottom:4px}.welcome-sample:hover{color:#fff;border-color:#fff}
.privacy-form-note{margin-top:10px!important;padding:10px 12px;background:#eff5ed;border-radius:8px;color:#496b51!important}
.edge-hit{fill:none;stroke:transparent;stroke-width:22;cursor:pointer;pointer-events:stroke}.relation-line:hover .edge{stroke:#337e4c;stroke-width:4}.edge-label{cursor:pointer;pointer-events:all}.edge-label rect{fill:#fffdf6;stroke:#c5d8bc;stroke-width:1}.edge-label text{font:700 13px "PingFang SC",sans-serif;fill:#2b6840;pointer-events:none}.node-add{cursor:pointer}.node .node-add circle,.node.focus .node-add circle{fill:#316d49;stroke:#fff;stroke-width:2;filter:drop-shadow(0 3px 5px #234f3433)}.node-add text{font:700 18px sans-serif;fill:#fff;pointer-events:none}.node .node-add:hover circle,.node .node-add:focus-visible circle{fill:#b07d36}.relation-item{display:flex;align-items:center;gap:4px;max-width:100%}.relation-edit{border:1px solid #d9e6d9;background:#fff;border-radius:7px;color:#3f7852;padding:5px 7px;cursor:pointer}.relation-edit:hover{background:#edf5ec}.danger-link{border:0;background:transparent;color:#a34e42;cursor:pointer;padding:8px;font-size:12px}.danger-link:hover{text-decoration:underline}.relation-modal-actions .danger-link{margin-right:auto}.person-form label small{display:block;color:#839487;font-size:11px;margin-top:4px}
.edge.partner.divorced{stroke:#b77b6c;stroke-dasharray:8 5}.edge.nonbiological{stroke:#9679a9;stroke-dasharray:3 4}.node.deceased rect{fill:#f7f6f1}.node.deceased.focus rect{fill:#eff5eb}.node.deceased .node-sub{fill:#918b7f!important}.child-origins ul{list-style:none;padding:0;margin:0;display:grid;gap:7px}.child-origins li{background:#f7f9f5;border:1px solid #e5ece2;border-radius:8px;padding:8px 10px}.child-origins li strong,.child-origins li small{display:block;font-size:12px}.child-origins li small{color:#718074;margin-top:3px}
.node .node-status-hit{cursor:pointer}.node .node-status-hit rect,.node.deceased .node-status-hit rect{fill:transparent;stroke:none;filter:none}.node .node-status-hit:hover rect,.node .node-status-hit:focus-visible rect{fill:#e3f0df;stroke:none;filter:none}.node .node-status-hit text{pointer-events:none}.quick-note{font-size:11px;color:#687d6d;line-height:1.5;margin:0 0 10px}.quick-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.quick-choice-grid button{border:1px solid #d9e4d7;background:#f8faf6;border-radius:7px;padding:8px 5px;font-size:11px;color:#355740;cursor:pointer}.quick-choice-grid button:hover,.quick-choice-grid button.selected{border-color:#6c9a72;background:#e9f3e7}.partner-status-choice{max-width:300px}
.tree-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start}.canvas-wrap{height:620px}.canvas-side{display:flex;flex-direction:column;gap:16px;min-width:0}.canvas-assistant{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;box-shadow:0 7px 30px #24433008;min-width:0}.canvas-ai-head{display:flex;align-items:start;justify-content:space-between;gap:8px}.canvas-ai-head h3{font:600 19px Georgia,"Songti SC",serif;margin:0 0 8px}.ai-availability{font-size:10px;color:#558267;background:#edf5eb;border-radius:50px;padding:4px 7px;white-space:nowrap}.ai-chat{display:grid;gap:8px;max-height:220px;overflow:auto;margin:15px 0}.ai-chat-message{font-size:12px;line-height:1.65;white-space:pre-wrap;background:#f1f5ef;border-radius:10px;padding:10px;margin:0}.ai-chat-message.mine{background:#e8f0df}.canvas-ai-compose{display:grid;gap:9px;border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.canvas-ai-compose textarea{font-size:12px;padding:10px}.ai-file-label{display:inline-flex;align-items:center;justify-content:center;padding:8px 10px;border-radius:8px;border:1px dashed #a8c3a5;color:#356149;cursor:pointer;font-size:12px}.ai-consent{display:flex;align-items:start;gap:7px;font-size:11px;font-weight:400;line-height:1.5;color:#667c68}.ai-consent input,.import-check input,.import-relation input{width:auto;flex:none;margin:2px 0 0;box-shadow:none}.ai-compose-actions{display:flex;gap:8px}.ai-compose-actions button{flex:1}.ai-proposal{padding:12px;border:1px solid #dce8da;border-radius:10px;margin:8px 0;background:#f9fbf7}.ai-proposal strong,.ai-proposal small{display:block;font-size:12px;line-height:1.6}.ai-proposal small{color:#718474;font-weight:400;margin:5px 0}.ai-proposal>div{display:flex;gap:7px;margin-top:8px}.ai-proposal>span{font-size:11px;color:#608466}.ai-import-review{border-top:1px solid var(--line);padding:13px 4px 2px 0;margin-top:14px;max-height:560px;overflow:auto;overscroll-behavior:contain}.ai-import-review h4{font-size:13px;margin:12px 0 8px}.ai-import-review>.muted{margin-bottom:12px}.import-person{display:grid;gap:7px;border:1px solid #e2eade;border-radius:9px;padding:10px;margin-bottom:8px}.import-person input,.import-person select{font-size:12px;padding:8px}.import-check{display:flex;align-items:center;gap:6px;font-size:11px}.import-person small{color:#758879;font-size:10px}.import-person .ai-duplicate{color:#aa6b34}.import-relation{display:flex;align-items:start;gap:7px;padding:8px 0;border-bottom:1px solid #eef0ea;font-size:11px;font-weight:500}.ai-questions{font-size:11px;line-height:1.6;background:#fff8e8;padding:10px;border-radius:8px;margin:12px 0}.ai-questions ul{padding-left:18px;margin:5px 0 0}.ai-import-review>.primary{margin-top:12px}
@media(max-width:820px){.tree-layout{grid-template-columns:1fr}.canvas-wrap{height:460px}.canvas-side{width:100%}.canvas-assistant{order:-1}}
.workflow-note{padding:12px 14px;margin:12px 0;background:#fbf3df;border:1px solid #eadcb9;border-radius:10px;font-size:13px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.workflow-filter{max-width:260px;margin-bottom:20px}.workflow-history{max-height:65vh;overflow:auto}.workflow-history details{border-bottom:1px solid var(--line);padding:12px 0}.workflow-history summary{cursor:pointer;font-weight:600}.workflow-history textarea{font-size:13px}.version-compare{display:grid;grid-template-columns:1fr 1fr;gap:12px}.contribution-card .review-actions{flex-wrap:wrap;align-items:center}.contribution-card .review-actions>select{max-width:220px}.member-assignment{flex-wrap:wrap}.member-assignment>.secondary{white-space:normal}.editor-preview p{white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:650px){.version-compare{grid-template-columns:1fr}.contribution-card .review-actions>select{max-width:100%}}
@media(max-width:540px){.canvas-wrap{height:390px}}
.tree-shortcuts{display:flex;align-items:center;gap:7px;margin:-4px 0 15px;overflow-x:auto}.tree-shortcuts .secondary{font-size:12px;padding:8px 11px;background:#fff;border-color:#e0e8dc}.tree-shortcuts .shortcut-spacer{flex:1;min-width:10px}.canvas-wrap svg:focus-visible{outline:3px solid #a5c8a9;outline-offset:-4px}.canvas-popover{position:absolute;z-index:6;background:#fff;border:1px solid #ccdcca;border-radius:13px;padding:13px;box-shadow:0 16px 40px #173d2d30}.canvas-popover form{display:grid;gap:8px}.canvas-popover input,.canvas-popover select{padding:8px 9px;border-radius:7px;font-size:12px}.canvas-popover label{font-size:11px;gap:4px}.canvas-popover [hidden]{display:none!important}.quick-title{font-size:12px;font-weight:800;color:#244d33;margin-bottom:8px}.quick-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.quick-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:4px}.quick-actions button{padding:7px 11px;font-size:11px}.node .node-profile circle{fill:#fff;stroke:#76a37f;stroke-width:1.6;filter:drop-shadow(0 2px 4px #24453125)}.node-profile{cursor:pointer}.node .node-profile text{fill:#2f7548;font:700 12px sans-serif}.node .node-profile:hover circle{fill:#d9eddc}.canvas-hint{max-width:calc(100% - 35px);white-space:normal}
.beta-price{align-self:center;text-align:right;color:var(--forest);font:700 28px Georgia,"Songti SC",serif;white-space:nowrap}.beta-price small{display:block;color:var(--muted);font:12px system-ui;margin-top:3px}
dialog{border:0;border-radius:18px;width:min(94vw,560px);max-height:90vh;padding:0;box-shadow:0 25px 90px #0c2d1e55;color:var(--ink)}dialog::backdrop{background:#0b241bb0;backdrop-filter:blur(3px)}#modal-body{padding:29px;max-height:90vh;overflow:auto}.modal-head{margin-bottom:23px}.modal-head h2{font:600 27px Georgia,"Songti SC",serif;margin-bottom:8px}.modal-head p:not(.eyebrow){color:var(--muted);font-size:13px;margin-bottom:0}#modal-body form{display:grid;gap:16px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:13px}.checks{display:flex;gap:20px}.checks label{display:flex;align-items:center;gap:7px}.checks input{width:auto}.modal-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding-top:18px;margin-top:8px}.login-qr{display:block;width:220px;height:220px;margin:12px auto 20px}.finish-card{max-width:430px;margin:15vh auto;padding:35px;text-align:center;background:#fff;border-radius:19px;box-shadow:var(--shadow)}.finish-card .brand-seal{margin:auto}.finish-card h1{font:600 27px Georgia,"Songti SC",serif;margin-top:20px}.finish-card p{color:var(--muted)}
#toast{position:fixed;z-index:99;right:25px;bottom:25px;background:#224d34;color:white;border-radius:9px;padding:13px 17px;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s}#toast.show{opacity:1;transform:translateY(0)}#toast.error{background:#9a4a3a}.error-box{background:#fff1ed;color:#954337;padding:20px;border-radius:10px}.fatal{text-align:center;padding:16vh 20px}
@media(max-width:1080px){.app-shell{grid-template-columns:200px minmax(0,1fr)}.tree-layout{grid-template-columns:minmax(0,1fr) 260px}.sidebar{padding-left:10px;padding-right:10px}.content{padding:22px}.topbar{padding:18px 23px}}
@media(max-width:820px){.welcome{grid-template-columns:1fr}.welcome-form{order:-1;min-height:100svh;justify-content:flex-start;padding:24px 20px 36px}.welcome-art{min-height:380px;padding:25px}.welcome-copy{margin:45px 0 30px}.welcome-copy h1{font-size:43px}.ornament{display:none}.app-shell{display:block}.sidebar{min-height:0;padding:12px 16px;position:relative}.sidebar-brand{padding:0 0 10px}.project-switch{margin:0 0 10px}.nav-list{display:flex;overflow:auto;gap:4px;margin:0 -5px}.nav-list button{white-space:nowrap;flex:none;width:auto;padding:8px 10px;font-size:12px}.nav-icon{font-size:16px;width:16px}.sidebar-bottom{display:flex;align-items:center;gap:10px;margin-top:10px;padding:8px 2px 0}.sidebar-bottom .privacy-note,.sidebar-bottom>.text-button{display:none}.sidebar-bottom .account-button{margin:0;flex:1}.topbar{height:75px}.topbar h1{font-size:22px}.content{padding:17px}.tree-layout,.writing-layout,.team-grid{grid-template-columns:1fr}.canvas-wrap,.canvas-wrap svg{min-height:460px;height:460px}.person-panel{padding:20px}.tree-toolbar{align-items:start;flex-direction:column}.tree-tools{width:100%}.search-wrap{flex:1}.section-heading{align-items:start}.section-heading h2{font-size:24px}.sidebar-brand .brand-seal{width:34px;height:34px;font-size:19px}}
@media(max-width:520px){.tree-pager{align-items:stretch;flex-direction:column}.tree-pager>div{justify-content:space-between}.tree-pager button{flex:1}}
@media(max-width:540px){.auth-card{padding:26px}.welcome-copy h1{font-size:39px}.topbar{padding:12px 16px}.top-actions .primary{font-size:12px;padding:8px}.content{padding:14px}.tree-tools{flex-wrap:wrap}.search-wrap{width:100%;flex:auto}.tree-tools .secondary{width:100%}.canvas-wrap,.canvas-wrap svg{min-height:390px;height:390px}.edition-card,.data-export,.billing-card{align-items:flex-start;flex-direction:column}.edition-actions{width:100%}.edition-actions a{flex:1;font-size:12px;padding:9px}.price{text-align:left}.form-row{grid-template-columns:1fr}.order-row{grid-template-columns:1fr 60px 60px}.order-row span:first-child{font-size:10px;overflow-wrap:anywhere}.editor-actions button{flex:1}.chapter-editor{padding:17px}}
@media(max-width:1080px){.overview-grid{grid-template-columns:1fr}.overview-aside{grid-template-columns:1fr 1fr}}
@media(max-width:820px){.mobile-logout{display:inline-flex;color:var(--muted)}.overview-hero{grid-template-columns:1fr}.overview-score{max-width:230px}.overview-aside{grid-template-columns:1fr}}
@media(max-width:540px){.overview-hero{padding:25px}.overview-steps,.overview-tip{padding:18px}.step-card{align-items:flex-start;flex-wrap:wrap}.step-card>div{min-width:calc(100% - 50px)}.step-card button{margin-left:47px}.overview-hero h2{font-size:27px}}
@media(max-width:540px){.beta-price{text-align:left}}
@media(max-width:540px){.invite-row{align-items:flex-start;flex-direction:column;gap:5px}}
@media(max-width:540px){.wechat-qr-slot[hidden]+.wechat-status{min-height:0;margin:0}}
.heading-actions,.review-actions,.scope-actions{display:flex;gap:9px;flex-wrap:wrap}.member-assignment{flex-wrap:wrap}.member-assignment .member-name{min-width:120px}.member-assignment .member-scope{flex:0 0 100%;border-top:1px solid var(--line);padding-top:12px;margin-top:4px}.scope-chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:9px}.scope-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 8px;border-radius:8px;background:#edf5eb;color:#315a3b;font-size:12px}.scope-chip button{border:0;background:none;color:#5c7761;font-size:17px;line-height:1;cursor:pointer}.scope-actions .small{font-size:11px;padding:7px 10px}.contribution-list{display:grid;gap:15px}.contribution-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:23px}.contribution-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.contribution-head h3{font:600 22px Georgia,"Songti SC",serif;margin:6px 0 12px}.contribution-body{white-space:pre-wrap;line-height:1.8;color:#344b39;margin:0 0 13px}.contribution-source{font-size:12px;color:var(--muted);margin-bottom:0}.contribution-review{border-top:1px solid var(--line);padding-top:17px;margin-top:17px;display:grid;gap:12px}.contribution-review label{max-width:460px}.ai-advice{background:#eef5eb;border-left:3px solid #66956d;border-radius:7px;padding:15px;white-space:pre-wrap;line-height:1.7;font-size:13px;color:#304b37}.ai-advice[hidden]{display:none}
@media(max-width:640px){.section-heading{flex-direction:column}.heading-actions{width:100%}.heading-actions button{flex:1}.contribution-card{padding:17px}.contribution-head h3{font-size:19px}}

.node.sibling-draggable{cursor:grab}.node.reordering{cursor:grabbing;opacity:.85}.node.reordering>rect{fill:#fff7dc;stroke:#b9822f;stroke-width:3}.sibling-insert-marker{stroke:#c38429;stroke-width:4;stroke-linecap:round;pointer-events:none}
.tree-viewbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 18px}.tree-modes{display:flex;padding:3px;border:1px solid #d9e3d6;background:#edf2e9;border-radius:10px}.tree-modes button{border:0;border-radius:7px;background:transparent;padding:9px 14px;color:#667c68;font-size:13px}.tree-modes button[aria-pressed=true]{background:#214e37;color:#fff;box-shadow:0 2px 5px #173d2d20}.tree-viewbar>span{font-size:12px;color:#647c68;flex:1}.tree-viewbar>.secondary{font-size:12px;padding:9px 12px}.canvas-wrap.expanded{position:fixed;inset:18px;z-index:40;height:auto;min-height:0;box-shadow:0 0 0 50px #183f3055}.canvas-wrap.expanded svg{height:100%;min-height:0}.overview-scale .node-status-hit,.overview-scale .node-add,.overview-scale .node-profile,.overview-scale .edge-label{visibility:hidden}.overview-scale .node rect{filter:none}.overview-scale .node-name{font-size:19px}.overview-scale .edge-hit{pointer-events:none}@media(max-width:540px){.tree-viewbar{gap:9px}.tree-viewbar>span{order:3;flex-basis:100%}.tree-modes button{padding:8px 10px}.canvas-wrap.expanded{inset:6px}}
.family-display{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:11px 14px;margin:0 0 16px;background:#eef3e9;border:1px solid #dce6d7;border-radius:10px}.family-display[hidden]{display:none}.family-display label{display:flex;align-items:center;gap:6px;margin:0;font-size:12px}.family-display input[type=checkbox]{width:17px;height:17px;accent-color:#214e37}.family-display select{width:auto;padding:6px 8px;font-size:12px}.family-display .text-button{font-size:12px;padding:7px}.node .node-family rect{fill:#edf5e7;stroke:#9db895;filter:none}.node .node-family text{font:11px sans-serif;fill:#315534}.node-family{cursor:pointer}.co-parent-note{display:block;color:#7a887c;font-size:11px;line-height:1.6}.quick-editor small{font-size:11px;color:#6d7d70;line-height:1.6}.quick-editor .co-parent-kind[hidden]{display:none}.device-advice{display:none}.canvas-popover.touch-sheet{position:fixed;z-index:80;left:12px;right:12px;bottom:12px;width:auto;max-width:520px;max-height:80dvh;overflow-y:auto;margin:auto;padding:18px;box-shadow:0 0 0 100vmax #16332633,0 12px 40px #16332644}.canvas-popover.touch-sheet input,.canvas-popover.touch-sheet select{font-size:16px;min-height:44px}.canvas-popover.touch-sheet button{min-height:44px;padding:10px 18px;font-size:14px}.canvas-popover.touch-sheet .quick-title{font-size:16px}.canvas-popover.touch-sheet label{font-size:13px}
@media(max-width:1100px),(pointer:coarse){.device-advice{display:flex;flex-direction:column;gap:3px;padding:11px 14px;background:#f4efdf;border-radius:10px;color:#6b603c;font-size:12px;line-height:1.6;margin-bottom:15px}.tree-shortcuts{flex-wrap:wrap;overflow:visible}.tree-shortcuts .secondary{min-height:44px}.canvas-controls button{width:42px;height:42px}.canvas-controls{right:9px;top:9px}.canvas-side .person-panel{order:-1}.family-display label{min-height:40px}.family-display select{min-height:40px}.family-display .text-button{min-height:40px}.tree-tools input{font-size:16px}}
@media(max-width:540px){.tree-shortcuts .shortcut-spacer{display:none}.tree-shortcuts .secondary{flex:1 0 auto}.canvas-hint{border-radius:9px;left:10px;bottom:9px;max-width:calc(100% - 20px);font-size:10px}.family-display{gap:6px 12px;padding:8px 10px}.family-display label{font-size:12px}.canvas-popover.touch-sheet{bottom:max(10px,env(safe-area-inset-bottom))}}
.family-settings{margin-bottom:14px}.family-settings[hidden]{display:none}.family-settings>summary{cursor:pointer;font-size:12px;color:#5b715d;padding:8px 2px}.family-settings .family-display{margin:4px 0 0}.canvas-wrap:has(.touch-sheet)::after{content:"";position:fixed;inset:0;background:#16332633;z-index:79}body:has(.touch-sheet){overflow:hidden}.canvas-popover.touch-sheet{box-shadow:0 12px 40px #16332644}
@media(max-width:820px){.tree-screen .sidebar-brand,.tree-screen .sidebar-bottom,.tree-screen .tree-toolbar>div:first-child{display:none}.tree-screen .sidebar{padding:10px 14px}.tree-screen .project-switch{padding:8px 10px;margin:0 0 7px}.tree-screen .project-switch>span{display:none}.tree-screen .nav-list{scrollbar-width:none}.tree-screen .nav-list::-webkit-scrollbar{display:none}.tree-screen .tree-tools{flex-wrap:nowrap;gap:8px}.tree-screen .tree-tools .search-wrap{width:auto;min-width:0;flex:1}.tree-screen .tree-tools .secondary{width:auto;padding:12px 10px;font-size:12px}.tree-screen .tree-toolbar{margin-bottom:12px}.tree-screen .topbar{height:65px}.tree-screen .device-advice{padding:9px 11px;font-size:11px}.tree-screen .tree-viewbar{margin-bottom:8px}.tree-screen .family-settings{margin-bottom:10px;border-bottom:1px solid #dee7d8}.tree-screen .family-settings>summary{padding:10px 2px;min-height:40px}.tree-screen .family-display{border:0;padding:5px 0 10px;background:transparent}}
@media(min-width:821px) and (max-width:1100px){.tree-screen .tree-layout{grid-template-columns:1fr}.tree-screen .canvas-side{display:grid;grid-template-columns:1fr 1fr;align-items:start}.tree-screen .canvas-wrap{height:600px;min-height:600px}.tree-screen .canvas-wrap svg{height:100%;min-height:600px}.tree-screen .canvas-wrap.expanded{height:auto;min-height:0}.tree-screen .canvas-wrap.expanded svg{min-height:0}}

/* Optional person photographs and scoped editions. */
.photo-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;max-height:420px;overflow:auto;margin:18px 0}.photo-card{margin:0;padding:12px;border:1px solid var(--line,#deded4);border-radius:12px;background:#fbfaf6;display:flex;flex-direction:column;gap:8px}.photo-card img{width:100%;height:170px;object-fit:contain;background:#edece5;border-radius:6px}.photo-card p,.photo-card span{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px}.photo-card input[type=checkbox]{width:22px;height:22px}.photo-upload{border-top:1px solid #deded4;padding-top:16px}.edition-fields{border:1px solid #deded4;border-radius:10px;padding:12px 16px;margin:16px 0}.edition-fields label{display:flex;align-items:center;gap:10px;margin:8px 0}.edition-fields input[type=checkbox]{width:18px;height:18px}.edition-photos{max-height:320px}.checks input[type=checkbox]{flex-shrink:0}

/* Person borders carry life status, including while selected or dragged. */
.node>rect{stroke:#789480;stroke-width:1.7}.canvas-life-key{position:absolute;left:17px;top:17px;z-index:2;display:flex;gap:14px;background:#fffffff2;border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:11px;color:#526651;pointer-events:none}.canvas-life-key span{display:flex;align-items:center;gap:6px}.canvas-life-key i{display:inline-block;width:16px;height:18px;border:1.7px solid #526651;border-radius:3px}.canvas-life-key i.living{border-style:dashed}

.node .node-parentage{font:11px "PingFang SC",sans-serif;fill:#536b57}.overview-scale .node-parentage{font-size:12px}

/* Reading first: names and small symbols, tools only where the user is working. */
.node>rect{filter:none;fill:#fffefb;stroke:#819486;stroke-width:1.4}
.node.deceased>rect{fill:#fffefb}.node.focus>rect{fill:#edf4eb;stroke:#37734b;stroke-width:2}
.node:hover>rect,.node:focus-visible>rect{stroke:#37734b;stroke-width:2}.node:focus-visible{outline:none}
.node-name{font-size:17px;font-weight:600}.node .node-rank{font:12px "PingFang SC",sans-serif;fill:#647b67}
.gender-symbol{color:#617a67}.node .gender-symbol circle,.node .gender-symbol path,.gender-symbol>circle,.gender-symbol>path{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:none}
.node .gender-symbol text,.gender-symbol>text{font:600 17px sans-serif;fill:currentColor}
.node-edit-control{visibility:hidden;opacity:0;pointer-events:none}
.node.focus .node-edit-control{visibility:visible;opacity:1;pointer-events:all}

.edge{stroke:#a0b2a3;stroke-width:1.5;stroke-linejoin:round}.edge.partner{stroke:#9a835e;stroke-width:1.4;stroke-dasharray:none}.edge.partner.unknown{stroke-dasharray:3 3}.edge.partner.divorced{stroke:#976b60;stroke-dasharray:5 3}.edge.nonbiological{stroke:#8b7799;stroke-dasharray:3 4}
.relation-line:hover .edge,.relation-line:focus-within .edge{stroke:#53775a;stroke-width:2.5}
.marriage-symbol{cursor:pointer;color:#927c58}.marriage-symbol>rect{fill:#fcfdfa;stroke:none}.marriage-symbol>circle,.marriage-symbol>path{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;pointer-events:none}.marriage-symbol>text{fill:currentColor;font:11px sans-serif;pointer-events:none}.marriage-symbol.divorced{color:#926457}.marriage-symbol:hover>rect,.marriage-symbol:focus-visible>rect{fill:#f0e9da;stroke:#bda77e;stroke-width:1}.marriage-symbol:focus-visible{outline:none}
.canvas-legend{position:absolute;left:15px;top:15px;z-index:3;max-width:calc(100% - 80px);background:#fffffff2;border:1px solid var(--line);border-radius:9px;color:#61725e;font-size:11px}
.canvas-legend>summary{cursor:pointer;padding:8px 11px;min-height:32px}.canvas-legend>div{display:grid;grid-template-columns:repeat(3,auto);gap:8px 16px;padding:0 12px 10px}.canvas-legend span{display:flex;align-items:center;gap:6px}.canvas-wrap .canvas-legend svg{width:21px;height:23px;min-height:0;cursor:default;flex:none}.canvas-legend .marriage-key{fill:none;stroke:#927c58;stroke-width:1.6;stroke-linecap:round}.canvas-legend i{width:16px;height:18px;border:1.5px solid #61725e;border-radius:3px;margin:2px}.canvas-legend i.living{border-style:dashed}.canvas-legend p{font-size:11px;padding:8px 12px 11px;margin:0;border-top:1px solid var(--line);line-height:1.7}
.overview-scale .node-rank,.overview-scale .node.focus .node-edit-control{visibility:hidden;pointer-events:none}.overview-scale .marriage-symbol{pointer-events:none}
@media(max-width:540px){.canvas-legend{left:9px;top:9px}.canvas-legend>summary{min-height:40px;padding:11px}.node-edit-control{transition:none}}
@media(prefers-reduced-motion:reduce){.node-edit-control{transition:none}}

/* Relationship forms should only show fields relevant to the selected relation. */
#modal-body [hidden]{display:none!important}
.quick-parent-details>summary{cursor:pointer;font-size:12px;padding:8px 0;color:#546e58}
.quick-parent-details>label{padding-top:6px}

/* Keep the selected person's actions with the canvas, including expanded mode. */
.canvas-wrap{display:flex;flex-direction:column}
.canvas-stage{position:relative;display:flex;flex:1;min-height:0}
.tree-screen .canvas-wrap #tree-svg{flex:1;min-height:0;height:100%;width:100%}
.canvas-dock{flex:none;position:relative;z-index:3;padding:10px 12px;background:#f9fbf6;border-bottom:1px solid #dce6d7}
.canvas-dock[hidden]{display:none}
.canvas-selection{display:flex;align-items:center;gap:6px;min-height:38px;font-size:13px}
.canvas-selection>span{flex:1;min-width:0;overflow-wrap:anywhere;font-weight:600;color:#284d33}
.canvas-selection .text-button{font-size:12px;padding:8px;flex:none;min-height:38px}
.canvas-dock .tree-shortcuts{flex-wrap:wrap;overflow:visible;margin:6px 0 0;gap:6px}
.canvas-dock .tree-shortcuts .secondary{flex:1 0 auto;min-height:40px;padding:8px 10px}
.canvas-dock .shortcut-spacer{display:none}
.canvas-dock .canvas-hint{position:static;background:transparent;border:0;padding:8px 0 0;margin:0;max-width:none;font-size:10px}
.back-to-canvas{display:none}
@media(max-width:1100px),(pointer:coarse){
  .device-advice{display:block;background:transparent;padding:0!important;margin:0 0 8px}
  .device-advice>summary{cursor:pointer;min-height:36px;padding:8px 2px;color:#677a61}
  .device-advice>p{background:#f4efdf;border-radius:8px;padding:10px 12px;margin:0 0 8px;line-height:1.7}
  .back-to-canvas{display:block;margin:0 0 14px;min-height:44px}
  .canvas-dock .tree-shortcuts .secondary,.canvas-selection .text-button{min-height:44px;min-width:44px}
}
@media(max-width:820px){
  .tree-screen .canvas-wrap{height:540px;min-height:540px}
  .tree-screen .canvas-wrap.expanded{height:auto;min-height:0}
  .canvas-dock{padding:6px 10px 10px}
  .canvas-dock .tree-shortcuts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
  .canvas-dock .tree-shortcuts .secondary{font-size:12px;padding:8px 4px;white-space:nowrap}
  .canvas-dock #quick-link{grid-column:span 2}
  .canvas-dock .canvas-hint{display:none}
  .canvas-selection>span{font-size:12px}
}
body:has(.canvas-wrap.expanded){overflow:hidden}
/* Quick editors use the top layer so canvas overflow cannot cut off a form. */
dialog.canvas-popover,dialog.canvas-popover.touch-sheet{position:fixed;margin:0;inset:auto;max-width:none;min-height:0;overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box;padding:16px;box-shadow:0 16px 40px #173d2d30}
dialog.canvas-popover::backdrop{background:#16332612;backdrop-filter:none}
dialog.canvas-popover.touch-sheet::backdrop{background:#16332644}
.quick-feedback{margin:6px 0;padding:9px;border-radius:8px;background:#fff0e8;color:#99452a;font-size:12px;line-height:1.6}
.canvas-wrap:has(dialog.touch-sheet)::after{display:none}
.canvas-popover .quick-actions{position:sticky;bottom:-16px;background:#fff;padding:10px 0 12px;margin-bottom:-12px;border-top:1px solid var(--line);z-index:2}
.choice-field{border:0;padding:0;margin:0;min-width:0}.choice-field legend{font-size:12px;font-weight:600;margin:0 0 6px;color:#3b5743}.radio-options{display:flex;gap:6px;flex-wrap:wrap}.radio-options label{display:flex;align-items:center;justify-content:center;gap:5px;flex:1 0 auto;min-height:38px;margin:0;padding:6px 10px;border:1px solid #d9e4d7;border-radius:8px;cursor:pointer;background:#fff;font-size:13px}.radio-options label:has(input:checked){border-color:#377d53;background:#eaf3e6;color:#214e37}.radio-options label:has(input:focus-visible){outline:2px solid #377d53;outline-offset:2px}.radio-options input[type=radio],.check-line input[type=checkbox]{appearance:auto;width:15px;height:15px;min-height:0;margin:0;padding:0;box-shadow:none;accent-color:#24543a;flex:none}.radio-options small{font-weight:400;color:#697d6e}.co-parent-options .radio-options{display:grid;grid-template-columns:1fr}.co-parent-options .radio-options label{justify-content:flex-start}.co-parent-default{padding:8px 10px;background:#eef5e9;border-radius:8px;font-size:12px}.co-parent-adjust{font-size:12px}.co-parent-adjust>summary{cursor:pointer;padding:6px 0;color:#5b745f}.co-parent-adjust>.check-line{display:flex;align-items:center;gap:7px;min-height:36px}.co-parent-adjust .co-parent-kind{margin-top:8px}.node .node-family{visibility:hidden}.node.focus .node-family,.node:focus-within .node-family{visibility:visible}
@media(max-width:820px),(pointer:coarse){.radio-options label{min-height:44px}.canvas-popover .radio-options input[type=radio],.canvas-popover .check-line input[type=checkbox]{width:17px;height:17px;min-height:0}.canvas-popover.touch-sheet .quick-title{margin-bottom:12px}}
@media(max-width:1100px),(pointer:coarse){.canvas-side .person-panel{order:-2}}
.canvas-stage>.blank-tree{flex:1;min-height:0;padding:30px 16px}

/* Isolated print selection: native scrolling works on touch devices. */
#modal:has(.edition-builder){width:min(1180px,96vw);max-width:1180px}.edition-builder-tools,.edition-picked{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}.edition-picked strong{margin-right:auto}.edition-builder .checks{display:flex;align-items:center;gap:8px;margin:0}.edition-map-scroll{height:440px;overflow:auto;border:1px solid var(--line,#d6dfd6);border-radius:16px;background:#fafcf8;touch-action:pan-x pan-y;cursor:grab}.edition-map-scroll svg{display:block;max-width:none}.edition-map-scroll .node{cursor:pointer}.edition-map-scroll .node-edit-control{display:none}.edition-map-scroll .edge-hit{pointer-events:none}.edition-omissions{margin:14px 0;padding:12px;background:#f3f5ed;border-radius:12px}.edition-name-list{display:flex;gap:8px;flex-wrap:wrap;max-height:180px;overflow:auto}.edition-name-list span{padding:4px 9px;background:white;border-radius:7px}.edition-omissions h3{font-size:14px;margin:12px 0 6px}#edition-count{padding:12px;background:#edf3e8;border-radius:10px;line-height:1.7}#edition-canvas-form{margin-top:16px}@media(max-width:600px){.edition-map-scroll{height:330px}.edition-picked button{flex:1;padding:10px 6px}.edition-picked strong{width:100%}.edition-builder-tools{gap:6px}#modal:has(.edition-builder){width:100%}}

/* Continuous family entry keeps the next blank draft and saved count visible. */
.quick-progress{margin:0 0 10px;padding:9px 11px;border-radius:8px;background:#edf5e8;color:#28573a;font-size:12px;line-height:1.7}.quick-exit{padding:10px;border:1px solid #e4cda4;border-radius:8px;background:#fff9ed;font-size:12px}.quick-exit p{margin:0 0 8px}.quick-exit button{margin:3px 0}.quick-editor [aria-busy=true]{cursor:progress}.quick-editor [aria-busy=true] input,.quick-editor [aria-busy=true] select{opacity:.7}.quick-editor .quick-actions{flex-wrap:wrap}.quick-editor .quick-actions button{flex:1;white-space:nowrap}

.branch-scope-card{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #dde6d8;border-radius:10px;background:#f6f9f2;padding:12px;margin-bottom:10px}.branch-scope-card strong{display:block;font-size:14px}.branch-scope-card small{display:block;margin-top:4px;color:#657969;line-height:1.6}.branch-scope-card .scope-warning{color:#9b502b}.branch-scope-card .scope-actions{flex-shrink:0}.branch-scope-card .text-button{font-size:12px}.team-help p{line-height:1.8}.team-grid .member-scope{min-width:0}.team-grid .member-name strong{overflow-wrap:anywhere}#modal [hidden]{display:none!important}@media(max-width:600px){.branch-scope-card{align-items:flex-start;flex-direction:column}.branch-scope-card .scope-actions{width:100%}.branch-scope-card button{min-height:42px}.invite-row{align-items:flex-start}.invite-row>span{overflow-wrap:anywhere}}

/* Trace the selected person across generations without hiding other branches. */
#tree-svg.has-ancestor-path .node:not(.ancestor-highlight){opacity:.55}
#tree-svg.has-ancestor-path .relation-line:not(.ancestor-highlight){opacity:.32}
#tree-svg .relation-line.ancestor-highlight .edge{stroke:#225e3b;stroke-width:1.5}
#tree-svg .node.ancestor-highlight>rect{stroke:#225e3b;stroke-width:2;fill:#f0f6ec}
#tree-svg.has-ancestor-path .node:hover,#tree-svg.has-ancestor-path .node:focus-within,#tree-svg.has-ancestor-path .relation-line:hover,#tree-svg.has-ancestor-path .relation-line:focus-within{opacity:1}
@media(max-width:540px){.canvas-selection{flex-wrap:wrap}.canvas-selection>span{flex-basis:100%}.canvas-selection .text-button{padding:6px 9px}}

.edition-fields input[type=radio]{appearance:auto;flex:none;width:18px;height:18px;min-height:0;padding:0;margin:0;accent-color:#24543a}.edition-fields label:has(input[name=overview_surname]){display:block}.edition-fields input[name=overview_surname]{margin-top:6px}

.canvas-branch-summary{font-size:12px;color:#61735f;line-height:1.5;margin:0 0 10px}/* Profile preview stays above the normal and maximized canvas. */
.branch-tooltip{position:fixed;z-index:100;pointer-events:auto;user-select:text;overscroll-behavior:contain;width:340px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);display:flex;flex-direction:column;box-sizing:border-box;padding:14px 16px;border:1px solid #c4d3bd;border-radius:12px;background:#fffef8;box-shadow:0 8px 25px #183f3020;color:#244a31;line-height:1.55;overflow:auto}
.branch-tooltip>strong{font-size:17px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex-shrink:0;overflow-wrap:anywhere}
.branch-tooltip small{display:block;font-size:11px;font-weight:400;color:#74816f}
.person-tooltip-meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:#5b725a;margin:4px 0 9px;flex-shrink:0}
.person-tooltip-meta span:first-child{font-weight:700;color:#244a31}
.person-tooltip-rows{margin:0;min-height:0;overflow:auto;overscroll-behavior:contain;font-size:13px}
.person-tooltip-rows>div{display:grid;grid-template-columns:56px minmax(0,1fr);gap:8px;padding:4px 0}
.person-tooltip-rows dt{color:#788574}.person-tooltip-rows dd{margin:0;overflow-wrap:anywhere}
.person-tooltip-branch{border-top:1px solid #dce4d7;margin-top:9px;padding-top:9px;flex-shrink:0}
.person-tooltip-branch b{display:block;font-size:13px;font-weight:600;margin-bottom:3px}
.person-tooltip-hint{padding-top:8px;flex-shrink:0}


.node .node-number{font:11px Arial,sans-serif;fill:#42644d;pointer-events:none}
.support-plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:24px 0}.support-plan{padding:24px;border:1px solid #d7e1d3;border-radius:18px;background:#fff}.support-plan.active{border:2px solid #315e44;background:#f0f5ed}.support-plan h3{font-size:32px;margin:10px 0}.support-plan ul{padding-left:18px;font-size:14px;line-height:1.9}.support-plan small{color:#50785e}.support-order{padding:16px 0;border-bottom:1px solid #dae4d6;display:flex;gap:14px;justify-content:space-between;align-items:center}.support-order p{margin:5px 0}.support-order small{overflow-wrap:anywhere;color:#728374}.support-order button{margin:3px}.toolbar{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}@media(max-width:760px){.support-plans{grid-template-columns:1fr}.support-plan{padding:20px}.support-order{flex-direction:column;align-items:stretch}.support-order small{font-size:10px}}

.record-picker{padding:12px;border:1px solid var(--line,#d9dfd5);border-radius:12px}.record-picker-list{max-height:220px;overflow:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px}.record-picker-list label{margin:0;padding:6px}.record-picker [hidden],.record-picker-list [hidden],#record-scope-controls[hidden]{display:none!important}
/* Display controls remain inside the maximized canvas, with room for the tree. */
.canvas-dock{max-height:60%;overflow-y:auto;overscroll-behavior:contain}
.canvas-dock .family-settings{margin:0 0 5px}
.canvas-dock .family-settings>summary{min-height:36px;font-weight:600}
.canvas-dock .family-display{margin:5px 0;padding:8px 10px}
.canvas-root-settings{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;padding:8px 10px;background:#eef4e9;border-radius:9px;font-size:12px}
.canvas-root-settings>span{flex:1;min-width:150px;font-weight:600;color:#28513b}
.canvas-root-settings button{font-size:12px;padding:7px 10px;min-height:36px}
.canvas-root-settings small{flex-basis:100%;color:#61745e;line-height:1.6}
.canvas-root-settings [hidden]{display:none!important}
.canvas-output-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.canvas-output-actions button{font-size:12px;padding:8px 12px}
@media(max-width:820px){.canvas-selection{flex-wrap:wrap}.canvas-selection>span{flex-basis:100%}.canvas-dock .family-display{align-items:flex-start}.canvas-root-settings button{min-height:44px}.canvas-dock{max-height:65%}}

/* Presets describe family visibility; identity labels can be toggled independently. */
.family-scope-settings[hidden],.family-presets [hidden]{display:none}
.family-presets{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:8px 0 4px}
.family-presets button{border:1px solid #cbd9c7;border-radius:8px;padding:8px 13px;min-height:36px;background:#fff;color:#49634d;font-size:12px}
.family-presets button[aria-pressed=true]{background:#214e37;border-color:#214e37;color:#fff;font-weight:700;box-shadow:0 2px 5px #173d2d20}
.family-presets span{font-size:12px;color:#627760;padding:5px}
.canvas-label-settings strong{font-size:12px;font-weight:600;color:#49634d}
@media(max-width:820px){.family-presets button{min-height:44px}.canvas-label-settings label{min-height:44px}}

.text-style-controls{margin:8px 0;padding:8px 10px;border:1px solid #dce6d7;border-radius:10px;background:#f7f9f3;min-width:0}.text-style-controls legend{font-size:12px;font-weight:600;color:#49634d}.text-style-fields{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap}.text-style-fields label{display:flex;align-items:center;gap:6px;margin:0;font-size:12px}.text-style-fields select{width:auto;min-height:36px;padding:6px 8px;font-size:12px}.text-style-fields input[type=color]{padding:3px;width:44px;height:36px;cursor:pointer}.text-style-controls small{display:block;font-size:11px;color:#637460;line-height:1.6;margin-top:6px}.name-directions{display:flex;gap:3px}.name-directions button{padding:8px 12px;font-size:12px;border:1px solid #cbd9c7;border-radius:7px;background:#fff;color:#49634d}.name-directions button[aria-pressed=true]{background:#214e37;border-color:#214e37;color:white}.text-style-fields>.text-button{font-size:12px;min-height:36px}.text-style-controls [hidden]{display:none}@media(max-width:820px){.text-style-fields select,.text-style-fields input[type=color],.name-directions button,.text-style-fields>.text-button{min-height:44px}}


.canvas-selection #canvas-edit{font-size:12px;min-height:40px;padding:8px 16px;white-space:nowrap;flex:none}
@media(max-width:820px){.canvas-selection #canvas-edit{min-height:44px}}

.canvas-dock.no-selection .canvas-selection,.canvas-dock.no-selection .canvas-branch-summary,.canvas-dock.no-selection .tree-shortcuts{display:none}

/* Search, range controls and output actions remain available in a maximized canvas. */
.canvas-access-bar{display:flex;align-items:flex-start;justify-content:flex-end;gap:12px;flex:none;padding:10px 12px;background:#f9fbf6;border-bottom:1px solid #dce6d7;position:relative;z-index:5}
.canvas-access-bar[hidden],.canvas-expanded-tools[hidden]{display:none}
.canvas-expanded-tools{flex:1;min-width:0}.canvas-expanded-tools .tree-tools{width:100%;margin-bottom:8px}.canvas-expanded-tools .search-wrap{flex:1;min-width:0;max-width:440px}.canvas-expanded-tools .tree-viewbar{gap:8px;margin:0}.canvas-expanded-tools .tree-pager{margin:6px 0 0}
.canvas-access-bar .canvas-output-actions{display:flex;gap:7px;flex:none;margin:0;padding:0;flex-wrap:wrap}.canvas-access-bar .canvas-output-actions button{min-height:38px;font-size:12px;padding:9px 12px}
.canvas-expanded-tools .search-results button:focus-visible{outline:2px solid #316945;outline-offset:-2px;background:#edf3e9}
@media(max-width:820px){.canvas-access-bar{padding:8px 10px;flex-wrap:wrap;gap:8px}.canvas-expanded-tools{flex-basis:100%}.canvas-expanded-tools .tree-tools{flex-wrap:nowrap}.canvas-expanded-tools .tree-tools .search-wrap{width:auto}.canvas-expanded-tools .tree-tools .secondary{width:auto}.canvas-expanded-tools .tree-viewbar{margin:0}.canvas-expanded-tools .tree-viewbar>span{order:0;flex-basis:auto;font-size:11px}.canvas-access-bar .canvas-output-actions{width:100%;justify-content:flex-end}.canvas-access-bar .canvas-output-actions button{min-height:44px}}
@media(min-width:1101px){.canvas-expanded-tools{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap}.canvas-expanded-tools .tree-tools{flex:1 1 240px;width:auto;margin:0}.canvas-expanded-tools .tree-viewbar{flex:1 1 420px}.canvas-expanded-tools .tree-viewbar>span{max-width:190px}.canvas-expanded-tools .tree-pager{flex-basis:100%}}

/* Display preferences float over the canvas and never consume drawing height. */
.canvas-settings-panel{position:absolute;z-index:20;max-width:calc(100% - 16px);overflow:auto;overscroll-behavior:contain;border:1px solid #cbdac6;border-radius:12px;background:#fff;box-shadow:0 12px 36px #183f3030;color:#284d33;font-size:12px}
.canvas-settings-panel[hidden]{display:none!important}
.canvas-settings-heading{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid #e0e8da;background:#fff}
.canvas-settings-heading>div{display:flex;align-items:center;gap:10px}.canvas-settings-heading strong{font-size:13px}.canvas-settings-heading small{font-size:11px;color:#687c66}.canvas-settings-heading button{min-height:34px;padding:6px 13px;font-size:12px}
.canvas-settings-panel .family-settings-content{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:10px 12px}
.canvas-settings-panel .canvas-root-settings{gap:5px 8px;padding:8px;font-size:12px}.canvas-settings-panel .canvas-root-settings>span{min-width:120px}.canvas-settings-panel .canvas-root-settings small{font-size:11px;line-height:1.45}.canvas-settings-panel .canvas-root-settings button{min-height:32px;padding:5px 8px}
.canvas-settings-panel .family-display{gap:5px 12px;margin:0;padding:8px;background:#f7f9f3}.canvas-settings-panel .family-display label{min-height:30px;line-height:1.4}.canvas-settings-panel .family-display select{min-height:32px;padding:4px 6px}.canvas-settings-panel .canvas-label-settings strong{flex-basis:auto;margin-right:3px}
.canvas-settings-panel .text-style-controls{margin:0;padding:7px 8px}.canvas-settings-panel .text-style-fields{gap:6px 10px}.canvas-settings-panel .text-style-fields label{gap:5px}.canvas-settings-panel .text-style-fields select,.canvas-settings-panel .text-style-fields input[type=color],.canvas-settings-panel .name-directions button,.canvas-settings-panel .text-style-fields>.text-button{min-height:32px;height:32px}.canvas-settings-panel .text-style-fields select{padding:4px 6px}.canvas-settings-panel .name-directions button{padding:5px 9px}.canvas-settings-panel .text-style-controls small{margin-top:5px;font-size:10px;line-height:1.45}
.canvas-settings-panel .family-presets{gap:5px;margin:0 0 6px}.canvas-settings-panel .family-presets button{min-height:32px;padding:5px 9px}.canvas-settings-panel .family-presets span{padding:3px;font-size:11px}
@media(max-width:820px),(pointer:coarse){.canvas-settings-heading{padding:7px 10px}.canvas-settings-panel .family-settings-content{gap:7px;padding:8px 10px}.canvas-settings-panel .family-display label,.canvas-settings-panel .family-display select,.canvas-settings-panel .canvas-root-settings button,.canvas-settings-panel .family-presets button,.canvas-settings-panel .text-style-fields select,.canvas-settings-panel .text-style-fields input[type=color],.canvas-settings-panel .name-directions button,.canvas-settings-panel .text-style-fields>.text-button,.canvas-settings-heading button{min-height:44px;height:auto}.canvas-settings-panel .text-style-fields{gap:5px 9px}.canvas-settings-panel .text-style-fields input[type=color]{height:44px}.canvas-settings-panel .family-display{gap:3px 10px;padding:5px 8px}}

/* The normal workspace and maximized view share the same tool column. */
.canvas-sidebar-content[hidden]{display:none!important}
.canvas-wrap{display:grid;grid-template-columns:210px minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-width:0}
.canvas-wrap.expanded{inset:0;border:0;border-radius:0;grid-template-columns:264px minmax(0,1fr)}
.canvas-wrap .canvas-sidebar{grid-column:1;grid-row:1;display:flex;flex-direction:column;min-height:0;min-width:0;background:#f9fbf6;border-right:1px solid #dce6d7;z-index:5}
.canvas-wrap .canvas-sidebar-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:none;min-height:52px;padding:8px 12px;border-bottom:1px solid #dce6d7}
.canvas-sidebar-heading strong{font-size:13px;color:#284d33}
.canvas-sidebar-heading button{font-size:12px;padding:6px 10px;min-height:36px}
.canvas-wrap .canvas-sidebar-content{display:block;flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.canvas-wrap .canvas-stage{grid-column:2;grid-row:1;min-width:0;height:100%}
.canvas-wrap .canvas-access-bar{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:12px}
.canvas-wrap .canvas-access-bar[hidden]{display:none}
.canvas-wrap .canvas-expanded-tools{display:block;flex:none;width:100%}
.canvas-wrap .tree-tools{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:6px;width:100%;margin:0 0 8px;flex:none}
.canvas-wrap .search-wrap{width:100%;min-width:0;max-width:none;flex:none}
.canvas-wrap #tree-search{min-width:0;font-size:12px;padding:9px 10px;min-height:36px}
.canvas-wrap #recenter{width:auto;min-height:36px;padding:8px 9px;font-size:12px}
.canvas-wrap .search-results{position:static;max-height:240px;margin-top:6px;box-shadow:none}
.canvas-wrap .tree-viewbar{display:flex;gap:6px;flex:none;margin:0}
.canvas-wrap .tree-modes{width:100%}
.canvas-wrap .tree-modes button{flex:1;min-height:34px;padding:7px 8px;font-size:12px}
.canvas-wrap .tree-viewbar>span{order:0;flex-basis:100%;max-width:none;font-size:11px;line-height:1.5}
.canvas-wrap #tree-fit{display:none}
.canvas-wrap .tree-pager{flex-direction:column;align-items:stretch;gap:6px;padding:8px;font-size:11px}
.canvas-wrap .tree-pager>div>button{flex:1;min-width:0}
.canvas-wrap .canvas-output-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:6px}
.canvas-wrap .canvas-output-actions button{min-width:0;min-height:34px;padding:7px 8px;white-space:nowrap}
.canvas-wrap #edition-from-canvas{grid-column:1 / -1;grid-row:2}
.canvas-wrap .canvas-dock{padding:10px 12px;border-bottom:0;overflow:visible;max-height:none}
.canvas-wrap .family-settings>summary{padding:5px 0;min-height:34px;font-size:12px}
.canvas-wrap .canvas-selection{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;min-height:0}
.canvas-wrap .canvas-selection>span{grid-column:1 / -1;padding:6px 0;font-size:13px}
.canvas-wrap .canvas-selection button{min-width:0;min-height:34px;padding:6px 4px}
.canvas-wrap .canvas-branch-summary{margin:8px 0;font-size:11px}
.canvas-wrap .tree-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.canvas-wrap .tree-shortcuts .secondary{min-width:0;min-height:36px;padding:7px 6px;white-space:nowrap}
.canvas-wrap #quick-link{grid-column:1 / -1}
.canvas-wrap .canvas-dock.no-selection .canvas-selection,.canvas-wrap .canvas-dock.no-selection .tree-shortcuts{display:none}
.canvas-wrap.tools-collapsed,.canvas-wrap.expanded.tools-collapsed{grid-template-columns:52px minmax(0,1fr)}
.canvas-wrap.tools-collapsed .canvas-sidebar-heading{padding:8px 4px;justify-content:center}
.canvas-wrap.tools-collapsed .canvas-sidebar-heading strong{display:none}
.canvas-wrap.tools-collapsed .canvas-sidebar-heading button{padding:8px 4px;min-width:44px;min-height:44px}
@media(max-width:1100px),(pointer:coarse){
  .canvas-wrap .canvas-sidebar button,.canvas-wrap .canvas-sidebar summary,.canvas-wrap #tree-search{min-height:44px}
  .canvas-wrap #tree-search{font-size:16px}
}
@media(min-width:1101px){
  .tree-screen .tree-layout{grid-template-columns:minmax(0,1fr) 240px;gap:12px}
}
@media(min-width:1440px){
  .tree-screen .tree-layout{grid-template-columns:minmax(0,1fr) 280px;gap:14px}
  .canvas-wrap:not(.expanded):not(.tools-collapsed){grid-template-columns:240px minmax(0,1fr)}
}
@media(max-width:600px){
  .canvas-wrap,.canvas-wrap.expanded{grid-template-columns:52px minmax(0,1fr)}
  .canvas-wrap:not(.tools-collapsed) .canvas-sidebar{position:absolute;left:0;top:0;bottom:0;width:min(280px,calc(100% - 56px));box-shadow:8px 0 24px #173d2d20}
}

/* Branch applications: quiet, visible owner notifications. */
.join-request-badge{margin-left:auto;padding:1px 7px;border-radius:20px;background:#a14c35;color:white;font-size:11px;line-height:1.6}
.join-request-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;margin-bottom:20px;border:1px solid #c9dbc9;border-radius:14px;background:#edf5eb;color:#214d35}
.join-request-notice p{margin:4px 0 0;font-size:13px}.join-request-notice button{flex-shrink:0}
.join-request-notice[hidden],.join-request-badge[hidden]{display:none}.share-login-note{padding:12px;border-radius:10px;background:#edf5eb;color:#214d35!important}
@media(max-width:560px){.join-request-notice{align-items:flex-start;flex-direction:column}}

.empty-home main.applicant-home{max-width:1000px;margin:20px auto;padding:20px 28px;text-align:left}.applicant-home>h1{margin-bottom:8px}.applicant-home>p{margin-bottom:24px}.applicant-create{padding:22px;border:1px solid var(--line);border-radius:14px;background:#fff}.applicant-create h2{font-size:18px;margin:0 0 10px}.applicant-create p{font-size:14px;color:var(--muted);margin:0}.applicant-home .branch-request-actions .primary{margin-top:0}
@media(max-width:600px){.empty-home main.applicant-home{padding:12px 16px;margin:0 auto 24px}}

/* A folded branch must remain discoverable after clicking empty canvas. */
.node .node-family.node-family-collapsed{visibility:visible;pointer-events:all}
.node .node-family.node-family-collapsed text{font-weight:600}
.node .node-family:focus-visible rect{stroke:#245c3b;stroke-width:2.5}

/* Parent choices stay inside the scrolling person form, including full-screen canvas. */
.person-parentage{border:1px solid var(--line);border-radius:12px;padding:14px;background:#f5f8f1;display:grid;gap:10px;min-width:0}.person-parentage h3{margin:0;font-size:15px}.person-parentage p{margin:0;font-size:12px;line-height:1.7;overflow-wrap:anywhere}.person-parentage .radio-options{display:grid;grid-template-columns:1fr}.person-parentage .radio-options label{justify-content:flex-start;min-width:0;min-height:44px;overflow-wrap:anywhere}.person-parentage .radio-options label:has(input:disabled){cursor:default;opacity:.65}.person-parentage .radio-options span{min-width:0}.person-parentage .radio-options small{display:block;margin-top:2px}.person-parentage details{font-size:12px}.person-parentage summary{cursor:pointer;padding:5px 0;color:var(--green)}.person-parentage details fieldset{margin-top:8px}.person-parentage>.text-button{justify-self:start;min-height:36px;padding:4px 0}.person-parentage .form-feedback{margin:0}

/* Capacity follows the entire genealogy, never the currently visible branch. */
.person-capacity{display:grid;gap:5px;padding:10px 12px;border:1px solid #dbe4d7;border-radius:10px;background:#f3f7ef;font-size:13px;line-height:1.5;overflow-wrap:anywhere;margin:10px 0}
.person-capacity strong{color:#245c3b}.person-capacity small{color:#657366}.person-capacity a{color:#245c3b;text-decoration:underline;text-underline-offset:3px}.canvas-access-bar>.person-capacity{margin:0 0 8px}

/* Phone workspace: one compact header and four destinations, with the drawing
   taking the remaining screen. Tablet and desktop arrangements stay intact. */
.mobile-shell-more,.mobile-bottom-nav,.mobile-canvas-bar,.mobile-person-actions,.mobile-tools-done,.mobile-ai-entry{display:none}
.mobile-more-menu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mobile-more-menu button{min-width:0;min-height:44px;white-space:normal;justify-content:flex-start}.mobile-account-actions{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}
.mobile-inspector:not([open]){display:none}
@media(max-width:600px){
  .app-shell{padding-bottom:calc(60px + env(safe-area-inset-bottom));min-height:100dvh}
  .app-shell>.sidebar,.tree-screen.app-shell>.sidebar{height:56px;min-height:56px;padding:4px 10px;display:flex;flex-direction:row;align-items:center;gap:8px;background:#fff;color:var(--ink);border-bottom:1px solid var(--line);position:relative;z-index:10}
  .app-shell>.sidebar .sidebar-brand,.app-shell>.sidebar .nav-list,.app-shell>.sidebar .sidebar-bottom{display:none}
  .app-shell>.sidebar .project-switch,.tree-screen.app-shell>.sidebar .project-switch{flex:1;min-width:0;margin:0;padding:0;border:0;background:transparent}
  .app-shell>.sidebar .project-switch>span,.app-shell>.sidebar .project-switch>button{display:none}
  .app-shell>.sidebar .project-switch select{color:var(--forest);font-size:16px;min-height:44px;margin:0;padding:8px 26px 8px 2px;appearance:auto;font-weight:700;overflow:hidden;text-overflow:ellipsis}
  .mobile-shell-more{display:block;flex:none;background:#f0f5ed;border:0;border-radius:8px;color:var(--forest);min-height:40px;padding:8px 12px;font-size:13px;font-weight:700}
  .app-shell .topbar{display:none}.app-shell .content{padding:16px 12px}
  .mobile-bottom-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:fixed;z-index:30;left:0;right:0;bottom:0;height:calc(60px + env(safe-area-inset-bottom));padding:3px 8px env(safe-area-inset-bottom);border-top:1px solid var(--line);background:#fff}
  .mobile-bottom-nav button{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1px;min-height:50px;color:#798477;background:transparent;border:0;font-size:11px;border-radius:8px}
  .mobile-bottom-nav button>span{font-size:21px;line-height:23px}.mobile-bottom-nav button.active{color:var(--forest);background:#eff5ec;font-weight:750}
  .tree-screen .content{padding:0;max-width:none}.tree-screen .tree-toolbar,.tree-screen .device-advice{display:none}
  .tree-screen .tree-layout{display:block;min-height:0}.tree-screen .canvas-side{display:none}
  .tree-screen .canvas-wrap.phone-canvas,.tree-screen .canvas-wrap.phone-canvas.tools-collapsed{display:flex;flex-direction:column;grid-template-columns:none;border:0;border-radius:0;height:calc(100dvh - 116px - env(safe-area-inset-bottom));min-height:250px}
  .tree-screen .canvas-wrap.phone-canvas.expanded{inset:0;height:100dvh;min-height:0;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
  .phone-canvas .mobile-canvas-bar{display:flex;flex:none;align-items:center;gap:6px;height:44px;padding:3px 10px;background:#fcfdf9;border-bottom:1px solid #e7ede3;z-index:6}
  .mobile-canvas-count{flex:1;min-width:0;color:#75846f;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-canvas-bar button{min-width:44px;min-height:36px;padding:5px 10px;font-size:12px}
  .phone-canvas .canvas-stage{height:auto;min-height:0;flex:1;width:100%;grid-column:auto;grid-row:auto}
  .tree-screen .phone-canvas #tree-svg{height:100%;min-height:0;width:100%}
  .phone-canvas .canvas-legend{left:8px;top:8px;max-width:calc(100% - 76px);font-size:11px}.phone-canvas .canvas-legend>summary{min-height:34px;padding:8px 10px}
  .phone-canvas .canvas-controls{top:auto;bottom:12px;right:8px;gap:2px;padding:3px}.phone-canvas .canvas-controls button{width:40px;height:40px}
  .phone-canvas.tools-collapsed .canvas-sidebar{display:none}
  .canvas-wrap.phone-canvas:not(.tools-collapsed) .canvas-sidebar{position:absolute;left:0;top:44px;bottom:0;width:min(340px,calc(100% - 24px));z-index:12;box-shadow:8px 0 30px #173d2d24;border-right:1px solid var(--line)}
  .phone-canvas .canvas-sidebar-heading{min-height:46px;padding:4px 12px}.phone-canvas .mobile-tools-done{display:inline-flex;min-height:36px!important}.phone-canvas .canvas-sidebar-content{padding-bottom:16px}
  .phone-canvas .canvas-sidebar-content>.family-settings{margin:0 12px;padding:8px 0;border-top:1px solid var(--line)}.phone-canvas .mobile-ai-entry{display:flex;margin:8px 12px;min-height:44px}
  .phone-canvas .canvas-access-bar{gap:8px}.phone-canvas .canvas-access-bar .person-capacity{font-size:12px;padding:8px}.phone-canvas .canvas-output-actions button{white-space:normal}
  .phone-canvas>.canvas-dock{flex:none;z-index:8;padding:6px 10px 8px;background:#fffffff5;border-top:1px solid #dce6d7;box-shadow:0 -4px 18px #203c3010}
  .phone-canvas>.canvas-dock.no-selection,.phone-canvas .canvas-dock>.canvas-selection,.phone-canvas .canvas-dock>.tree-shortcuts,.phone-canvas .canvas-dock>.canvas-hint{display:none}
  .phone-canvas .mobile-person-actions{display:block}.mobile-person-name{font-weight:700;font-size:12px;padding:0 2px 4px;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mobile-person-buttons{display:flex;gap:6px;align-items:stretch}.mobile-person-buttons>button,.mobile-person-buttons>details{flex:1;min-width:0}.mobile-person-buttons>button,.mobile-person-buttons>details>summary{padding:8px 4px;min-height:42px;font-size:12px;text-align:center;white-space:nowrap;border-radius:8px}
  .mobile-action-menu>summary{display:flex;align-items:center;justify-content:center;list-style:none;background:#eef2e9;color:var(--forest);font-weight:700;cursor:pointer}.mobile-action-menu>summary::-webkit-details-marker{display:none}.mobile-action-menu[hidden]{display:none}
  .mobile-action-menu:not([open])>div{display:none}
  .mobile-action-menu>div{position:absolute;left:8px;right:8px;bottom:calc(100% + 4px);max-height:min(48dvh,340px);overflow:auto;overscroll-behavior:contain;background:#fff;box-shadow:0 -5px 28px #173d2d26;border:1px solid var(--line);border-radius:13px;padding:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .mobile-action-menu>div>button{min-height:44px;padding:8px 5px;font-size:12px;white-space:normal}.mobile-action-menu .canvas-branch-summary{grid-column:1/-1;font-size:12px;margin:0 0 4px}.mobile-action-menu [hidden]{display:none!important}
  .phone-canvas .blank-tree{flex:1;width:100%;min-height:0;padding:20px}.phone-canvas .blank-tree h3{font-size:20px}.phone-canvas .blank-tree p{font-size:13px}.phone-canvas .blank-tree .primary{min-height:44px}
  .mobile-inspector{width:100%;max-width:600px;max-height:90dvh;margin:auto 0 0;inset:auto 0 0;border-radius:18px 18px 0 0;overflow:auto;overscroll-behavior:contain;padding:0 0 env(safe-area-inset-bottom)}
  .mobile-inspector-heading{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line);background:#fff;z-index:2}.mobile-inspector-heading strong{font-size:14px}.mobile-inspector-heading button{min-height:40px;font-size:12px}
  .mobile-inspector .canvas-side{display:block;width:100%}.mobile-inspector.show-person #canvas-assistant,.mobile-inspector.show-ai #person-panel{display:none}.mobile-inspector .person-panel,.mobile-inspector .canvas-assistant{border:0;border-radius:0;box-shadow:none;padding:18px}.mobile-inspector #back-to-canvas{display:none}.mobile-inspector .person-avatar{display:none}.mobile-inspector .fact-grid{margin:14px 0}.mobile-inspector .panel-tip{margin-bottom:0}
  #modal-body{padding:20px;max-height:90dvh}#modal-body input,#modal-body select,#modal-body textarea,dialog.canvas-popover input,dialog.canvas-popover select,dialog.canvas-popover textarea{font-size:16px}
  dialog.quick-editor .person-capacity:not(.capacity-full){display:block;margin:0;padding:5px 8px;font-size:11px;background:#f5f8f1;border:0}dialog.quick-editor .person-capacity:not(.capacity-full)>:not(strong){display:none}
  .quick-optional-fields>summary{min-height:36px;padding:8px 0;cursor:pointer;font-size:12px;color:#677b62}.quick-optional-fields[open]>.quick-row{margin:4px 0 8px}.quick-optional-fields>small{font-size:11px;line-height:1.6;color:var(--muted)}
  #toast{left:12px;right:12px;bottom:calc(72px + env(safe-area-inset-bottom));font-size:13px;max-height:30dvh;overflow:hidden}
}
@media(max-width:600px){
  /* Use the large bottom actions on phones. A tap anywhere on a person selects
     that person instead of accidentally activating the small gender shortcut. */
  .phone-canvas .node [data-quick-status]{pointer-events:none}
  .phone-canvas .node [data-add-child],.phone-canvas .node [data-edit-person]{display:none}
}
:root .membership-page{max-width:1100px}.membership-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:26px}.membership-header h2{font:600 27px Georgia,"Songti SC",serif;margin:0 0 5px}.membership-header p,.membership-free p{font-size:13px;color:var(--muted);margin:0}.membership-header button{flex:none}.membership-section{margin:0 0 24px}.membership-section>h3{font-size:15px;margin:0 0 12px}.membership-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.membership-card{padding:22px;border:1px solid var(--line);border-radius:14px;background:#fff;min-width:0;display:flex;flex-direction:column}.membership-card.is-gift{background:#f0f5ec;border-color:#c4d6bf}.membership-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.membership-kind{font-size:12px;color:var(--muted)}.membership-status{font-size:11px;line-height:1.5;border-radius:12px;padding:3px 9px;color:#285b3c;background:#e6f0e4;white-space:nowrap}.membership-status.is-paused{color:#866044;background:#f4ede5}.membership-card h4{font-size:20px;line-height:1.4;margin:16px 0 8px;overflow-wrap:anywhere}.membership-value{font-size:14px;margin:0 0 5px}.membership-caption,.membership-source{font-size:12px;color:var(--muted);margin:0 0 5px;overflow-wrap:anywhere}.membership-source{font-size:11px;margin-top:8px}.membership-card-action{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding-top:18px;margin-top:auto}.membership-card-action .secondary,.membership-card-action .primary{font-size:13px;text-align:center}.membership-card-action small{font-size:11px;color:var(--muted)}.membership-empty{grid-column:1/-1;padding:22px;border:1px dashed #d2ddce;border-radius:14px;background:#ffffff70}.membership-empty strong{font-size:15px;font-weight:600}.membership-empty p{font-size:13px;color:var(--muted);margin:5px 0 0}.membership-free{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;border-top:1px solid var(--line)}.membership-free strong{font-size:14px}.membership-free p{margin-top:4px}.membership-free button{flex:none}.membership-rules{border-top:1px solid var(--line);padding:14px 0;font-size:12px;color:var(--muted)}.membership-rules summary{cursor:pointer;font-size:13px;width:fit-content}.membership-rules dl{max-width:760px;margin:16px 0 4px;line-height:1.75}.membership-rules dt{font-weight:600;color:var(--ink);margin-top:12px}.membership-rules dd{margin:3px 0 0}.membership-rules summary:focus-visible{outline:2px solid #48754e;outline-offset:5px}@media(max-width:640px){.membership-header{align-items:flex-start;margin-bottom:20px}.membership-header h2{font-size:24px}.membership-header p{max-width:205px;font-size:12px}.membership-grid{grid-template-columns:1fr}.membership-card{padding:18px}.membership-section{margin-bottom:20px}.membership-free{align-items:flex-start;gap:12px}.membership-free p{font-size:12px}.membership-card h4{font-size:19px}}

.membership-gift-empty{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.membership-gift-empty h3{font-size:15px;margin:0}.membership-gift-empty span{font-size:13px;color:var(--muted)}.membership-history{margin-top:14px}.membership-history summary{width:fit-content;cursor:pointer;font-size:13px;color:var(--muted)}.membership-history .membership-grid{margin-top:14px}

.membership-columns{display:grid;grid-template-columns:1.1fr 1fr;gap:24px}.membership-columns .membership-grid{grid-template-columns:1fr}.membership-columns .membership-gift-empty{display:block}.membership-gift-empty span{display:block;margin-top:8px}@media(max-width:1000px){.membership-columns{grid-template-columns:1fr;gap:0}}

.membership-title{display:none}@media(max-width:600px){.membership-title{display:block}}

.canvas-delete-confirm:not([hidden]){width:100%;box-sizing:border-box}.canvas-delete-confirm .modal-actions>button{min-height:44px}.canvas-delete-confirm p{line-height:1.65;overflow-wrap:anywhere}.canvas-delete-confirm .modal-actions{display:flex;gap:8px;flex-wrap:wrap}.canvas-delete-confirm .modal-actions>button{flex:1;white-space:nowrap}
@media(max-width:600px){.phone-canvas>.canvas-dock{position:relative}.phone-canvas>.canvas-dock>.canvas-delete-confirm{position:absolute;left:8px;right:8px;bottom:calc(100% + 4px);width:auto;max-height:min(48dvh,340px);overflow:auto;overscroll-behavior:contain;z-index:10;box-shadow:0 -5px 28px #173d2d26;background:#fff9ed;border:1px solid #e3d4bd;border-radius:13px;padding:14px;margin:0}.phone-canvas .canvas-delete-confirm p{font-size:12px;margin:0 0 10px}}

/* Keep a person's genealogy explicit when an account manages several books. */
.people-directory-scope{display:flex;align-items:end;gap:16px;padding:16px;background:var(--paper,#f4f6ef);border:1px solid var(--line,#dbe4d8);border-radius:14px;margin-bottom:18px}
.people-directory-scope label{flex:1;max-width:520px;margin:0;min-width:0}
.people-directory-scope select{width:100%;margin-top:7px}
.people-directory-scope>span{padding-bottom:11px;font-size:13px;color:var(--muted,#677c6b);white-space:nowrap}
.people-directory h2{overflow-wrap:anywhere}
@media(max-width:600px){.people-directory-scope{display:block;padding:12px}.people-directory-scope>span{display:block;padding:8px 0 0}.people-directory .section-heading{align-items:start;gap:10px}.people-directory .section-heading>.primary{white-space:nowrap}}
/* Group the workspace by intent; the mobile shell retains its four primary destinations. */
.nav-group{display:grid;gap:3px}.nav-group+.nav-group{margin-top:12px}.nav-group-label{padding:4px 15px;color:#a8c4ad;font-size:10px;letter-spacing:.06em}.nav-list button[hidden]{display:none}.mobile-more-menu .nav-group{display:contents}.mobile-more-menu .nav-group-label{grid-column:1/-1;color:var(--muted);font-size:12px;padding:12px 0 2px}.mobile-more-menu .nav-group:first-child .nav-group-label{padding-top:0}
.membership-center{max-width:1100px}.membership-current,.membership-current-empty{padding:22px;border:1px solid var(--line);background:#fff;border-radius:14px;margin-bottom:28px}.membership-current>header{display:flex;justify-content:space-between;align-items:center;gap:16px}.membership-current h2{font:600 24px/1.4 Georgia,"Songti SC",serif;margin:5px 0 10px;overflow-wrap:anywhere}.membership-current>p,.membership-current-empty p{font-size:13px;line-height:1.7;color:var(--muted);margin:8px 0}.membership-current-status{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px}.membership-current-status>strong{font-size:14px;color:var(--forest)}.membership-current-status .membership-caption{margin:0}.membership-upgrade{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px;background:#f0f5ec;border-radius:10px;margin-top:16px}.membership-upgrade strong{font-size:15px}.membership-upgrade small{display:block;color:var(--muted);font-size:12px;line-height:1.7;margin-top:5px}.membership-upgrade>button{flex:none}.membership-orders{border-top:1px solid var(--line);margin-top:18px;padding-top:12px}.membership-orders summary{font-size:13px;cursor:pointer;color:var(--muted)}.membership-orders .support-order{margin-top:10px}.membership-center .membership-title{display:block;font-size:20px}.messages-inbox-link{display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid var(--line);background:#f0f5ec;border-radius:12px;padding:18px;margin-bottom:20px}.messages-inbox-link p{font-size:12px;color:var(--muted);margin:5px 0 0}.messages-inbox-link button{flex:none}.poster-backup-link{font-size:12px;margin:0 0 15px}.poster-backup-link a{color:var(--forest);text-decoration:underline}
@media(min-width:601px) and (max-width:820px){.nav-list .nav-group{display:contents}.nav-list .nav-group-label{display:none}}
@media(max-width:600px){.membership-current,.membership-current-empty{padding:17px;margin-bottom:22px}.membership-current>header{align-items:flex-start;gap:8px}.membership-current h2{font-size:21px}.membership-upgrade{display:block;padding:14px}.membership-upgrade>button{width:100%;margin-top:12px}.membership-current-status{display:block}.membership-current-status .membership-caption{display:block;margin-top:6px}.messages-inbox-link{display:block;padding:16px}.messages-inbox-link button{margin-top:12px;width:100%}}
/* Component display rules must not reveal controls explicitly hidden by state. */
[hidden]{display:none!important}
.poster-backup-link{padding:14px 16px;background:#f2f6ee;border:1px solid #dce7d7;border-radius:12px}.poster-backup-link strong{font-size:14px;color:var(--forest)}.poster-backup-link p{margin:6px 0 9px;color:var(--muted);line-height:1.6}.poster-backup-actions{display:flex;flex-wrap:wrap;gap:8px 16px}.poster-backup-link a{font-weight:600}
.guide-link{display:block;color:#315c42;text-decoration:none;font-size:13px;font-weight:700;padding:8px 10px;border-radius:8px;background:#edf3e8}.guide-link:hover{background:#e1ebdc}.welcome-footer a{color:inherit;text-underline-offset:3px}

.membership-plans{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:22px 0}.membership-plan{display:flex;flex-direction:column;align-items:flex-start;gap:8px;border:1px solid var(--line);border-radius:12px;padding:18px 14px;background:#f8faf6;min-width:0}.membership-plan>span,.membership-plan>small{font-size:12px;color:var(--muted)}.membership-plan>strong{font:600 30px Georgia,serif}.membership-plan>p{font-size:14px;margin:4px 0 10px}.membership-plan>button,.membership-plan>small{margin-top:auto}.membership-plan>button{font-size:12px}@media(max-width:800px){.membership-plans{grid-template-columns:repeat(2,minmax(0,1fr))}}

.start-genealogy{padding:36px;border:1px solid var(--line);border-radius:18px;background:#fff}.start-genealogy h2{font:600 clamp(24px,3vw,36px)/1.35 Georgia,"Songti SC",serif;margin:12px 0 16px}.start-intro{max-width:620px;color:var(--muted);font-size:17px;line-height:1.8}.start-genealogy>.primary{margin:12px 0;font-size:17px;padding:15px 26px}.start-note{color:var(--muted);font-size:13px}.start-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin:30px 0 0;padding:24px 0 0;list-style:none;border-top:1px solid var(--line);counter-reset:start}.start-steps li{counter-increment:start}.start-steps li:before{content:counter(start,decimal-leading-zero);display:block;color:var(--muted);font-size:13px;margin-bottom:8px}.start-steps strong,.start-steps span{display:block}.start-steps span{margin-top:8px;font-size:14px;color:var(--muted);line-height:1.7}.account-entry-links{margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}
@media(max-width:600px){.start-genealogy{padding:24px 20px}.start-steps{grid-template-columns:1fr;gap:20px;margin-top:24px}.start-genealogy>.primary{width:100%}.account-entry-links{gap:8px}.account-entry-links .secondary{font-size:13px;padding:10px 12px}}
.admin-nav-group{border-top:1px solid #ffffff26;padding-top:16px;margin-top:20px!important}.admin-entry-section{border-top:1px solid var(--line);margin-top:28px;padding-top:24px}.admin-entry-section h2{font-size:18px;margin-bottom:14px}.admin-entry-section .toolbar{display:flex;gap:10px;flex-wrap:wrap}.mobile-more-menu .admin-nav-group{display:grid;grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;border-top:1px solid var(--line);padding-top:12px;margin-top:12px!important}
.import-dropzone{border:2px dashed #b8cdb6;border-radius:14px;background:#f7faf4;padding:24px;margin:20px 0 12px;transition:background .15s,border-color .15s}.import-dropzone>strong{display:block;font-size:18px;color:var(--forest)}.import-dropzone>p{margin:8px 0 16px}.import-dropzone.drag-over{border-color:var(--forest);background:#e7f1e2}.import-dropzone[aria-busy=true]{opacity:.7}.import-dropzone #import-selected-file{margin:14px 0 0;overflow-wrap:anywhere}@media(max-width:600px){.import-dropzone{padding:18px}}

.node .node-remarks{font-size:12px;fill:#405a48;font-weight:400}.person-remarks{white-space:pre-wrap;overflow-wrap:anywhere}.person-tooltip-rows dd{white-space:pre-wrap;overflow-wrap:anywhere}

.node-adoption-reference>rect{fill:#f7f1e2;stroke:#b7a67e;stroke-width:.8}.node .node-adoption-reference text{fill:#5b4726;font-size:11px;font-weight:400}.node-adoption-reference[data-adoption-target]{cursor:pointer}.node-adoption-reference[data-adoption-target]:hover>rect,.node-adoption-reference[data-adoption-target]:focus-visible>rect{fill:#eee3c8;stroke:#785d29;stroke-width:1.5}

.node.parent-drop-target>rect{stroke:#9b6b18;stroke-width:4;fill:#fff4d8}.node.reordering{pointer-events:none}

/* Relationship review keeps the actions visible on small screens. */
#modal:has(#parent-link-form){width:min(96vw,700px);max-height:92dvh;overflow:hidden}
#modal-body:has(#parent-link-form){display:flex;flex-direction:column;height:min(850px,92dvh);max-height:92dvh;box-sizing:border-box;overflow:hidden;padding:20px}
#modal-body:has(#parent-link-form)>h2{flex:none;margin:0 0 12px;font-size:23px}
#modal-body #parent-link-form{display:flex;flex-direction:column;min-height:0;gap:0;flex:1}
.parent-link-scroll{overflow:auto;min-height:0;display:grid;gap:14px;padding:0 4px 16px;overscroll-behavior:contain}
.parent-link-scroll p{margin:0}.parent-link-footer{flex:none;background:white;border-top:1px solid var(--line);padding-top:10px}
.parent-link-footer p{font-size:13px;line-height:1.5;margin:0 0 5px}.parent-link-footer .modal-actions{margin:0;padding-top:8px;border:0}
.parent-link-footer button{min-height:44px}.person-choice-preview:not(:empty){background:#f1f6ee;border:1px solid #cbdac7;border-radius:10px;padding:12px;overflow-wrap:anywhere}
.person-choice-preview p{margin:6px 0}.person-choice-preview small{display:block;color:#506252}
.search-results small,.person-row small{white-space:normal;line-height:1.5;overflow-wrap:anywhere}.canvas-legend i.unknown{border-style:dotted}
@media(max-width:600px){#modal-body:has(#parent-link-form){padding:16px}.parent-link-footer .modal-actions>button{flex:1}.parent-link-footer p{font-size:12px}}

.parent-link-footer #parent-link-summary{max-height:22dvh;overflow:auto}.parent-link-footer [data-error]{max-height:12dvh;overflow:auto}
.import-help{margin-top:18px}.import-help>summary{font-weight:700;color:#214e39;padding:12px 0;cursor:pointer}.backup-clear{margin:24px 0;padding:14px;border:1px solid #ddd6c9;border-radius:10px}.backup-clear>summary{cursor:pointer;font-weight:600}

.canvas-wrap .tree-tools>button{width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere}

.canvas-sidebar-content>.family-settings{margin:0;padding:8px 12px;border-bottom:1px solid var(--line)}

/* Main navigation folds independently of the canvas tools. */
.main-navigation-toggle{display:none}
@media(min-width:821px){
  .app-shell{position:relative}
  .app-shell>.sidebar .sidebar-brand{padding-right:36px}
  .main-navigation-toggle{display:grid;place-items:center;position:absolute;top:22px;left:200px;width:36px;height:36px;padding:0;border:1px solid #ffffff42;border-radius:9px;background:#173e2d;color:#fff;z-index:20;cursor:pointer;font-size:30px;line-height:1}
  .main-navigation-toggle:hover{background:#28583f}
  .main-navigation-toggle:focus-visible{outline:3px solid #c6a75d;outline-offset:3px}
  .app-shell.main-navigation-collapsed{grid-template-columns:44px minmax(0,1fr)}
  .app-shell.main-navigation-collapsed>.sidebar{display:none}
  .app-shell.main-navigation-collapsed>.main{grid-column:2;grid-row:1;min-width:0}
  .main-navigation-collapsed>.main-navigation-toggle{left:4px;border-color:#c4d3c5;background:#edf3e9;color:#183f30}
}
@media(min-width:821px) and (max-width:1080px){.app-shell:not(.main-navigation-collapsed)>.main-navigation-toggle{left:154px}}

.relative-type-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.relative-type-options>button{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;min-height:82px;padding:12px;white-space:normal}
.relative-type-options strong{font-size:14px}.relative-type-options small{font-size:11px;line-height:1.6;font-weight:400;color:var(--muted)}
.relative-type-options>button:disabled{opacity:.6;cursor:not-allowed}
.relative-existing{display:block;width:100%;text-align:left;margin:12px 0;padding:10px 4px;white-space:normal}.relative-existing span{display:block;font-size:11px;color:var(--muted);margin-top:4px}
@media(max-width:360px){.relative-type-options{grid-template-columns:1fr}}

.canvas-context-menu{position:fixed;inset:auto;margin:0;padding:10px;width:min(240px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow:auto;overscroll-behavior:contain;border:1px solid #cbd9c6;border-radius:12px;background:#fff;box-shadow:0 12px 42px #173d2d38;color:var(--ink)}
.canvas-context-menu section+section{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.canvas-context-heading{display:block;font-size:11px;color:var(--muted);padding:4px 8px;overflow-wrap:anywhere}
.canvas-context-menu section>div{display:grid;grid-template-columns:1fr;gap:3px}.canvas-context-menu button{border:0;border-radius:6px;padding:9px 10px;text-align:left;background:transparent;color:var(--ink);font-size:13px;min-height:36px;white-space:normal}
.canvas-context-menu button:hover,.canvas-context-menu button:focus-visible{background:#edf4e8;outline:2px solid #638466;outline-offset:-2px}.canvas-context-menu button:disabled{opacity:.45;cursor:not-allowed}.canvas-context-menu [aria-checked=true]::before{content:'✓ ';color:#28643b}
.canvas-menu-search-results{display:grid;gap:8px;margin:14px 0}.canvas-menu-search-results button{text-align:left;white-space:normal}.canvas-menu-search-results small{display:block;overflow-wrap:anywhere}
@media(max-width:600px){.phone-canvas .node.focus [data-add-child]{display:inline}}

.person-migration{border:1px solid #d4ddce;border-radius:10px;padding:12px;margin:12px 0}.person-migration>summary{cursor:pointer;color:#345a42;font-weight:600}.person-migration .check-line{display:flex;align-items:center;gap:8px;margin:12px 0}.person-migration input[type=checkbox]{width:18px;height:18px;flex:none}.person-migration [data-migration-fields]{display:grid;gap:10px}.person-migration [hidden]{display:none!important}.person-migration small{display:block;color:var(--muted);font-size:11px;margin-top:10px}.person-migration-summary{padding:10px;background:#edf3e9;border-radius:8px;margin:12px 0;overflow-wrap:anywhere}.person-migration-summary p{margin:6px 0 0;font-size:12px;white-space:pre-wrap}.node .node-migration rect{fill:#edf3e9;stroke:#a6bba0;stroke-width:.7;filter:none}.node .node-migration text{fill:#3c6043;font-size:11px;font-weight:500}

/* Keep person profile actions visible while its fields scroll. */
#modal-body:has(.person-form){display:flex;flex-direction:column;max-height:90dvh;overflow:hidden}
#modal-body:has(.person-form)>.modal-head{flex:none}
#modal-body form.person-form{display:block;min-height:0;overflow-y:auto;scroll-padding-top:80px}
.person-form>*+*{margin-top:16px}
.person-form>.modal-actions{position:sticky;top:0;z-index:3;margin:0 0 16px;padding:0 0 14px;border-top:0;border-bottom:1px solid var(--line);background:#fff}
@media(max-width:600px){.person-form>.modal-actions>button{flex:1;min-height:44px}}

.canvas-color-fields{display:grid;gap:12px;margin:20px 0}.canvas-color-field{display:grid;grid-template-columns:minmax(0,1fr) 54px 78px;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:10px}.canvas-color-field .canvas-color-toggle{display:flex;align-items:center;gap:8px;margin:0}.canvas-color-toggle input{width:18px;height:18px;accent-color:var(--forest)}.canvas-color-field input[type=color]{width:54px;height:36px;padding:3px;cursor:pointer}.canvas-color-field input:disabled{opacity:.4;cursor:default}.canvas-color-field output{font:12px monospace;color:var(--muted)}.canvas-color-preview{background:#f3f6ef;border-radius:12px;padding:12px}.canvas-color-preview svg{display:block;width:100%;height:90px}.canvas-color-editor>p{line-height:1.7}.canvas-color-editor .modal-actions{flex-wrap:wrap}@media(max-width:600px){.canvas-color-field{gap:8px;padding:10px;grid-template-columns:minmax(0,1fr) 48px 65px}.canvas-color-field input[type=color]{width:48px}.canvas-color-editor .modal-actions button{min-height:44px}}

/* Keep explicit branch colors visible during ancestor highlighting. */
.node[data-custom-color],.relation-line[data-custom-color]{opacity:1!important}
.node[data-color-border]>rect{stroke:var(--person-border)!important}
.node[data-color-text]>text,.node[data-color-text] .node-migration text,.node[data-color-text] .node-adoption-reference text{fill:var(--person-text)!important}
.canvas-line-width-controls{border:1px solid var(--line);border-radius:10px;margin:12px 0;padding:12px;min-width:0}.canvas-line-width-controls legend{font-weight:600;font-size:13px}.canvas-line-width-inputs{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.canvas-line-width-inputs>input[type=range]{flex:1;min-width:100px;width:auto;padding:0;accent-color:var(--forest)}.canvas-line-width-inputs>label,.canvas-color-field .canvas-width-number{display:flex;align-items:center;gap:5px;margin:0;font-size:12px}.canvas-line-width-inputs input[type=number],.canvas-color-field .canvas-width-number input{width:70px;padding:7px 5px;font-size:14px}.canvas-line-width-controls small{display:block;margin-top:9px;line-height:1.6;color:var(--muted)}.canvas-color-field.canvas-width-field{grid-template-columns:minmax(0,1fr) auto}.canvas-width-field>input[type=range]{grid-column:1/-1;width:100%;padding:0;accent-color:var(--forest)}.canvas-color-preview svg{height:110px}.canvas-color-editor .canvas-color-fields{gap:8px;margin:14px 0}.canvas-color-editor .canvas-color-field{padding:10px}.canvas-color-editor .small-text{margin:8px 0;line-height:1.6}
@media(max-width:600px){.canvas-color-editor h2{font-size:24px;margin:0 0 12px}.canvas-color-editor>p{font-size:14px;line-height:1.6;margin:10px 0}.canvas-color-editor .canvas-color-fields{margin:10px 0;gap:6px}.canvas-color-editor .canvas-color-field{padding:8px}.canvas-color-editor .canvas-color-preview{padding:6px}.canvas-color-editor .canvas-color-preview svg{height:88px}.canvas-color-editor .small-text{font-size:11px}.canvas-color-editor .modal-actions{margin-top:8px}.canvas-width-field>input[type=range]{min-height:28px}}

.adoption-reference-card>rect{fill:#f7f9f5;stroke:#a9b8aa;stroke-dasharray:4 5}.adoption-reference-card .node-name{opacity:.65}.adoption-reference-card .node-rank,.adoption-reference-card .adoption-reference-note{fill:#788878;font-size:11px;font-weight:400}.adoption-reference-line{stroke:#a9b8aa;stroke-dasharray:4 5}
