:root{--color-bg:#f6f1e7;--color-bg-deep:#efe7d8;--color-surface:#fffdf8;--color-text:#2b261f;--color-muted:#776e60;--color-border:#e3d9c7;--color-border-strong:#cfc2aa;--color-primary:#2f5d50;--color-primary-hover:#234a3f;--color-primary-soft:#2f5d5017;--color-accent:#b8893b;--color-accent-soft:#b8893b24;--color-primary-deep:#1b3a31;--color-on-primary:#f6f1e7;--color-accent-bright:#e0b862;--color-danger:#b3261e;--male-bg:#e1eaf2;--male-fg:#3f6489;--female-bg:#f5e4e9;--female-fg:#94475f;--unknown-bg:#ece6da;--unknown-fg:#6f675a;--sky-top:#e3eee9;--sky-bottom:#f7f1e4;--soil-top:#d8c39e;--soil-mid:#c9ae84;--soil-deep:#a98a63;--grass:#7fa35f;--bark-light:#9a7652;--bark-dark:#6b4f35;--root:#7d5d3f;--branch:#7a5a3c;--leaf:#6f9a52;--leaf-dark:#4d7838;--canopy-light:#cfe3bd;--canopy-dark:#a9cc92;--radius:10px;--radius-lg:16px;--shadow-sm:0 1px 2px #3b2f1e0f;--shadow-md:0 6px 20px #3b2f1e14, 0 1px 3px #3b2f1e0f;--header-height:4.25rem;--focus-transition:.9s;--focus-ease:cubic-bezier(.65, 0, .35, 1);--font-body:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif;font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);line-height:1.5}*,:before,:after{box-sizing:border-box}body{margin:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:.01em;font-weight:600}a{color:var(--color-primary)}.muted{color:var(--color-muted)}button{font:inherit;border:1px solid var(--color-primary);border-radius:var(--radius);background:var(--color-primary);color:#fff;cursor:pointer;justify-content:center;align-items:center;gap:.45rem;padding:.6rem 1.05rem;font-weight:500;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}button:hover:not(:disabled){background:var(--color-primary-hover)}button:not(.icon-button,.link-button,.choice,.relative-item-main):active:not(:disabled){transform:translateY(1px)}.button-sm{padding:.4rem .75rem;font-size:.9rem}.button-danger-solid{background:var(--color-danger);border-color:var(--color-danger)}.button-danger-solid:hover:not(:disabled){background:#8f1e18}.button-ghost-danger{color:var(--color-danger);background:0 0;border-color:#0000}.button-ghost-danger:hover:not(:disabled){background:#b3261e14}.footer-end{margin-left:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button:disabled{opacity:.55;cursor:default}.button-secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-primary)}.button-secondary:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary)}.button-danger{color:var(--color-danger);background:0 0;border-color:#b3261e73}.button-danger:hover:not(:disabled){border-color:var(--color-danger);background:#b3261e12}.button-link{border-radius:var(--radius);background:var(--color-primary);color:#fff;padding:.55rem 1rem;text-decoration:none;transition:background-color .15s;display:inline-block}.button-secondary-link{border:1px solid var(--color-border-strong);border-radius:var(--radius);background:var(--color-surface);color:var(--color-primary);align-items:center;gap:.4rem;padding:.55rem 1rem;font-weight:500;text-decoration:none;display:inline-flex}.button-secondary-link:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.button-link{align-items:center;gap:.4rem;display:inline-flex}.button-link:hover{background:var(--color-primary-hover)}.icon-button{width:2.1rem;height:2.1rem;color:var(--color-muted);background:0 0;border:1px solid #0000;border-radius:50%;place-items:center;padding:0;font-size:1.3rem;line-height:1;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--color-bg-deep);color:var(--color-text)}.icon-button--danger:hover:not(:disabled){color:var(--color-danger);background:#b3261e14}.link-button{color:var(--color-primary);text-underline-offset:3px;background:0 0;border:none;padding:0;-webkit-text-decoration:underline #2f5d5059;text-decoration:underline #2f5d5059}.link-button:hover:not(:disabled){background:0 0;text-decoration-color:currentColor}input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],select,textarea{width:100%;font:inherit;border:1px solid var(--color-border-strong);border-radius:var(--radius);color:var(--color-text);background:#fffefb;padding:.6rem .75rem;transition:border-color .15s,box-shadow .15s;box-shadow:inset 0 1px 2px #3b2f1e0a}input:hover,select:hover,textarea:hover{border-color:var(--color-muted)}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);background:#fff;outline:none}input::placeholder,textarea::placeholder{color:#b0a691}textarea{resize:vertical;line-height:1.5}button:focus-visible,a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.field{flex-direction:column;gap:.3rem;display:flex}.field label{font-size:.92rem;font-weight:500}.field-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.field-error,.form-message{color:var(--color-danger);margin:0;font-size:.9rem}.form-message{border-radius:var(--radius);background:#b3261e12;padding:.6rem .8rem}.checkbox{align-items:center;gap:.5rem;display:flex}.field-hint{color:var(--color-muted);margin:.25rem 0 0;font-size:.82rem}.form-success{border-radius:var(--radius);background:var(--color-primary-soft);color:var(--color-primary);margin:0;padding:.6rem .8rem;font-size:.9rem}.auth-forgot{font-size:.9rem}.date-fields{border:none;flex-direction:column;gap:.4rem;margin:0;padding:0;display:flex}.date-fields legend{margin-bottom:.3rem;font-size:.92rem;font-weight:500}.date-fields{gap:.6rem}.date-fields-row{grid-template-columns:.8fr 1.4fr 1fr;gap:.5rem;display:grid}.date-part{flex-direction:column;gap:.2rem;display:flex}.date-part>span{letter-spacing:.04em;color:var(--color-muted);text-transform:uppercase;font-size:.75rem;font-weight:600}.input-with-icon{display:block;position:relative}.input-with-icon .app-icon{color:var(--color-muted);pointer-events:none;position:absolute;top:50%;left:.7rem;transform:translateY(-50%)}.input-with-icon input{padding-left:2.1rem}.actions{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.badge{background:var(--color-accent-soft);color:#8a6526;border-radius:999px;padding:.1rem .6rem;font-size:.8rem;font-weight:500;display:inline-block}.badge--muted{background:var(--color-bg-deep);color:var(--color-muted)}.confirm{border-radius:var(--radius);background:#b3261e0a;border:1px solid #b3261e59;margin-top:1rem;padding:.85rem}.confirm p{margin:0}.brand-mark{align-items:center;gap:.55rem;display:inline-flex}.brand-mark-icon{flex:none;width:2rem;height:2rem}.brand-mark-disc{fill:var(--color-primary)}.brand-mark-branches{fill:none;stroke:#f6f1e7;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.brand-mark-leaf{fill:#f6f1e7}.brand-mark-leaf--accent{fill:#e0b862}.brand-mark-name{font-family:var(--font-display);letter-spacing:.02em;color:var(--color-text);font-size:1.3rem;font-weight:600}.app-header{z-index:2;box-sizing:border-box;height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm);align-items:center;gap:1.5rem;padding:0 1.5rem;display:flex;position:relative}.app-header-brand{text-decoration:none}.app-header-link{color:var(--color-muted);font-weight:500;text-decoration:none}.app-header-link:hover,.app-header-link.router-link-exact-active{color:var(--color-primary)}.app-header-user{color:var(--color-muted);margin-left:auto}.verify-chip{background:var(--color-accent-soft);color:#7a5a22;white-space:nowrap;text-overflow:ellipsis;border:1px solid #b8893b73;border-radius:999px;align-items:center;gap:.35rem;min-width:0;max-width:22rem;margin-left:auto;padding:.3rem .7rem;font-size:.82rem;display:inline-flex;overflow:hidden}.verify-chip:hover:not(:disabled){background:#b8893b38}.verify-chip+.app-header-user{margin-left:0}.page{padding:2rem 1.5rem}.auth-switch{text-align:center;color:var(--color-muted);margin:0}.trees-page{max-width:68rem;margin:0 auto;padding-top:2.5rem;padding-bottom:3rem}.trees-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 1.5rem;margin-bottom:1.75rem;animation:.45s ease-out both auth-form-in;display:flex}.trees-header h1{margin:.15rem 0 0;font-size:clamp(1.8rem,3vw,2.3rem);line-height:1.15}.trees-overview{margin:.35rem 0 0}.trees-header-actions{flex-wrap:wrap;gap:.6rem;display:flex}.trees-header-actions a{border-radius:12px;padding:.65rem 1.1rem;font-weight:500}.trees-error{flex-direction:column;align-items:flex-start;gap:.75rem;display:flex}.tree-grid{grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));align-items:start;gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.tree-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;transition:box-shadow .2s,transform .2s,border-color .2s;animation:.45s ease-out both auth-form-in;display:flex;overflow:hidden}.tree-card:nth-child(2){animation-delay:60ms}.tree-card:nth-child(n+3){animation-delay:.12s}.tree-card:hover:not(.tree-card--editing){border-color:var(--color-border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.tree-card-cover{background:radial-gradient(circle at 50% 120%, color-mix(in srgb, var(--canopy-dark) 55%, transparent), transparent 60%), linear-gradient(180deg, var(--sky-top), var(--sky-bottom));border-bottom:1px solid var(--color-border);place-items:center;height:7rem;text-decoration:none;display:grid;position:relative}.tree-card-scene{width:100%;height:100%;position:absolute;inset:0}.tree-card-soil{fill:color-mix(in srgb, var(--soil-top) 55%, transparent)}.tree-card-roots{fill:none;stroke:var(--root);stroke-width:2px;stroke-linecap:round;opacity:.55}.tree-card-avatar{box-shadow:0 0 0 4px var(--color-surface), var(--shadow-md);transition:transform .25s;position:relative}.tree-card:hover .tree-card-avatar{transform:scale(1.05)}.tree-card-body{flex-direction:column;gap:.35rem;padding:1rem 1.25rem .75rem;display:flex}.tree-card-badges{flex-wrap:wrap;gap:.35rem;display:flex}.tree-card-badges .badge{align-items:center;gap:.3rem;display:inline-flex}.tree-role--owner{background:var(--color-primary-soft);color:var(--color-primary)}.tree-card-name{font-family:var(--font-display);color:var(--color-text);overflow-wrap:anywhere;font-size:1.35rem;font-weight:600;line-height:1.2;text-decoration:none}:is(.tree-card-name:hover,.tree-card:has(.tree-card-cover:hover) .tree-card-name){color:var(--color-primary)}.tree-card-summary{align-items:center;gap:.4rem;margin:0;font-size:.9rem;display:flex}.tree-card-summary .app-icon{flex:none}.tree-card-actions{border-top:1px solid var(--color-border);background:color-mix(in srgb, var(--color-bg) 45%, var(--color-surface));align-items:center;gap:.5rem;margin-top:auto;padding:.5rem .75rem;display:flex}.tree-card-tools{flex-wrap:wrap;gap:.15rem;width:100%;display:flex}.tree-card-tools .button-ghost-danger{margin-left:auto}.button-ghost{color:var(--color-muted);background:0 0;border-color:#0000}.button-ghost:hover:not(:disabled){background:var(--color-primary-soft);color:var(--color-primary)}.tree-card .inline-editor,.tree-card .confirm{margin:0 1.25rem 1.25rem}.tree-add-link{box-sizing:border-box;border:2px dashed var(--color-border-strong);border-radius:var(--radius-lg);height:100%;min-height:14rem;color:var(--color-text);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;padding:1.5rem;text-decoration:none;transition:border-color .2s,background-color .2s;display:flex}.tree-add-link:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.tree-add-link .muted{font-size:.88rem}.tree-add-icon{background:var(--color-primary);width:3rem;height:3rem;color:var(--color-on-primary);border-radius:50%;place-items:center;margin-bottom:.25rem;transition:transform .2s;display:inline-grid}.tree-add-link:hover .tree-add-icon{transform:rotate(90deg)}.tree-skeleton{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);flex-direction:column;gap:.75rem;padding-bottom:1.25rem;display:flex;overflow:hidden}.tree-skeleton-cover,.tree-skeleton-line{background:linear-gradient(90deg, var(--color-bg-deep) 25%, var(--color-bg) 50%, var(--color-bg-deep) 75%);background-size:200% 100%;animation:1.4s linear infinite shimmer;display:block}.tree-skeleton-cover{height:7rem}.tree-skeleton-line{border-radius:6px;height:.9rem;margin:0 1.25rem}.tree-skeleton-line--short{width:45%}@keyframes shimmer{to{background-position:-200% 0}}@media (width<=640px){.trees-page{padding-top:1.5rem}.trees-header-actions{width:100%}.trees-header-actions a{white-space:nowrap;flex:1;justify-content:center;padding-inline:.75rem;font-size:.92rem}.tree-grid{grid-template-columns:1fr}.tree-add-link{min-height:8rem}}@media (prefers-reduced-motion:reduce){.trees-header,.tree-card,.tree-skeleton-cover,.tree-skeleton-line{animation:none}}.tree-page{height:calc(100dvh - var(--header-height));flex-direction:column;display:flex}.tree-toolbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:center;gap:.6rem;padding:.85rem 1.5rem;display:flex}.tree-title{margin:0;font-size:1.45rem;line-height:1.2}.toolbar-end{margin-left:auto}.tree-heading{flex:16rem;min-width:0}.tree-toolbar>button{white-space:nowrap}.tree-subtitle{color:var(--color-muted);margin:.1rem 0 0;font-size:.9rem}.tree-subtitle strong{color:var(--color-text);font-weight:600}.tree-workspace{flex:1;min-height:0;display:flex;position:relative}.family-tree{background:linear-gradient(var(--sky-top), var(--sky-bottom) 75%);flex:1;min-width:0;position:relative}.family-tree-canvas{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.family-tree-canvas:active{cursor:grabbing}.tree-soil-top{stop-color:var(--soil-top)}.tree-soil-mid{stop-color:var(--soil-mid)}.tree-soil-deep{stop-color:var(--soil-deep)}.tree-soil-speck{fill:#5a42282e}.tree-grass{fill:none;stroke:var(--grass);stroke-width:6px;stroke-linecap:round}.tree-canopy-light{stop-color:var(--canopy-light)}.tree-canopy-dark{stop-color:var(--canopy-dark)}.tree-canopy{opacity:.75;animation:.8s ease-out both tree-fade-in}.tree-canopy ellipse,.tree-canopy circle{transition:cx var(--focus-transition) var(--focus-ease), cy var(--focus-transition) var(--focus-ease), r var(--focus-transition) var(--focus-ease), rx var(--focus-transition) var(--focus-ease), ry var(--focus-transition) var(--focus-ease)}.tree-bark-light{stop-color:var(--bark-light)}.tree-bark-dark{stop-color:var(--bark-dark)}.tree-generation-label{transition:transform var(--focus-transition) var(--focus-ease);dominant-baseline:middle;fill:#5d6f56;letter-spacing:.14em;text-transform:uppercase;font-size:12px;font-weight:700}.tree-generation-label--underground{fill:#5a4126}.tree-generation-label--focus{fill:#8a6526}.tree-trunk{stroke:var(--bark-dark);stroke-width:1px;animation:.6s ease-out .5s both tree-fade-in}.tree-link{fill:none;stroke-linecap:round;animation:.6s ease-out .6s both tree-fade-in}.tree-link--branch{stroke:var(--branch)}.tree-link--root{stroke:var(--root)}.tree-link--dashed{stroke-dasharray:7 6}.tree-link--ghost{stroke:#7a5a3c73;stroke-dasharray:3 6}.tree-rootlet{fill:none;stroke:var(--root);stroke-width:2.5px;stroke-linecap:round;opacity:.55;animation:.6s ease-out .7s both tree-fade-in}.tree-leaf{transform-box:fill-box;transform-origin:0;animation:.6s ease-out .8s both tree-fade-in,3.2s ease-in-out 1.4s infinite alternate leaf-sway}.tree-leaf-blade{fill:var(--leaf);stroke:var(--leaf-dark);stroke-width:.8px}.tree-leaf-rib{fill:none;stroke:var(--leaf-dark);stroke-width:.8px;opacity:.7}@keyframes leaf-sway{0%{transform:rotate(-7deg)}to{transform:rotate(7deg)}}.tree-union{animation:.6s ease-out .65s both tree-fade-in}.tree-union-line{fill:none;stroke:var(--color-accent);stroke-width:2.5px;stroke-linecap:round}.tree-union-badge{fill:var(--color-surface);stroke:var(--color-accent);stroke-width:1.5px}.tree-union-ring{fill:none;stroke:var(--color-accent);stroke-width:1.6px}.tree-union--ended .tree-union-line{stroke:#b3a68e;stroke-dasharray:5 5}.tree-union--ended .tree-union-badge,.tree-union--ended .tree-union-ring{stroke:#b3a68e}.tree-node{cursor:pointer;transition:transform var(--focus-transition) var(--focus-ease);outline:none;animation:.6s ease-out .3s both tree-fade-in}.tree-node-box{fill:var(--color-surface);stroke:var(--color-border);stroke-width:1.5px;transition:stroke .15s,fill .15s}.tree-node--male .tree-node-box{stroke:#c3d3e2}.tree-node--female .tree-node-box{stroke:#e7c6d0}.tree-node:hover .tree-node-box{stroke:var(--color-primary)}.tree-node--selected .tree-node-box,.tree-node:focus-visible .tree-node-box{stroke:var(--color-primary);stroke-width:2.5px}.tree-node-ring{fill:none;stroke:var(--color-accent);stroke-width:2.5px}.tree-node--focus .tree-node-box{fill:#fffaf0}.tree-avatar{fill:var(--unknown-bg)}.tree-avatar-initials{dominant-baseline:central;text-anchor:middle;fill:var(--unknown-fg);font-family:var(--font-display);font-size:16px;font-weight:600}.tree-node--male .tree-avatar{fill:var(--male-bg)}.tree-node--male .tree-avatar-initials{fill:var(--male-fg)}.tree-node--female .tree-avatar{fill:var(--female-bg)}.tree-node--female .tree-avatar-initials{fill:var(--female-fg)}.tree-node--focus .tree-avatar{stroke:var(--color-accent);stroke-width:2px}.tree-node--deceased .tree-avatar,.tree-node--deceased .tree-avatar-initials{opacity:.6}.tree-node--deceased .tree-avatar-photo{filter:grayscale(.6)}.tree-node--deceased .tree-node-name{color:#4f483d}.tree-node--underground .tree-node-box{fill:#fffaf1}.tree-node--placeholder .tree-node-box,.tree-node--duplicate .tree-node-box{stroke-dasharray:6 4}.tree-node-content{flex-direction:column;justify-content:center;height:100%;line-height:1.25;display:flex}.tree-node-name{text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-display);color:var(--color-text);font-size:15.5px;font-weight:600;overflow:hidden}.tree-node-years{color:var(--color-muted);font-variant-numeric:tabular-nums;margin-top:2px;font-size:12.5px}.tree-node-more circle{fill:var(--color-surface);stroke:var(--color-border-strong);stroke-width:1.2px}.tree-node-more path{fill:none;stroke:var(--color-muted);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.tree-node--ghost .tree-node-box{fill:#fffdf88c;stroke:var(--color-border-strong);stroke-dasharray:6 5}.tree-ghost-icon{fill:var(--color-primary-soft);transition:fill .15s}.tree-ghost-plus{stroke:var(--color-primary);stroke-width:2px;stroke-linecap:round}.tree-ghost-label{dominant-baseline:middle;fill:var(--color-muted);font-size:14px;font-weight:500}.tree-node--ghost:hover .tree-node-box,.tree-node--ghost:focus-visible .tree-node-box{fill:var(--color-surface);stroke:var(--color-primary)}.tree-node--ghost:hover .tree-ghost-icon{fill:#2f5d502e}.tree-node--ghost:hover .tree-ghost-label{fill:var(--color-primary)}.family-tree-controls{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-md);border-radius:999px;align-items:center;gap:.15rem;padding:.3rem;display:flex;position:absolute;bottom:1.25rem;right:1.25rem}.family-tree-controls button{min-width:2.3rem;height:2.3rem;color:var(--color-primary);background:0 0;border:none;border-radius:999px;padding:0 .6rem;font-size:1.15rem}.family-tree-controls button:hover:not(:disabled){background:var(--color-primary-soft)}.family-tree-controls .family-tree-controls-text{font-size:.9rem;font-weight:500}.family-tree-controls-divider{background:var(--color-border);width:1px;height:1.3rem}@keyframes tree-fade-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.tree-node,.tree-link,.tree-union,.tree-leaf,.tree-rootlet,.tree-trunk,.tree-canopy,.tree-canopy ellipse,.tree-canopy circle,.tree-generation-label,.tree-card{transition:none;animation:none}}.choice-group{border:none;flex-direction:column;gap:.4rem;min-width:0;margin:0;padding:0;display:flex;position:relative}.choice-group legend{margin-bottom:.35rem;padding:0;font-size:.92rem;font-weight:500}.choice-group-options{flex-wrap:wrap;gap:.4rem;display:flex}.choice{cursor:pointer;position:relative}.choice-input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.choice-label{border:1px solid var(--color-border-strong);color:var(--color-text);background:#fffefb;border-radius:999px;align-items:center;padding:.45rem .85rem;font-size:.92rem;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.choice:hover .choice-label{border-color:var(--color-primary);background:var(--color-primary-soft)}.choice-input:checked+.choice-label{border-color:var(--color-primary);background:var(--color-primary);color:#fff;box-shadow:0 2px 6px #2f5d5040}.choice-input:focus-visible+.choice-label{outline:2px solid var(--color-primary);outline-offset:2px}.choice-group--sm .choice-label{padding:.3rem .65rem;font-size:.85rem}.switch{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;align-items:center;gap:.7rem;padding:.75rem .9rem;display:flex;position:relative}.switch-input{opacity:0;position:absolute}.switch-track{background:var(--color-border-strong);border-radius:999px;flex:none;width:2.4rem;height:1.4rem;transition:background-color .2s;position:relative}.switch-thumb{background:#fff;border-radius:50%;width:1.1rem;height:1.1rem;transition:transform .2s;position:absolute;top:.15rem;left:.15rem;box-shadow:0 1px 3px #0003}.switch-input:checked+.switch-track{background:var(--color-primary)}.switch-input:checked+.switch-track .switch-thumb{transform:translate(1rem)}.switch-input:focus-visible+.switch-track{outline:2px solid var(--color-primary);outline-offset:2px}.side-panel{background:var(--color-surface);border-left:1px solid var(--color-border);flex-direction:column;width:26rem;max-width:100%;min-height:0;animation:.25s ease-out panel-in;display:flex;overflow:hidden;box-shadow:-10px 0 30px #3b2f1e14}@keyframes panel-in{0%{opacity:0;transform:translate(14px)}}@media (width<=720px){.side-panel{border-left:none;width:auto;position:absolute;inset:0}}@media (prefers-reduced-motion:reduce){.side-panel{animation:none}}.side-panel-body{flex:1;min-height:0;padding:1.25rem 1.5rem 1.5rem;position:relative;overflow-y:auto}.side-panel-footer{border-top:1px solid var(--color-border);background:#fffdf8f2;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.85rem 1.5rem;display:flex;box-shadow:0 -6px 16px #3b2f1e0d}.panel-hero{text-align:center;background:radial-gradient(circle at 50% -40%, #ffffffb3, transparent 60%), linear-gradient(180deg, var(--unknown-bg), var(--color-surface));border-bottom:1px solid var(--color-border);flex-direction:column;align-items:center;padding:1.6rem 1.5rem 1.2rem;display:flex;position:relative}.panel-hero--male{background:radial-gradient(circle at 50% -40%, #ffffffb3, transparent 60%), linear-gradient(180deg, var(--male-bg), var(--color-surface))}.panel-hero--female{background:radial-gradient(circle at 50% -40%, #ffffffb3, transparent 60%), linear-gradient(180deg, var(--female-bg), var(--color-surface))}.panel-hero--share{background:radial-gradient(circle at 50% -40%, #ffffffb3, transparent 60%), linear-gradient(180deg, var(--color-accent-soft), var(--color-surface))}.panel-hero--history{background:radial-gradient(circle at 50% -40%, #ffffffb3, transparent 60%), linear-gradient(180deg, var(--sky-top), var(--color-surface))}.panel-hero-switch{margin-top:.4rem;font-size:.88rem}.panel-hero--trash{background:radial-gradient(circle at 50% -40%, #ffffffb3, transparent 60%), linear-gradient(180deg, var(--soil-top), var(--color-surface))}.panel-hero--add{background:radial-gradient(circle at 50% -40%, #ffffffb3, transparent 60%), linear-gradient(180deg, var(--canopy-light), var(--color-surface))}.panel-hero h2{margin:.7rem 0 0;font-size:1.5rem;line-height:1.2}.panel-hero-text{flex-direction:column;align-items:center;min-width:0;display:flex}.panel-hero-eyebrow{color:var(--color-primary);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.72rem;font-weight:700}.panel-hero--compact{text-align:left;flex-direction:row;gap:.9rem;padding:1rem 3rem 1rem 1.5rem}.panel-hero--compact .panel-hero-text{align-items:flex-start}.panel-hero--compact .avatar--lg{border-width:2px;width:3.2rem;height:3.2rem;font-size:1.2rem}.panel-hero--compact h2{margin:0;font-size:1.25rem}.panel-close{position:absolute;top:.75rem;right:.75rem}.panel-hero-years{color:var(--color-muted);font-variant-numeric:tabular-nums;margin:.2rem 0 0}.panel-hero-badges{flex-wrap:wrap;justify-content:center;gap:.35rem;margin:.6rem 0 0;display:flex}.panel-hero-badges .badge{align-items:center;gap:.25rem;display:inline-flex}.panel-hero-relation{color:var(--color-muted);flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;margin:.4rem 0 0;display:flex}.person-chip{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:999px;align-items:center;gap:.35rem;padding:.15rem .6rem .15rem .2rem;font-weight:500;display:inline-flex}.avatar{background:var(--unknown-bg);width:3.4rem;height:3.4rem;color:var(--unknown-fg);font-family:var(--font-display);border-radius:50%;flex:none;place-items:center;font-size:1.3rem;font-weight:600;display:inline-grid}.avatar--male{background:var(--male-bg);color:var(--male-fg)}.avatar--female{background:var(--female-bg);color:var(--female-fg)}.avatar--lg{border:3px solid var(--color-surface);width:5rem;height:5rem;box-shadow:0 0 0 2px var(--color-accent), var(--shadow-md);font-size:1.8rem}.avatar--sm{width:2.4rem;height:2.4rem;font-size:.95rem}.avatar--xs{width:1.6rem;height:1.6rem;font-size:.7rem}.avatar--photo{background:var(--color-bg-deep);overflow:hidden}.avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%}.avatar-edit{display:inline-block;position:relative}.avatar-edit--busy{opacity:.55;pointer-events:none}.avatar-edit-button{border:2px solid var(--color-surface);background:var(--color-primary);color:#fff;width:2rem;height:2rem;box-shadow:var(--shadow-sm);cursor:pointer;border-radius:50%;place-items:center;transition:background-color .15s,transform .15s;display:grid;position:absolute;bottom:-.15rem;right:-.15rem}.avatar-edit-button:hover{background:var(--color-primary-hover);transform:scale(1.06)}.avatar-edit-button:focus-within{outline:2px solid var(--color-primary);outline-offset:2px}.avatar--ghost{background:var(--color-surface);color:var(--color-primary)}.facts{grid-template-columns:1fr 1fr;gap:.6rem;margin:0;display:grid}.fact{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);padding:.65rem .8rem}.fact--wide{grid-column:1/-1}.fact dt{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:.35rem;font-size:.75rem;font-weight:600;display:flex}.fact dd{margin:.2rem 0 0;font-weight:500}.fact-place{color:var(--color-muted);align-items:center;gap:.25rem;margin-top:.15rem;font-size:.9rem;font-weight:400;display:flex}.notes{border-left:3px solid var(--color-accent);border-radius:0 var(--radius) var(--radius) 0;background:var(--color-bg);font-family:var(--font-display);white-space:pre-wrap;margin:1rem 0 0;padding:.85rem 1rem;font-size:1.02rem}.hint{border-radius:var(--radius);background:var(--color-accent-soft);color:#6f5524;margin:0 0 1rem;padding:.65rem .85rem;font-size:.9rem}.form-section .hint{margin:0}.panel-section{margin-top:1.4rem}.relatives h3{font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted);align-items:center;gap:.4rem;margin:0 0 .5rem;font-size:.75rem;font-weight:600;display:flex}.count{background:var(--color-bg-deep);letter-spacing:0;border-radius:999px;place-items:center;min-width:1.3rem;height:1.3rem;padding:0 .35rem;font-size:.7rem;display:inline-grid}.relatives ul{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.relative-item{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);align-items:center;transition:border-color .15s,box-shadow .15s;display:flex}.relative-item:hover,.relative-item--editing{border-color:var(--color-border-strong);box-shadow:var(--shadow-sm)}.relative-item-main{border-radius:var(--radius);min-width:0;color:var(--color-text);text-align:left;background:0 0;border:none;flex:1;justify-content:flex-start;gap:.7rem;padding:.5rem .6rem}.relative-item-main:hover:not(:disabled){background:var(--color-primary-soft)}.relative-item-text{flex-direction:column;min-width:0;display:flex}.relative-item-name{text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-display);font-size:1.02rem;font-weight:600;overflow:hidden}.relative-item-meta{text-overflow:ellipsis;white-space:nowrap;color:var(--color-muted);font-size:.82rem;font-weight:400;overflow:hidden}.relative-item-edit{margin-right:.35rem}.side-panel-form,.person-form{flex-direction:column;gap:.9rem;display:flex}.form-section{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);flex-direction:column;gap:.75rem;padding:.95rem 1rem 1.05rem;display:flex}.form-section-title{color:var(--color-primary);align-items:center;gap:.45rem;margin:0;font-size:1.05rem;display:flex}.side-panel-body .side-panel-form{margin:0}.inline-editor{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);flex-direction:column;gap:.75rem;margin:.4rem 0 .6rem;padding:.9rem;animation:.2s ease-out tree-fade-in;display:flex}.inline-editor-group{flex-direction:column;gap:.35rem;display:flex}.inline-editor-label{font-size:.92rem;font-weight:500}.trash-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.trash-item{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);align-items:center;gap:.7rem;padding:.6rem .7rem;display:flex}.trash-item-text{flex-direction:column;flex:1;min-width:0;display:flex}.trash-item-text .relative-item-meta{white-space:normal}.empty-state{text-align:center;color:var(--leaf-dark);flex-direction:column;align-items:center;gap:.25rem;padding:2rem 1rem;display:flex}.empty-state p{color:var(--color-text);margin:0}.empty-state .muted{color:var(--color-muted);font-size:.9rem}.tree-search{width:min(20rem,40vw);position:relative}.tree-search-field input{padding-right:2rem}.tree-search-field input::-webkit-search-cancel-button{cursor:pointer}.tree-search-hint{border:1px solid var(--color-border-strong);background:var(--color-bg);color:var(--color-muted);font-family:var(--font-body);border-radius:5px;padding:0 .4rem;font-size:.75rem;line-height:1.4;position:absolute;top:50%;right:.6rem;transform:translateY(-50%)}.tree-search-popover{z-index:5;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);min-width:18rem;max-height:22rem;box-shadow:var(--shadow-md);padding:.35rem;animation:.15s ease-out tree-fade-in;position:absolute;top:calc(100% + .4rem);left:0;right:0;overflow-y:auto}.tree-search-status{color:var(--color-muted);margin:0;padding:.6rem .7rem;font-size:.9rem}.tree-search-list{margin:0;padding:0;list-style:none}.tree-search-option{border-radius:calc(var(--radius) - 2px);cursor:pointer;align-items:center;gap:.65rem;padding:.45rem .55rem;display:flex}.tree-search-option--active{background:var(--color-primary-soft)}.member-item{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);align-items:center;gap:.7rem;padding:.6rem .7rem;display:flex}.member-text{flex-direction:column;flex:1;gap:.25rem;min-width:0;display:flex}.member-text .badge{font-family:var(--font-body);vertical-align:middle;margin-left:.25rem;font-size:.7rem}.invite-link{border:1px dashed var(--color-primary);border-radius:var(--radius);background:var(--color-primary-soft);grid-template-columns:1fr auto;gap:.5rem;padding:.75rem;animation:.25s ease-out tree-fade-in;display:grid}.invite-link input{font-size:.85rem}.invite-link-note{color:var(--color-muted);grid-column:1/-1;margin:0;font-size:.82rem}.invitation-from{color:var(--color-muted);margin:.35rem 0 0;font-size:1.05rem}.invitation-from strong{color:var(--color-text)}.invitation-ticket{text-align:center;background:radial-gradient(circle at 50% 0%, var(--color-accent-soft), transparent 60%), var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;align-items:center;gap:.75rem;margin-top:1.6rem;padding:2.4rem 1.5rem 1.4rem;display:flex;position:relative}.invitation-ticket:after{content:"";background:linear-gradient(90deg, var(--color-primary), var(--color-accent-bright));border-radius:0 0 4px 4px;height:4px;position:absolute;inset:auto 1.25rem 0}.invitation-ticket h1{overflow-wrap:anywhere;margin:0;font-size:clamp(1.6rem,4vw,2rem);line-height:1.15}.invitation-seal{border:4px solid var(--color-bg);background:linear-gradient(145deg, var(--color-primary), var(--color-primary-deep));width:3.6rem;height:3.6rem;color:var(--color-accent-bright);box-shadow:var(--shadow-md);border-radius:50%;place-items:center;display:grid;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.invitation-role{border-radius:var(--radius);background:var(--color-primary-soft);text-align:left;align-items:flex-start;gap:.65rem;width:100%;padding:.75rem .9rem;display:flex}.invitation-role>span:last-child{flex-direction:column;gap:.1rem;font-size:.92rem;display:flex}.invitation-role-icon{background:var(--color-surface);width:2rem;height:2rem;color:var(--color-primary);border-radius:50%;flex:none;place-items:center;display:grid}.invitation-expires{color:var(--color-muted);align-items:center;gap:.35rem;margin:0;font-size:.85rem;display:inline-flex}.invitation-ticket--off{filter:grayscale(.85);opacity:.75;box-shadow:var(--shadow-sm)}.invitation-off{border:1px solid color-mix(in srgb, var(--color-accent) 35%, var(--color-border));border-radius:var(--radius);background:var(--color-accent-soft);align-items:flex-start;gap:.7rem;padding:.85rem 1rem;display:flex}.invitation-off p{margin:.15rem 0 0}.invitation-off-icon{background:var(--color-surface);width:2rem;height:2rem;color:color-mix(in srgb, var(--color-accent) 70%, var(--color-text));border-radius:50%;flex:none;place-items:center;display:grid}.invitation-note{text-align:center;margin:0;font-size:.85rem}.invitation-note svg{vertical-align:-2px;margin-right:.25rem}.invitation-ticket--loading{gap:.9rem;padding-top:2.8rem}.invitation-skeleton{background:linear-gradient(90deg, var(--color-bg-deep) 25%, var(--color-bg) 50%, var(--color-bg-deep) 75%);background-size:200% 100%;border-radius:999px;animation:1.4s linear infinite shimmer;display:block}.invitation-skeleton--seal{width:3.6rem;height:3.6rem;position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}.invitation-skeleton--line{width:60%;height:.8rem}.invitation-skeleton--title{width:80%;height:1.8rem}.history-link{border:1px dashed var(--color-border-strong);border-radius:var(--radius);width:100%;color:var(--color-muted);background:0 0;justify-content:flex-start;margin-top:1.4rem;padding:.6rem .8rem;font-size:.9rem}.history-link:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.activity-day+.activity-day{margin-top:1.25rem}.activity-day-label{font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted);margin:0 0 .5rem;font-size:.75rem;font-weight:600}.activity-list{margin:0;padding:0;list-style:none;position:relative}.activity-list:before{content:"";background:var(--color-border);width:2px;position:absolute;top:.9rem;bottom:.9rem;left:.9rem}.activity{gap:.75rem;padding:.45rem 0;display:flex;position:relative}.activity-icon{border:2px solid var(--color-surface);background:var(--color-primary-soft);width:1.8rem;height:1.8rem;color:var(--color-primary);border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative}.activity-body{flex:1;min-width:0}.activity-sentence{margin:.1rem 0 0;line-height:1.45}.activity-person{color:var(--color-primary);font:inherit;font-family:var(--font-display);text-underline-offset:2px;background:0 0;border:none;padding:0;font-weight:600;-webkit-text-decoration:underline #2f5d504d;text-decoration:underline #2f5d504d;display:inline}.activity-person:hover:not(:disabled){background:0 0;text-decoration-color:currentColor}.activity-time{color:var(--color-muted);font-variant-numeric:tabular-nums;font-size:.8rem}.activity-details{margin-top:.35rem;font-size:.88rem}.activity-details summary{cursor:pointer;color:var(--color-muted)}.activity-details dl{border-radius:var(--radius);background:var(--color-bg);margin:.4rem 0 0;padding:.5rem .7rem}.activity-change{padding:.2rem 0}.activity-change dt{color:var(--color-muted);font-size:.78rem;font-weight:600}.activity-change dd{margin:0}.activity-before{color:var(--color-muted);-webkit-text-decoration:line-through #776e6080;text-decoration:line-through #776e6080}.activity-after{font-weight:500}.load-more{width:100%;margin-top:1rem}.life-title{font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted);align-items:center;gap:.4rem;margin:0 0 .6rem;font-size:.75rem;font-weight:600;display:flex}.life-empty{margin:0 0 .6rem;font-size:.9rem}.life-list{margin:0;padding:0;list-style:none;position:relative}.life-list:before{content:"";background:linear-gradient(var(--leaf), var(--bark-light));opacity:.45;width:2px;position:absolute;top:1rem;bottom:1rem;left:.95rem}.life-item{align-items:flex-start;gap:.75rem;padding:.4rem 0;display:flex;position:relative}.life-icon{border:2px solid var(--color-surface);background:var(--canopy-light);width:1.9rem;height:1.9rem;color:var(--leaf-dark);border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative}.life-body{flex:1;min-width:0}.life-heading{margin:.15rem 0 0}.life-heading strong{font-family:var(--font-display);font-size:1.02rem}.life-detail{color:var(--color-text)}.life-meta{color:var(--color-muted);align-items:center;gap:.25rem;margin:.05rem 0 0;font-size:.86rem;display:flex}.life-notes{white-space:pre-wrap;margin:.3rem 0 0;font-size:.88rem}.life-add{margin-top:.4rem}.import-page{max-width:40rem;margin:0 auto}.back-link{color:var(--color-muted);margin-bottom:1rem;text-decoration:none;display:inline-block}.back-link:hover{color:var(--color-primary)}.import-card h1{align-items:center;gap:.5rem;margin:0;font-size:1.6rem;display:flex}.file-drop{border:2px dashed var(--color-border-strong);border-radius:var(--radius-lg);background:var(--color-bg);color:var(--color-muted);text-align:center;cursor:pointer;flex-direction:column;align-items:center;gap:.4rem;padding:1.5rem;transition:border-color .15s,background-color .15s;display:flex}.file-drop:hover,.file-drop:focus-within{border-color:var(--color-primary);background:var(--color-primary-soft)}.file-drop--chosen{border-style:solid;border-color:var(--color-primary);color:var(--color-primary)}.import-stats{grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.import-stats li{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);text-align:center;padding:.7rem}.import-stats strong{font-family:var(--font-display);color:var(--color-primary);font-size:1.5rem;display:block}.import-details summary{cursor:pointer;font-weight:500}.import-details ul{max-height:14rem;margin:.4rem 0 0;padding-left:1.2rem;font-size:.9rem;overflow-y:auto}.export-intro{margin:0;font-size:.92rem}.history-link--tight{margin-top:.5rem}.duplicate-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.duplicate-item{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-sm);flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.duplicate-head{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.duplicate-reasons{color:var(--color-muted);font-size:.82rem}.duplicate-person{align-items:center;gap:.6rem;min-width:0;display:flex}.duplicate-item .actions{margin-top:.15rem}.merge-back{margin-bottom:.75rem}.merge-cards{grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:.9rem;display:grid}.merge-card{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);text-align:center;flex-direction:column;align-items:center;gap:.3rem;min-width:0;padding:.8rem .6rem;transition:border-color .2s,box-shadow .2s,opacity .2s;display:flex}.merge-card:not(.merge-card--keep){opacity:.72;border-style:dashed}.merge-card--keep{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.merge-card .relative-item-name,.merge-card .relative-item-meta{overflow-wrap:anywhere;white-space:normal;max-width:100%}.merge-card-label{color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:.75rem;font-weight:600}.merge-card--keep .merge-card-label{color:var(--color-primary)}.merge-rows{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.merge-row{border-bottom:1px solid var(--color-border);flex-direction:column;gap:.2rem;padding:.55rem 0;display:flex}.merge-row:last-child{border-bottom:0}.merge-row-label{color:var(--color-muted);font-size:.8rem}.merge-row-value{overflow-wrap:anywhere}.merge-submit{width:100%;margin-top:1rem}@media (prefers-reduced-motion:reduce){.merge-card{transition:none}}.places-filter{margin-bottom:.5rem}.places-similar-toggle{align-items:center;gap:.4rem;margin-bottom:.75rem;font-size:.9rem;display:inline-flex}.places-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.place-item{border-bottom:1px solid var(--color-border);padding:.55rem 0}.place-item:last-child{border-bottom:0}.place-row{align-items:center;gap:.55rem;display:flex}.place-icon{color:var(--color-accent);flex:none}.place-text{flex-direction:column;flex:1;min-width:0;display:flex}.place-name{overflow-wrap:anywhere}.place-text .relative-item-meta{white-space:normal}.place-similar{color:#8a6526}.place-editor{flex-direction:column;gap:.4rem;margin:.5rem 0 .2rem 1.6rem;display:flex}.place-editor .hint{margin:0}.import-duplicates{border-radius:var(--radius);background:var(--color-accent-soft);color:#6f5220;align-items:flex-start;gap:.6rem;margin:1rem 0;padding:.75rem .9rem;display:flex}.import-duplicates p{margin:0}.import-duplicates .app-icon{flex:none;margin-top:.15rem}.activity-meta{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.activity-undo{align-items:center;gap:.25rem;font-size:.8rem;display:inline-flex}.activity--undone .activity-sentence{color:var(--color-muted)}.activity--undone .activity-icon{opacity:.55}.activity-confirm{flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.4rem;font-size:.88rem;display:flex}.activity-undo-error{margin:.4rem 0 0;font-size:.85rem}.toolbar-badge{background:var(--color-accent);color:#fff;border-radius:999px;place-items:center;min-width:1.15rem;height:1.15rem;padding:0 .3rem;font-size:.72rem;font-weight:700;line-height:1;display:inline-grid}.link-button--danger{color:var(--color-danger);text-decoration-color:#b3261e59}.connections-intro{color:var(--leaf-dark);flex-direction:column;align-items:flex-start;gap:.6rem;display:flex}.connections-intro p,.connections-intro ul{color:var(--color-text);margin:0}.connections-intro ul{flex-direction:column;gap:.35rem;padding-left:1.1rem;font-size:.92rem;display:flex}.connections-title{align-items:center;gap:.4rem;display:flex}.connection-card{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-sm);flex-direction:column;gap:.55rem;margin-bottom:.75rem;padding:.75rem;display:flex}.connection-card--incoming{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.connection-lead,.connection-reasons{margin:0;font-size:.88rem}.connection-reasons{color:var(--color-muted)}.connection-pair{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.connection-side{border-radius:var(--radius);background:var(--color-bg);text-align:center;flex-direction:column;align-items:center;gap:.2rem;min-width:0;padding:.55rem .4rem;display:flex}.connection-side .relative-item-name,.connection-side .relative-item-meta{overflow-wrap:anywhere;white-space:normal;max-width:100%}.connection-label{max-width:100%;color:var(--color-muted);letter-spacing:.03em;overflow-wrap:anywhere;text-transform:uppercase;font-size:.72rem;font-weight:600}.connection-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.connection-row{border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:center;gap:.6rem;padding:.55rem 0;display:flex}.connection-row:last-child{border-bottom:0}.connection-row .relative-item-text{flex:1;min-width:0}.connection-row .relative-item-meta{white-space:normal}.connection-row-actions{gap:.75rem;display:flex}.connection-confirm,.connection-row .form-message{flex-basis:100%}.connections-participation{border-top:1px dashed var(--color-border-strong);flex-direction:column;align-items:flex-start;gap:.4rem;margin-top:1.25rem;padding-top:.9rem;font-size:.88rem;display:flex}.connections-participation p{margin:0}.connected-source{color:var(--color-muted);margin:0 0 .75rem;font-size:.9rem}.connected-mine{margin-bottom:.9rem}.relative-item--living{opacity:.8;align-items:center;gap:.6rem;padding:.45rem .55rem;display:flex}.connected-import{margin-bottom:.9rem}.import-box{border:1px solid var(--color-primary);border-radius:var(--radius);background:var(--color-primary-soft);flex-direction:column;gap:.6rem;margin-bottom:1rem;padding:.85rem;display:flex}.import-box p{margin:0}.import-warning{border-radius:var(--radius);background:var(--color-accent-soft);color:#6f5220;padding:.6rem .7rem;font-size:.9rem}.import-warning ul{flex-direction:column;gap:.4rem;margin:.35rem 0 0;padding:0;list-style:none;display:flex}.import-warning li{flex-direction:column;align-items:flex-start;gap:.15rem;display:flex}.import-ancestors{align-items:center;gap:.45rem;font-size:.92rem;display:inline-flex}.privacy-page{max-width:44rem;margin:0 auto}.privacy-page h1{margin:0 0 1rem;font-size:1.8rem}.privacy-page h2{margin:0 0 .5rem;font-size:1.2rem}.account-page{flex-direction:column;gap:1.25rem;max-width:52rem;margin:0 auto;padding-top:2.5rem;padding-bottom:3rem;display:flex}.account-profile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);animation:.45s ease-out both auth-form-in;overflow:hidden}.account-profile-band{background:radial-gradient(circle at 85% 120%, color-mix(in srgb, var(--color-accent-bright) 45%, transparent), transparent 55%), linear-gradient(135deg, var(--color-primary-deep), var(--color-primary));height:5.5rem}.account-profile-body{align-items:flex-start;gap:1.25rem;padding:0 1.75rem 1.5rem;display:flex}.account-avatar{border:4px solid var(--color-surface);background:linear-gradient(145deg, var(--color-accent-bright), var(--color-accent));width:6rem;height:6rem;color:var(--color-primary-deep);font-family:var(--font-display);box-shadow:var(--shadow-md);border-radius:50%;flex:none;place-items:center;margin-top:-3rem;font-size:2.1rem;font-weight:600;display:grid}.account-profile-text{min-width:0;padding-top:.9rem}.account-profile-text h1{overflow-wrap:anywhere;margin:.1rem 0 .35rem;font-size:clamp(1.6rem,3vw,2.1rem);line-height:1.15}.account-data{margin:0;position:relative}.account-data dd{overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:.45rem;margin:0;display:flex}.account-data-icon{color:var(--color-muted)}.account-chip{border-radius:999px;align-items:center;gap:.25rem;padding:.12rem .55rem;font-size:.78rem;font-weight:600;display:inline-flex}.account-chip--ok{background:var(--color-primary-soft);color:var(--color-primary)}.account-chip--pending{background:var(--color-accent-soft);color:color-mix(in srgb, var(--color-accent) 70%, var(--color-text))}.account-stats{margin:.45rem 0 0;font-size:.92rem}.account-grid{grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));gap:1.25rem;display:grid}.account-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;align-items:flex-start;gap:.6rem;padding:1.5rem;animation:.45s ease-out both auth-form-in;display:flex}.account-grid .account-card:nth-child(2){animation-delay:60ms}.account-card h2{margin:0;font-size:1.2rem}.account-card p{margin:0}.account-card>.button-secondary-link{margin-top:auto}.account-card-icon{background:var(--color-primary-soft);width:2.6rem;height:2.6rem;color:var(--color-primary);border-radius:12px;place-items:center;display:grid}.account-card-icon--danger{background:color-mix(in srgb, var(--color-danger) 10%, transparent);color:var(--color-danger)}.account-danger{border-color:color-mix(in srgb, var(--color-danger) 28%, var(--color-border));background:linear-gradient(180deg, color-mix(in srgb, var(--color-danger) 4%, var(--color-surface)), var(--color-surface) 70%);animation-delay:.12s}.account-danger-head{flex-wrap:wrap;align-items:center;gap:.6rem 1rem;width:100%;display:flex}.account-danger-head>div{flex:14rem}.account-danger-head p{margin-top:.15rem}.account-confirm{border-top:1px dashed color-mix(in srgb, var(--color-danger) 30%, var(--color-border));flex-direction:column;gap:.7rem;width:100%;margin-top:.4rem;padding-top:1rem;display:flex}.account-confirm-title{font-size:1.05rem}.account-trees{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.account-trees li{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);align-items:flex-start;gap:.55rem;padding:.6rem .8rem;display:flex}.account-trees-icon{color:var(--color-primary);flex:none;margin-top:.15rem}.account-confirm .field{max-width:24rem}@media (width<=640px){.account-page{padding-top:1.25rem}.account-profile-body{flex-direction:column;align-items:flex-start;gap:0;padding:0 1.25rem 1.25rem}.account-avatar{width:5rem;height:5rem;margin-top:-2.5rem;font-size:1.75rem}.account-card{padding:1.25rem}.account-danger-head .button-danger{width:100%}.account-confirm .actions>button{flex:auto}}.privacy-page section{margin-top:1.5rem}.privacy-page p,.privacy-page li{line-height:1.6}.privacy-page ul{padding-left:1.2rem}.auth-note{color:var(--color-muted);text-align:center;margin:0;font-size:.85rem}a.app-header-user{align-items:center;gap:.5rem;min-width:0;text-decoration:none;display:inline-flex}.app-header-user-icon{background:var(--color-primary-soft);width:2rem;height:2rem;color:var(--color-primary);border-radius:50%;flex:none;place-items:center;display:inline-grid}.app-header-user-name{white-space:nowrap;text-overflow:ellipsis;max-width:14rem;overflow:hidden}.verify-chip-text{text-overflow:ellipsis;overflow:hidden}@media (width<=640px){.app-header{gap:.6rem;padding:0 .85rem}.app-header .brand-mark-name{font-size:1.1rem}.app-header-link{white-space:nowrap;font-size:.92rem}.verify-chip{padding:.4rem}.verify-chip-text,.app-header-user-name{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app-header>button.button-secondary{padding:.4rem .7rem;font-size:.9rem}}@media (width<=360px){.app-header .brand-mark-name{display:none}}a.app-header-user:hover{color:var(--color-text);text-decoration:underline}.auth-split{background:var(--color-surface);grid-template-columns:minmax(22rem,1.05fr) minmax(0,1fr);min-height:100dvh;display:grid}.auth-showcase{color:var(--color-on-primary);background:radial-gradient(circle at 20% 15%, color-mix(in srgb, var(--color-accent-bright) 22%, transparent), transparent 42%), radial-gradient(circle at 90% 95%, color-mix(in srgb, var(--grass) 28%, transparent), transparent 50%), linear-gradient(160deg, var(--color-primary) 0%, var(--color-primary-hover) 55%, var(--color-primary-deep) 100%);flex-direction:column;gap:2rem;padding:2.5rem 3rem;display:flex;position:relative;overflow:hidden}.auth-showcase:after{content:"";pointer-events:none;background-image:radial-gradient(#ffffff0f 1px,#0000 1px);background-size:18px 18px;position:absolute;inset:0}.auth-showcase>*{z-index:1;position:relative}.auth-showcase-brand .brand-mark-disc{fill:var(--color-on-primary)}.auth-showcase-brand .brand-mark-branches{stroke:var(--color-primary)}.auth-showcase-brand .brand-mark-leaf{fill:var(--color-primary)}.auth-showcase-brand .brand-mark-name{color:var(--color-on-primary)}.auth-showcase-body{flex-direction:column;flex:1;justify-content:center;width:100%;max-width:30rem;margin:0 auto;display:flex}.auth-showcase-title{font-family:var(--font-display);margin:0;font-size:clamp(1.9rem,3vw,2.6rem);font-weight:600;line-height:1.15}.auth-showcase-lead{color:color-mix(in srgb, var(--color-on-primary) 80%, transparent);margin:.75rem 0 0;font-size:1.05rem}.auth-tree{width:100%;max-width:24rem;margin:1.75rem auto;overflow:visible}.auth-tree-ground{stroke:color-mix(in srgb, var(--color-on-primary) 25%, transparent);stroke-width:1.5px;stroke-dasharray:2 6;stroke-linecap:round}.auth-tree-lines path,.auth-tree-roots path{fill:none;stroke-width:3px;stroke-linecap:round}.auth-tree-lines path{stroke:color-mix(in srgb, var(--color-on-primary) 55%, transparent)}.auth-tree-roots path{stroke:color-mix(in srgb, var(--color-accent-bright) 75%, transparent)}.auth-tree-nodes circle,.auth-tree-ancestors circle{stroke-width:3px;animation:.6s cubic-bezier(.34,1.56,.64,1) both auth-node-in;animation-delay:calc(var(--i) * 90ms + .15s);transform-box:fill-box;transform-origin:50%}.auth-tree-nodes circle{fill:var(--canopy-light);stroke:var(--color-primary-hover)}.auth-tree-nodes .auth-tree-me{fill:var(--color-on-primary);stroke:var(--color-accent-bright)}.auth-tree-ancestors circle{fill:var(--color-accent-bright);stroke:var(--color-primary-deep)}@keyframes auth-node-in{0%{opacity:0;transform:scale(.3)}}.auth-features{color:color-mix(in srgb, var(--color-on-primary) 90%, transparent);flex-direction:column;gap:.75rem;margin:0;padding:0;font-size:.95rem;list-style:none;display:flex}.auth-features li{align-items:flex-start;gap:.75rem;display:flex}.auth-feature-icon{background:color-mix(in srgb, var(--color-on-primary) 12%, transparent);width:2rem;height:2rem;color:var(--color-accent-bright);border-radius:50%;flex:none;place-items:center;display:inline-grid}.auth-main{background:radial-gradient(circle at 100% 0%, var(--color-accent-soft), transparent 35%), var(--color-bg);place-items:center;padding:3rem 1.5rem;display:grid}.auth-form{flex-direction:column;gap:1.1rem;width:100%;max-width:25rem;animation:.5s ease-out both auth-form-in;display:flex}@keyframes auth-form-in{0%{opacity:0;transform:translateY(12px)}}.auth-form-header h1{margin:.15rem 0 .35rem;font-size:2rem;line-height:1.15}.auth-form-header .muted{margin:0}.auth-eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent);margin:0;font-size:.78rem;font-weight:600}.auth-form .field{gap:.4rem}.field-label-row{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.auth-form input[type=text],.auth-form input[type=email],.auth-form input[type=password]{background:var(--color-surface);border-radius:12px;padding-top:.75rem;padding-bottom:.75rem}.auth-form input[aria-invalid=true]{border-color:var(--color-danger)}.auth-remember{color:var(--color-muted);font-size:.92rem}.auth-submit{width:100%;box-shadow:0 6px 16px color-mix(in srgb, var(--color-primary) 25%, transparent);border-radius:12px;padding:.85rem 1rem;font-size:1rem;font-weight:600}.auth-submit:hover:not(:disabled){box-shadow:0 8px 22px color-mix(in srgb, var(--color-primary) 32%, transparent)}.auth-action{text-align:center;display:block}.auth-status-icon{background:var(--color-primary-soft);width:4.25rem;height:4.25rem;color:var(--color-primary);box-shadow:0 0 0 8px color-mix(in srgb, var(--color-primary) 5%, transparent);border-radius:50%;place-items:center;animation:.5s cubic-bezier(.34,1.56,.64,1) both auth-status-pop;display:grid}.auth-status-icon--ok{background:var(--color-primary);color:var(--color-on-primary)}.auth-status-icon--warn{background:var(--color-accent-soft);color:color-mix(in srgb, var(--color-accent) 70%, var(--color-text));box-shadow:0 0 0 8px color-mix(in srgb, var(--color-accent) 7%, transparent)}.auth-status-icon--loading .spinner{border-color:color-mix(in srgb, var(--color-primary) 25%, transparent);border-top-color:var(--color-primary);width:1.6rem;height:1.6rem}@keyframes auth-status-pop{0%{opacity:0;transform:scale(.6)}}.auth-status-tips{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-muted);flex-direction:column;gap:.5rem;margin:0;padding:.9rem 1rem;font-size:.92rem;list-style:none;display:flex}.auth-status-tips li,.auth-status-help{align-items:flex-start;gap:.55rem;display:flex}.auth-status-tips svg,.auth-status-help svg{color:var(--color-primary);flex:none;margin-top:.2rem}.auth-status-help{border-radius:var(--radius);background:var(--color-primary-soft);margin:0;padding:.85rem 1rem;font-size:.92rem}.auth-form .auth-switch{border-top:1px solid var(--color-border);padding-top:1.1rem}.input-icon{position:relative}.input-icon>input{padding-left:2.6rem}.input-icon--action>input{padding-right:2.9rem}.input-icon-symbol{color:var(--color-muted);pointer-events:none;transition:color .15s;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}.input-icon:focus-within .input-icon-symbol{color:var(--color-primary)}.input-icon-action{color:var(--color-muted);background:0 0;border:none;border-radius:8px;padding:.4rem;position:absolute;top:50%;right:.4rem;transform:translateY(-50%)}.input-icon-action:hover:not(:disabled){background:var(--color-primary-soft);color:var(--color-primary)}.input-icon-action:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.password-meter{color:var(--color-muted);align-items:center;gap:.6rem;font-size:.82rem;display:flex}.password-meter-bars{flex:1;grid-template-columns:repeat(4,1fr);gap:4px;display:grid}.password-meter-bars i{background:var(--color-border);border-radius:2px;height:4px;transition:background-color .2s}.password-meter[data-level="0"] .password-meter-label,.password-meter[data-level="1"] .password-meter-label{color:var(--color-danger)}.password-meter[data-level="1"] .on{background:var(--color-danger)}.password-meter[data-level="2"] .on{background:var(--color-accent)}.password-meter[data-level="3"] .on,.password-meter[data-level="4"] .on{background:var(--color-primary)}.field-ok{color:var(--color-primary);align-items:center;gap:.3rem;margin:0;font-size:.82rem;display:inline-flex}.spinner{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:1rem;height:1rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=880px){.auth-split{grid-template-rows:auto 1fr;grid-template-columns:1fr}.auth-showcase{gap:0;padding:1.25rem 1.25rem 1.5rem}.auth-showcase-body{margin:0}.auth-showcase-title{margin-top:1rem;font-size:1.45rem}.auth-showcase-lead{margin-top:.35rem;font-size:.95rem}.auth-tree,.auth-features{display:none}.auth-main{place-items:start center;padding:2rem 1rem 3rem}.auth-form-header h1{font-size:1.7rem}}@media (prefers-reduced-motion:reduce){.auth-form,.auth-status-icon,.invitation-skeleton,.account-profile,.account-card,.auth-tree-nodes circle,.auth-tree-ancestors circle{animation:none}.spinner{animation-duration:1.6s}}.create-tree{max-width:64rem;margin:0 auto;padding-top:2.5rem;padding-bottom:3rem}.create-tree-intro{max-width:40rem;margin-bottom:1.75rem;animation:.5s ease-out both auth-form-in}.create-tree-intro h1{margin:.15rem 0 .4rem;font-size:clamp(1.8rem,3vw,2.3rem);line-height:1.15}.create-tree-intro .muted{margin:0;font-size:1.02rem}.create-tree-grid{grid-template-columns:minmax(0,1.25fr) minmax(17rem,1fr);align-items:start;gap:1.5rem;display:grid}.create-tree-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;gap:1.25rem;padding:1.75rem;animation:.5s ease-out 50ms both auth-form-in;display:flex}.create-tree-step{flex-direction:column;gap:1rem;display:flex}.create-tree-step+.create-tree-step{border-top:1px solid var(--color-border);padding-top:1.25rem}.create-tree-step h2{align-items:center;gap:.6rem;margin:0;font-size:1.15rem;display:flex}.step-number{background:var(--color-primary);width:1.7rem;height:1.7rem;color:var(--color-on-primary);font-family:var(--font-body);border-radius:50%;place-items:center;font-size:.85rem;font-weight:600;display:inline-grid}.create-tree-form input[type=text],.create-tree-form input[type=number]{border-radius:12px;padding-top:.7rem;padding-bottom:.7rem}.create-tree-form input[aria-invalid=true]{border-color:var(--color-danger)}.create-tree-year{max-width:13rem}.create-tree-actions{justify-content:flex-end;align-items:center;gap:.75rem;padding-top:.25rem;display:flex}.create-tree-actions .auth-submit{width:auto;min-width:13rem}.create-tree-actions .button-secondary-link{border-radius:12px;padding:.8rem 1.1rem}.create-tree-preview{top:calc(var(--header-height) + 1.5rem);border-radius:var(--radius-lg);border:1px solid var(--color-border);background:radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--canopy-light) 70%, transparent), transparent 60%), linear-gradient(180deg, var(--sky-top), var(--sky-bottom) 70%);box-shadow:var(--shadow-sm);text-align:center;flex-direction:column;align-items:center;padding:1.5rem 1.25rem 1.25rem;animation:.5s ease-out .12s both auth-form-in;display:flex;position:sticky}.create-tree-preview-label{letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted);margin:0;font-size:.72rem;font-weight:600}.create-tree-preview-title{overflow-wrap:anywhere;max-width:100%;font-family:var(--font-display);color:var(--color-primary);margin:.2rem 0 1.25rem;font-size:1.35rem;font-weight:600}.preview-tree{flex-direction:column;align-items:center;width:100%;max-width:16rem;display:flex}.preview-slots{justify-content:space-around;width:100%;display:flex}.preview-slot{border:1.5px dashed var(--color-border-strong);background:color-mix(in srgb, var(--color-surface) 70%, transparent);color:var(--color-muted);border-radius:999px;align-items:center;gap:.25rem;padding:.4rem .75rem;font-size:.82rem;display:inline-flex}.preview-links{width:50%;height:1.6rem;display:block}.preview-links path{fill:none;stroke:var(--branch);stroke-width:2px;vector-effect:non-scaling-stroke}.preview-person{border-radius:var(--radius-lg);border-top:4px solid var(--unknown-fg);background:var(--color-surface);width:100%;box-shadow:var(--shadow-md);flex-direction:column;align-items:center;gap:.35rem;padding:1rem .75rem .85rem;transition:border-color .25s;display:flex}.preview-person--male{border-top-color:var(--male-fg)}.preview-person--female{border-top-color:var(--female-fg)}.preview-person-name{overflow-wrap:anywhere;max-width:100%;font-family:var(--font-display);font-size:1.1rem;font-weight:600;line-height:1.2}.preview-person-years{color:var(--color-muted);font-size:.85rem}.create-tree-preview-note{color:var(--color-muted);text-align:left;align-items:flex-start;gap:.45rem;margin:1.25rem 0 0;font-size:.85rem;display:flex}.create-tree-preview-note .app-icon{color:var(--leaf-dark);flex:none;margin-top:.15rem}@media (width<=820px){.create-tree{padding-top:1.5rem}.create-tree-grid{grid-template-columns:1fr}.create-tree-preview{order:-1;padding:1rem;position:static}.create-tree-preview-title{margin-bottom:.75rem}.create-tree-preview-note{display:none}.create-tree-form{padding:1.25rem}.create-tree-actions{flex-direction:column-reverse;align-items:stretch}.create-tree-actions .auth-submit,.create-tree-actions .button-secondary-link{justify-content:center;width:100%}}@media (width<=420px){.create-tree-form .field-row{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.create-tree-intro,.create-tree-form,.create-tree-preview{animation:none}}
