:root{--bg:#f7f3ec;--surface:#fff;--surface-muted:#f1ebe0;--text:#2b2118;--text-muted:#77695a;--border:#e3d9c8;--primary:#7a2e1d;--primary-text:#fff;--male:#dbe6f3;--male-text:#2d4a6d;--female:#f6dde3;--female-text:#7b3045;--male-strong:#1d5fae;--male-tint:#e6effa;--female-strong:#c0305f;--female-tint:#fce8ef;--danger:#b3261e;--danger-bg:#fbe9e7;--success:#2e7d32;--warning:#b26a00;--info:#1d5fae;--focus:#c27a2c;--radius:12px;--content-max:2560px;--gutter:16px;--tree-inset:12px;--shadow:0 1px 2px #3c28140f, 0 4px 16px #3c28140d;--backdrop:#0006;--on-primary-overlay:#fff3;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}@media (width<=479px){:root{--gutter:8px;--tree-inset:8px}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#1b1713;--surface:#26201a;--surface-muted:#2f2820;--text:#efe6d8;--text-muted:#a99a87;--border:#3e352b;--primary:#d8875f;--primary-text:#1b1713;--male:#2a3a4d;--male-text:#c5d8ef;--female:#4a2c35;--female-text:#f3c9d4;--male-strong:#6aa8f0;--male-tint:#1b2838;--female-strong:#f2799f;--female-tint:#3a1f2a;--danger:#f2948c;--danger-bg:#3d2220;--success:#7fcf86;--warning:#f0b44c;--info:#6aa8f0;--shadow:none}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;margin:0}h1,h2{margin:0;line-height:1.25}h1{font-size:1.4rem}h2{font-size:1.1rem}a{color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.muted{color:var(--text-muted)}.error{color:var(--danger);margin:0}.alert{border-radius:var(--radius);background:var(--danger-bg);color:var(--danger);margin:0;padding:12px 14px}.app{min-height:100dvh}.topbar,.page{--page-gutter:max(var(--gutter), calc((100vw - var(--content-max)) / 2 + var(--gutter)))}.page:focus{outline:none}.topbar{z-index:10;padding:10px var(--page-gutter);padding-top:max(10px, env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:8px 16px;display:flex;position:sticky;top:0}.topbar__brand{color:var(--primary);white-space:nowrap;flex:none;align-items:center;gap:8px;font-size:1.15rem;font-weight:700;text-decoration:none;display:inline-flex}.topbar__brand-group{flex:none;align-items:center;gap:2px;display:flex}.topbar__switch .dropdown__button{justify-content:center;min-width:32px;padding-inline:8px}.dropdown__group{border-top:1px solid var(--border);flex-direction:column;gap:2px;margin-top:4px;padding-top:4px;display:flex}.dropdown__group-label{color:var(--text-muted);padding:6px 10px 2px;font-size:.85rem;font-weight:600}@media (pointer:coarse){.topbar__switch .dropdown__button{min-width:44px;min-height:44px}.dropdown__item{min-height:44px}}.topbar__brand img{flex:none;width:28px;height:28px}.topbar__main{align-items:center;gap:16px;min-width:0;display:flex}.topbar__main[aria-hidden=true]{visibility:hidden;pointer-events:none;position:absolute}.topbar{overflow-x:clip}.topbar__nav{gap:4px;min-width:0;display:flex}.topbar__nav a{color:var(--text-muted);border-radius:999px;padding:6px 12px;text-decoration:none}.topbar__nav a.active{background:var(--surface-muted);color:var(--text);font-weight:600}.topbar__account{flex:none;margin-left:auto}.topbar__name{text-overflow:ellipsis;white-space:nowrap;max-width:14em;font-size:.95rem;font-weight:500;overflow:hidden}.topbar__menu .dropdown__button{color:var(--primary);white-space:nowrap;gap:8px;padding:4px 2px 4px 6px;font-size:1.15rem;font-weight:700}.topbar__menu .dropdown__button img{flex:none;width:28px;height:28px}.dropdown{flex:none;position:relative}.dropdown__button{min-height:40px;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:4px 0 4px 4px;display:inline-flex}.dropdown__button:hover,.dropdown__button[aria-expanded=true]{background:var(--surface-muted)}.topbar__account .dropdown__button{padding-right:12px}.topbar__account .dropdown__button .avatar{border:2px solid var(--female-strong)}.dropdown__chevron{width:16px;height:16px;color:var(--text-muted);flex:none;transition:transform .15s}.dropdown__button[aria-expanded=true] .dropdown__chevron{transform:rotate(180deg)}.dropdown__menu{z-index:20;min-width:220px;max-width:calc(100vw - 2 * var(--gutter));border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);box-shadow:0 8px 30px #0000002e}.dropdown__menu--start{left:0}.dropdown__menu--end{right:0}.dropdown__header{border-bottom:1px solid var(--border);overflow-wrap:anywhere;flex-direction:column;gap:2px;margin-bottom:4px;padding:8px 10px 10px;display:flex}.dropdown__header .muted{font-size:.85rem}.dropdown__item{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:9px 10px;text-decoration:none;display:flex}.dropdown__item:hover,.dropdown__item:focus{background:var(--surface-muted);outline:none}.dropdown__item:focus-visible{box-shadow:inset 0 0 0 2px var(--primary)}.dropdown__item[aria-current=page]{color:var(--primary);font-weight:600}.dropdown__item[aria-current=page] svg{color:var(--primary)}.dropdown__item svg{width:18px;height:18px;color:var(--text-muted);flex:none}.topbar__back{flex:none;width:20px;height:20px}.topbar__account{align-items:center;gap:4px;display:flex}.tree-menu .dropdown__button{justify-content:center;min-width:40px;padding-inline:8px}.tree-menu .dropdown__button svg{width:20px;height:20px}.dropdown__item--danger{color:var(--danger)}.topbar__share{margin-right:4px}.topbar__role{white-space:nowrap;margin-right:4px}.page{padding:var(--gutter) var(--page-gutter);padding-bottom:max(24px, env(safe-area-inset-bottom))}.stack{flex-direction:column;gap:16px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin-bottom:12px;display:flex}.row{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 12px;display:grid}.actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.actions--start{justify-content:flex-start;margin-top:12px}.button{border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--text);font:inherit;cursor:pointer;border-radius:10px;justify-content:center;align-items:center;padding:8px 16px;font-weight:500;text-decoration:none;display:inline-flex}.button:disabled{opacity:.6;cursor:default}.button--primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.button--danger{color:var(--danger);border-color:var(--danger)}.button--ghost{background:0 0;border-color:#0000}.button--small{min-height:32px;padding:4px 12px;font-size:.9rem}.icon-button{width:36px;height:36px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;font-size:1.3rem}.icon-button:hover{background:var(--danger-bg);color:var(--danger)}.field{border:none;flex-direction:column;gap:4px;min-width:0;margin-bottom:12px;padding:0;display:flex}.field>span,.field>label,.field>legend{font-size:.9rem;font-weight:500}input:not([type=checkbox],[type=radio],[type=file]),select,textarea{border:1px solid var(--border);background:var(--surface);width:100%;min-height:42px;color:var(--text);font:inherit;border-radius:10px;padding:8px 12px;font-size:16px}textarea{resize:vertical}.skip-link{z-index:1001;background:var(--surface);color:var(--text);box-shadow:var(--shadow), 0 0 0 1px var(--border);border-radius:10px;padding:10px 16px;font-weight:500;position:fixed;top:8px;left:8px;transform:translateY(calc(-100% - 16px))}.skip-link:focus{transform:none}@media (pointer:coarse){.button,.button--small{min-height:44px}.icon-button{width:44px;height:44px}}select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-muted) 50%), linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);text-overflow:ellipsis;background-position:calc(100% - 17px),calc(100% - 12px);background-repeat:no-repeat;background-size:5px 5px;padding-right:36px}.checkbox{align-items:center;gap:8px;margin-bottom:12px;display:flex}.checkbox input{width:18px;height:18px}.search{max-width:320px}.list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.list--grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.chip{border-radius:10px;align-items:center;gap:4px;display:flex}.chip:hover{background:var(--surface-muted)}.chip__link{flex:1;align-items:center;gap:12px;min-width:0;padding:6px 8px;text-decoration:none;display:flex}.chip__text{flex-direction:column;min-width:0;display:flex}.chip__name{font-weight:500}.chip__deceased{color:var(--text-muted)}.chip__meta{color:var(--text-muted);font-size:.85rem}.avatar{border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.avatar--xs{width:28px;height:28px;font-size:.8125rem}.avatar--initials{background:var(--surface-muted);color:var(--primary);box-shadow:inset 0 0 0 1px var(--border)}.avatar--sm{width:40px;height:40px}.avatar--md{width:56px;height:56px;font-size:1.3rem}.avatar--lg{width:96px;height:96px;font-size:2.2rem}.avatar--male{background:var(--male-tint);color:var(--male-strong);box-shadow:inset 0 0 0 2px var(--male-strong)}.avatar--female{background:var(--female-tint);color:var(--female-strong);box-shadow:inset 0 0 0 2px var(--female-strong)}.avatar .gender-placeholder{align-self:flex-end;height:86%}.gender-placeholder{fill:currentColor;width:100%;display:block}.generation+.generation{margin-top:16px}.details{grid-template-columns:1fr;gap:8px;margin:12px 0 0;display:grid}.details dt{color:var(--text-muted);font-size:.85rem}.details dd{margin:0}.notes{white-space:pre-wrap;margin:16px 0 0}.form fieldset{border:none;min-width:0;margin:0;padding:0}.form legend{color:var(--primary);margin-bottom:8px;font-weight:600}.address-field{margin-bottom:12px}.form .address-field>legend{color:var(--text);margin-bottom:4px;padding:0;font-size:.9rem;font-weight:600}.address-field .field{margin-bottom:8px}.address-field .field>span{color:var(--text-muted)}.address-field__note{margin:-4px 0 4px;font-size:.875rem;display:block}.address-field__switch{align-items:center;min-height:32px;display:inline-flex}@media (pointer:coarse){.address-field__switch{min-height:44px}}.photo-input,.file-picker-field{--file-picker-border:color-mix(in srgb, var(--text-muted) 45%, transparent)}.photo-input{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.photo-input img{aspect-ratio:140/136;object-fit:cover;border-radius:10px;width:84px}.photo-input__empty{aspect-ratio:140/136;border:1.5px dashed var(--file-picker-border);width:84px;color:var(--text-muted);border-radius:10px;place-items:center;display:grid}.photo-input__empty svg{width:32px;height:32px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.file-picker-field{flex-direction:column;gap:6px;min-width:0;display:flex}.file-picker{min-width:0;position:relative}.file-picker__zone{border:1.5px dashed var(--file-picker-border);border-radius:var(--radius);background:var(--surface-muted);cursor:pointer;align-items:center;gap:14px;padding:14px 16px;transition:border-color .15s,background-color .15s;display:flex}.file-picker__zone:hover,.file-picker--dragging .file-picker__zone{border-color:var(--primary);background:color-mix(in srgb, var(--primary) 7%, var(--surface))}.file-picker--dragging .file-picker__zone{border-style:solid}.file-picker--chosen .file-picker__zone{background:var(--surface);border-style:solid}.file-picker:has(input:focus-visible) .file-picker__zone{outline:2px solid var(--focus);outline-offset:2px}.file-picker__icon{background:var(--surface);width:40px;height:40px;color:var(--primary);box-shadow:inset 0 0 0 1px var(--border);border-radius:50%;flex:none;place-items:center;display:grid}.file-picker__icon svg{width:20px;height:20px}.file-picker__text{flex-direction:column;min-width:0;line-height:1.35;display:flex}.file-picker__text strong{font-weight:600}.file-picker__name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-picker__meta,.file-picker__hint{color:var(--text-muted);font-size:.82rem}.file-picker--compact .file-picker__zone{gap:10px;padding:8px 14px 8px 8px}.file-picker--compact .file-picker__icon{width:32px;height:32px}.file-picker--compact .file-picker__icon svg{width:16px;height:16px}.dialog{border-radius:var(--radius);background:var(--surface);width:min(520px,100vw - 32px);max-height:90dvh;color:var(--text);border:none;padding:20px}.dialog::backdrop{background:var(--backdrop)}.photo-crop{width:min(400px, calc(100vw - 2 * var(--gutter)))}.photo-crop h2{margin:0 0 6px}.photo-crop__help{margin:0 0 14px;font-size:.9rem}.photo-crop__frame{border:2px solid var(--border);background:var(--surface-muted);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:14px;width:100%;position:relative;overflow:hidden}.photo-crop__frame:active{cursor:grabbing}.photo-crop__frame:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.photo-crop__frame img{pointer-events:none;max-width:none;position:absolute;top:50%;left:50%}.photo-crop__zoom{align-items:center;gap:8px;margin:12px 0;display:flex}.photo-crop__zoom input{min-width:0;accent-color:var(--primary);flex:1}.photo-crop__zoom .button{justify-content:center;min-width:36px;padding-inline:0}.photo-crop__zoom svg{width:16px;height:16px}@media (pointer:coarse){.photo-crop__zoom .button{min-width:44px}}.segmented{background:var(--surface-muted);border-radius:10px;padding:4px;display:flex}.segmented button{min-height:36px;color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;position:relative}.segmented button[aria-selected=true]{background:var(--surface);color:var(--text);font-weight:600}.segmented button+button:before{content:"";background:var(--text-muted);opacity:.35;width:1px;height:16px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.segmented button[aria-selected=true]:before,.segmented button[aria-selected=true]+button:before{display:none}.picker{border:1px solid var(--border);border-radius:10px;max-height:280px;margin:0;padding:0;list-style:none;overflow-y:auto}.picker label{cursor:pointer;grid-template-columns:auto 1fr;gap:0 10px;padding:8px 12px;display:grid}.picker label .muted{grid-column:2;font-size:.85rem}.picker li+li{border-top:1px solid var(--border)}.picker>.muted{padding:8px 12px}.picker__disabled{opacity:.5}.login{place-items:center;min-height:100dvh;padding:16px;display:grid}.login__card{flex-direction:column;gap:4px;width:min(400px,100%);display:flex}.login__card h1{color:var(--primary)}.empty{flex-direction:column;align-items:flex-start;gap:12px;display:flex}@media (width>=720px){.details{grid-template-columns:repeat(2,1fr)}}.topbar__nav{scrollbar-width:none;overflow-x:auto}.topbar__nav a{white-space:nowrap}.toaster{z-index:1000;pointer-events:none;background:0 0;border:0;width:min(380px,100vw - 32px);margin:0;padding:0;position:fixed;inset:16px 16px auto auto;overflow:visible}.toaster__list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.toast{--toast-color:var(--info);border:1px solid var(--border);border-left:2px solid var(--toast-color);background:var(--surface);color:var(--text);pointer-events:auto;border-radius:10px;align-items:flex-start;gap:10px;padding:12px 8px 12px 12px;animation:.24s cubic-bezier(.2,.8,.2,1) toast-in;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 24px #0000002e}.toast--success{--toast-color:var(--success)}.toast--warning{--toast-color:var(--warning)}.toast--error{--toast-color:var(--danger)}.toast[data-entered]{animation:none}.toast[data-leaving]{animation:.2s ease-in forwards toast-out}.toast__icon{color:var(--toast-color);flex:none}.toast__icon svg{width:20px;height:20px;display:block}.toast__body{flex:1;min-width:0}.toast__title{margin-bottom:2px;display:block}.toast__message{overflow-wrap:anywhere;margin:0;font-size:.92rem;line-height:1.4}.toast__count{color:var(--text-muted);font-size:.85em}.toast__action{color:var(--toast-color);font:inherit;cursor:pointer;background:0 0;border:0;margin-top:6px;padding:0;font-size:.88rem;font-weight:600}.toast__action:hover{text-decoration:underline}.toast__close{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;margin-top:-2px;padding:0;font-size:1.15rem;line-height:1}.toast__close:hover{background:var(--surface-muted);color:var(--text)}.toast__progress{background:var(--toast-color);transform-origin:0;height:2px;animation-name:toast-countdown;animation-timing-function:linear;animation-fill-mode:both;position:absolute;bottom:0;left:0;right:0}.toast:hover .toast__progress,.toast:focus-within .toast__progress{animation-play-state:paused}@keyframes toast-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes toast-in{0%{opacity:0;transform:translate(calc(100% + 24px))}}@keyframes toast-out{to{opacity:0;transform:translate(calc(100% + 24px))}}@media (prefers-reduced-motion:reduce){.toast,.toast[data-leaving]{animation-duration:1ms}}.share-dialog__section{border-top:1px solid var(--border);padding-top:16px}.share-dialog__section:first-of-type{border-top:0}.share-dialog__section h3,.share-dialog__hint{margin:0}.share-dialog__created{gap:8px;display:flex}.share-dialog__created input{flex:1;min-width:0}.share-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.share-list__item{border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;display:flex}.share-list__text{overflow-wrap:anywhere;flex-direction:column;flex:1;min-width:0;display:flex}.share-list__text .muted{font-size:.875rem}.share-list__actions{align-items:center;gap:6px;display:flex}.share-list__actions select{width:auto}.share-list__initial{place-items:center;width:100%;height:100%;display:grid}.tree-page{flex-direction:column;gap:16px;display:flex}.view-toolbar{flex-wrap:wrap;align-items:center;gap:10px 24px;min-height:66px;padding:12px 16px;display:flex}.view-toolbar .checkbox{margin:0}.view-toolbar .search{flex:240px;max-width:420px}.tree-search{flex:260px;max-width:420px;position:relative}.view-toolbar .tree-search .search{max-width:none}.tree-search__results{z-index:6;border:1px solid var(--border);background:var(--surface);border-radius:10px;width:100%;min-width:260px;padding:6px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 8px 24px #0000002e}.tree-search__results ul{margin:0;padding:0;list-style:none}.tree-search__option{cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:6px 8px;display:flex}.tree-search__option[aria-selected=true]{background:var(--surface-muted)}.tree-search__text{flex-direction:column;min-width:0;display:flex}.tree-search__name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.tree-search__meta,.tree-search__empty,.tree-search__more{color:var(--text-muted);font-size:.85rem}.tree-search__empty,.tree-search__more{margin:0;padding:6px 8px}.tree-search__more{border-top:1px solid var(--border)}.tree-toolbar__root{flex:260px;align-items:center;gap:8px;max-width:420px;display:flex}.tree-toolbar__root span{flex:none;font-weight:500}.tree-toolbar__short{display:none}@media (width<=719px){.view-toolbar{gap:8px;min-height:0;padding:8px 10px}.view-toolbar .search,.tree-search{flex:140px;min-width:0}.tree-toolbar__root{flex:160px;min-width:0}.tree-toolbar__root select{min-width:0}.tree-toolbar__long{display:none}.tree-search__results{width:calc(100vw - 2 * var(--gutter) - 22px);left:auto;right:0}.tree-toolbar__short{white-space:nowrap;display:inline}}.tree-stage{margin-inline:calc(var(--gutter) - var(--page-gutter));--tree-panel-w:360px;position:relative;overflow:clip}.tree-viewport{border:1px solid var(--border);border-radius:var(--radius);background-color:var(--surface-muted);background-image:radial-gradient(var(--border) 1px, transparent 1px);touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;background-size:20px 20px;position:relative;overflow:hidden}.tree-viewport:active{cursor:grabbing}.tree-controls{top:var(--tree-inset);right:calc(var(--page-gutter) - var(--gutter) + var(--tree-inset));z-index:2;gap:6px;transition:right .2s;display:flex;position:absolute}.tree-stats{top:var(--tree-inset);left:calc(var(--page-gutter) - var(--gutter) + var(--tree-inset));z-index:2;pointer-events:none;gap:6px;margin:0;padding:0;list-style:none;display:flex;position:absolute}.tree-stats li{border:1px solid var(--border);background:var(--surface);min-height:32px;color:var(--text);white-space:nowrap;box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:.9rem;font-weight:500;display:inline-flex}.tree-stats svg{width:16px;height:16px;color:var(--primary);flex:none}.tree-controls .button{width:36px;box-shadow:var(--shadow);gap:6px;padding-inline:0;position:relative}@media (pointer:coarse){.tree-controls .button{width:44px}}@media (pointer:coarse) and (width<=479px){.tree-controls .button{width:40px}}.tree-controls .button:has(.tree-controls__label--busy){width:auto;padding-inline:10px}.tree-controls svg{flex:none;width:16px;height:16px}.tree-controls__label:not(.tree-controls__label--busy){clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.tree-controls [data-tooltip]:after{content:attr(data-tooltip);z-index:6;background:var(--text);color:var(--surface);white-space:nowrap;box-shadow:var(--shadow);opacity:0;pointer-events:none;border-radius:8px;padding:6px 10px;font-size:.8125rem;font-weight:500;transition:opacity .12s;position:absolute;top:calc(100% + 8px);right:0}.tree-controls [data-tooltip]:focus-visible:after{opacity:1}@media (hover:hover){.tree-controls [data-tooltip]:hover:after{opacity:1;transition-delay:.3s}}.tree-controls details[open] [data-tooltip]:after{display:none}@media (width<=719px){.tree-stats,.tree-controls{gap:4px}.tree-controls{gap:2px}.tree-stats li{gap:4px;padding-inline:8px}.tree-stats__unit{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.tree-canvas{transform-origin:0 0;position:absolute;top:0;left:0}.tree-lines{position:absolute;top:0;left:0;overflow:visible}.tree-line{fill:none;stroke:var(--text-muted);stroke-width:1.5px}.tree-line--marriage{stroke-dasharray:4 3}.tree-generation{color:var(--text-muted);white-space:nowrap;justify-content:flex-end;align-items:center;font-size:.85rem;font-weight:600;display:flex;position:absolute}.tree-card{--gender-strong:var(--male-strong);--gender-tint:var(--male-tint);border:2px solid var(--gender-strong);background:var(--surface);color:var(--text);font:inherit;text-align:center;box-shadow:var(--shadow);cursor:pointer;-webkit-user-drag:none;border-radius:14px;grid-template-rows:2fr 1fr;padding:0;display:grid;position:absolute;overflow:hidden}.tree-card--female{--gender-strong:var(--female-strong);--gender-tint:var(--female-tint)}.tree-card:hover{box-shadow:0 0 0 3px color-mix(in srgb, var(--gender-strong) 35%, transparent)}.tree-card--spouse{border-style:dashed}.tree-card--focus,.tree-card--selected,.tree-card:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.tree-card__sex{z-index:1;background:var(--surface);width:22px;height:22px;color:var(--gender-strong);border-radius:50%;place-items:center;font-size:.85rem;font-weight:700;line-height:1;display:grid;position:absolute;top:6px;right:6px}.tree-card__photo{background:var(--gender-tint);min-height:0;color:var(--gender-strong);place-items:center;display:grid;overflow:hidden}.tree-card__photo img{object-fit:cover;pointer-events:none;width:100%;height:100%}.tree-card__photo .gender-placeholder{align-self:end;height:88%}.tree-card__info{flex-direction:column;justify-content:center;gap:2px;min-height:0;padding:4px 8px;display:flex}.tree-card__name{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.tree-card__nickname{white-space:nowrap;font-weight:500}.tree-card__meta{color:var(--text-muted);font-size:.8125rem;line-height:1.2}.tree-toggle{z-index:1;border:1px solid var(--border);background:var(--surface);min-width:26px;height:22px;color:var(--text-muted);font:inherit;cursor:pointer;border-radius:999px;padding:0 6px;font-size:.8125rem;line-height:1;position:absolute;transform:translate(-50%,-50%)}.tree-toggle:before{content:"";position:absolute;inset:-8px}.tree-toggle:hover{color:var(--primary);border-color:var(--primary)}.anniversary{align-items:center;gap:8px;display:flex}.anniversary .chip{flex:1;min-width:0}.anniversary__date{background:var(--surface-muted);border-radius:10px;flex-direction:column;flex:none;align-items:center;width:52px;padding:4px 0;line-height:1.2;display:flex}.anniversary__date strong{font-size:1.2rem}.anniversary__date span{color:var(--text-muted);font-size:.875rem}.anniversary__date--soon{background:var(--primary);color:var(--primary-text)}.anniversary__date--soon span{color:inherit}.notice{border-radius:var(--radius);background:var(--surface-muted);margin:0;padding:12px 14px}.page .field{max-width:720px}.page .row{max-width:1100px}.page .card>.segmented{max-width:720px}.badge{background:var(--surface-muted);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:.85rem;display:inline-block}.login__divider{color:var(--text-muted);align-items:center;gap:12px;margin:8px 0;font-size:.85rem;display:flex}.login__divider:before,.login__divider:after{content:"";border-top:1px solid var(--border);flex:1}.login__card .segmented{margin:8px 0 12px}.member{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;display:flex}.member+.member{border-top:1px solid var(--border)}.history{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.history__entry{border-left:4px solid var(--border)}.history__entry--create{border-left-color:var(--success)}.history__entry--delete{border-left-color:var(--danger)}.history__head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.history__time{font-size:.85rem}.history__changes{border-collapse:collapse;width:100%;margin-top:8px;font-size:.9rem}.history__changes th{width:35%;color:var(--text-muted);text-align:left;vertical-align:top;padding:4px 8px 4px 0;font-weight:500}.history__changes td{overflow-wrap:anywhere;padding:4px 0}.history__changes del{color:var(--danger)}.history__changes ins{color:var(--success);text-decoration:none}.kinship{border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:var(--radius);background:var(--surface);margin:0;padding:12px 16px}.kinship p{margin:0 0 4px}.kinship--hint{border-left-color:var(--border);color:var(--text-muted)}.gallery{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.gallery__item{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:10px;flex-direction:column;padding:0;display:flex;overflow:hidden}.gallery__item:hover{border-color:var(--primary)}.gallery__item img,.gallery__pdf{aspect-ratio:1;object-fit:cover;background:var(--surface-muted);width:100%}.gallery__pdf{color:var(--danger);place-items:center;font-size:1.4rem;font-weight:700;display:grid}.gallery__caption{overflow-wrap:anywhere;padding:6px 8px;font-size:.85rem}.gallery--compact{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.gallery--compact .gallery__caption{text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem;overflow:hidden}.gallery--compact .gallery__pdf{font-size:1rem}.dialog--wide{width:min(900px,100vw - 32px)}.person-modal{background:var(--bg);padding:0 20px 20px}.person-modal__head{z-index:1;border-bottom:1px solid var(--border);background:var(--bg);justify-content:space-between;align-items:center;gap:12px;margin:0 -20px 16px;padding:14px 20px;display:flex;position:sticky;top:0}.person-modal__head h2{overflow-wrap:anywhere;margin:0}.person-modal__tabs{margin-bottom:16px}.viewer__image{border-radius:8px;max-width:100%;max-height:70dvh;margin:0 auto;display:block}.viewer__nav{justify-content:center;align-items:center;gap:12px;display:flex}.people-picker{flex-direction:column;gap:8px;display:flex}.people-picker .picker{max-height:180px}.people-picker__selected{flex-wrap:wrap;gap:6px;display:flex}.tag{border:1px solid var(--border);background:var(--surface-muted);color:var(--text);font:inherit;cursor:pointer;border-radius:999px;padding:4px 10px;font-size:.85rem}.tool{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.tool+.tool{border-top:1px solid var(--border);padding-top:12px}.tool p{margin:4px 0 0}.book{max-width:800px}.book__actions{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.book__header{text-align:center;margin-bottom:24px}.book__header h1{color:var(--primary);font-size:2rem}.book__generation h2{border-bottom:2px solid var(--primary);color:var(--primary);margin:24px 0 12px;padding-bottom:4px}.book__entry{border-bottom:1px solid var(--border);margin-bottom:16px;padding-bottom:12px}.book__entry h3{margin:0 0 4px;font-size:1.05rem}.book__span{color:var(--text-muted);font-weight:400}.book__entry p{margin:0 0 4px}.book__entry dl{margin:0}.book__entry dl div{gap:6px;display:flex}.book__entry dt{color:var(--text-muted);flex:none}.book__entry dd{margin:0}@page tree{size:A4 landscape;margin:10mm}@media print{:root{--bg:#fff;--surface:#fff;--surface-muted:#f4f4f4;--text:#000;--text-muted:#444;--border:#bbb;--primary:#7a2e1d;--male-text:#2d4a6d;--female-text:#7b3045;--male-strong:#1d5fae;--male-tint:#e6effa;--female-strong:#c0305f;--female-tint:#fce8ef;--shadow:none}.topbar,.no-print,.view-toolbar,.tree-controls,.tree-stats{display:none!important}.page{max-width:none;padding:0}.book__entry{break-inside:avoid}.book__generation h2{break-after:avoid}.tree-page{page:tree}.tree-viewport--print{background:0 0;border:none}}.not-found{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:16px 0 32px;display:flex}.not-found__board{aspect-ratio:480/300;border:1px solid var(--border);border-radius:var(--radius);touch-action:none;width:min(100%,560px)}.not-found__controls{gap:6px;display:flex}.not-found__key{border:1px solid var(--border);background:var(--surface);min-width:36px;height:30px;color:var(--text-muted);font:inherit;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;padding:0 10px;font-size:.8125rem}.not-found__key:active{background:var(--surface-muted)}.not-found__key--wide{min-width:80px}.not-found__score{margin:0;font-size:.875rem}.not-found h1{margin:12px 0 0;font-size:1.5rem}.not-found h1+p{margin:0 0 4px}.login__footer{color:var(--text-muted);text-align:center;margin:12px 0 0;font-size:.85rem}.legal{min-height:100dvh;padding:32px var(--gutter);justify-content:center;display:flex}.legal__card{width:100%;max-width:760px;height:fit-content;padding:28px clamp(20px,4vw,40px);line-height:1.65}.legal__head{border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:16px}.legal__back{font-size:.9rem}.legal h1{margin:12px 0 8px;font-size:1.75rem}.legal h2{color:var(--primary);margin:24px 0 8px;font-size:1.1rem}.legal p,.legal ul{margin:0 0 10px}.legal ul{padding-left:20px}.legal li+li{margin-top:6px}.trees-page__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.trees-page__head h1{margin:0}.tree-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:20px;margin:0;padding:0;list-style:none;display:grid}.tree-card-link{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);height:100%;color:var(--text);box-shadow:var(--shadow);flex-direction:column;text-decoration:none;transition:border-color .15s,transform .15s;display:flex;overflow:hidden}.tree-card-link:hover{border-color:var(--primary)}.tree-card-link__preview{aspect-ratio:16/10;border-bottom:1px solid var(--border);background:var(--surface-muted);color:var(--text-muted);place-items:center;display:grid}.tree-card-link__preview svg{opacity:.5;width:48px;height:48px}.tree-card-link__preview img{object-fit:cover;width:100%;height:100%}.tree-card-link__body{align-items:center;gap:12px;padding:14px 16px;display:flex}.tree-card-link__owner .avatar--initials{border-radius:50%;place-items:center;width:100%;height:100%;display:grid}.tree-card-link__text{flex-direction:column;gap:2px;min-width:0;display:flex}.tree-card-link__name{text-overflow:ellipsis;white-space:nowrap;font-size:1.05rem;overflow:hidden}.tree-card-link__meta{flex-wrap:wrap;align-items:center;gap:6px;font-size:.875rem;display:flex}@media (prefers-reduced-motion:reduce){.tree-card-link{transition:none}}.tree-empty h1{margin:0}.trees-page>.segmented{align-self:flex-start}.trees-page>.segmented button{white-space:nowrap}.tree-tooltip{z-index:3;border:1px solid var(--border);border-top:4px solid var(--male-strong);background:var(--surface);color:var(--text);pointer-events:none;border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;font-size:.85rem;display:flex;position:absolute;box-shadow:0 6px 24px #0000002e}.tree-tooltip--female{border-top-color:var(--female-strong)}.tree-tooltip strong{font-size:.95rem}.tree-tooltip__hint{margin-top:4px;font-size:.8125rem}.tree-panel{z-index:4;border:1px solid var(--border);border-top:4px solid var(--male-strong);border-radius:var(--radius) var(--radius) 0 0;background:var(--surface);flex-direction:column;gap:12px;max-height:55%;padding:16px;display:flex;position:absolute;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -8px 30px #0003}.tree-panel--female{border-top-color:var(--female-strong)}.tree-panel{animation:.22s ease-out tree-panel-in-up}.tree-panel--closing{animation:.18s ease-in forwards tree-panel-out-down}@keyframes tree-panel-in-up{0%{transform:translateY(100%)}}@keyframes tree-panel-out-down{to{transform:translateY(100%)}}@keyframes tree-panel-in-right{0%{transform:translate(100%)}}@keyframes tree-panel-out-right{to{transform:translate(100%)}}.tree-panel__head{align-items:center;gap:12px;display:flex}.tree-panel__title{flex:1;min-width:0}.tree-panel__title h2{overflow-wrap:anywhere}.tree-panel__title p{margin:2px 0 0;font-size:.85rem}.tree-panel__facts{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:.9rem;display:grid}.tree-panel__facts div{display:contents}.tree-panel__facts dt{color:var(--text-muted)}.tree-panel__facts dd{margin:0}.tree-panel__group h3{color:var(--text-muted);margin:0 0 4px;font-size:.85rem;font-weight:600}.tree-panel__group ul{margin:0;padding:0;font-size:.9rem;list-style:none}.tree-panel__notes{max-height:160px;margin:0;font-size:.9rem;overflow-y:auto}.link-button{color:var(--male-strong);font:inherit;text-align:left;text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:2px 0;font-weight:600;text-decoration:underline}.link-button--female{color:var(--female-strong)}@media (width>=720px){.tree-panel{top:0;right:calc(var(--page-gutter) - var(--gutter));width:var(--tree-panel-w);border-top:0;border-left:2px solid var(--male-strong);border-radius:0 var(--radius) var(--radius) 0;max-height:none;left:auto;box-shadow:-8px 0 30px #0000002e}.tree-panel--female{border-left-color:var(--female-strong)}.tree-panel{animation-name:tree-panel-in-right}.tree-panel--closing{animation-name:tree-panel-out-right}.tree-stage--panel-open .tree-controls{right:calc(var(--page-gutter) - var(--gutter) + var(--tree-panel-w) + var(--tree-inset))}}@media print{.tree-panel,.tree-tooltip{display:none!important}}.tree-export{position:relative}.tree-export summary{box-shadow:var(--shadow);list-style:none}.tree-export summary::-webkit-details-marker{display:none}.tree-export__menu{z-index:5;border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-direction:column;min-width:230px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0000002e}.tree-export__menu button{color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-direction:column;align-items:flex-start;padding:8px 10px;font-weight:600;display:flex}.tree-export__menu button:hover,.tree-export__menu button:focus-visible{background:var(--surface-muted)}.tree-export__menu small{color:var(--text-muted);font-weight:400}.tree-export__error{background:var(--danger-bg);width:240px;color:var(--danger);border-radius:8px;margin:0;padding:8px 10px;font-size:.85rem;position:absolute;top:calc(100% + 6px);right:0}.tree-kinship{border:1px solid var(--border);border-radius:var(--radius)}.tree-kinship__heading{font-size:inherit;margin:0}.tree-kinship__toggle{border-radius:var(--radius);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:10px 12px;font-weight:600;display:flex}.tree-kinship__toggle:hover{background:var(--surface-muted)}.tree-kinship__toggle svg{width:18px;height:18px;color:var(--primary);flex:none}.tree-kinship__toggle span{flex:1}.tree-kinship__toggle .tree-kinship__chevron{width:16px;height:16px;color:var(--text-muted);transition:transform .15s}.tree-kinship__toggle[aria-expanded=true] .tree-kinship__chevron{transform:rotate(180deg)}.tree-kinship--open .tree-kinship__toggle{border-radius:var(--radius) var(--radius) 0 0}.tree-kinship__body{flex-direction:column;gap:10px;padding:2px 12px 12px;display:flex}.tree-kinship__slot{align-items:flex-end;gap:8px;display:flex}.tree-kinship__slot .field{flex:1;min-width:0;margin-bottom:0}.tree-kinship__pick{flex:none;width:42px;min-height:42px;padding:0}.tree-kinship__pick svg{width:18px;height:18px}.tree-kinship__pick[aria-pressed=true]{border-color:var(--primary);background:var(--primary);color:var(--primary-text)}.tree-kinship__result p{margin:0 0 4px;font-size:.95rem}.tree-pick-hint{top:calc(var(--tree-inset) + 44px);left:calc(var(--page-gutter) - var(--gutter) + var(--tree-inset));z-index:3;background:var(--primary);max-width:calc(100% - 24px);color:var(--primary-text);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:12px;padding:6px 6px 6px 14px;font-size:.9rem;font-weight:500;display:flex;position:absolute}.tree-pick-hint__cancel{background:var(--on-primary-overlay);color:inherit;font:inherit;cursor:pointer;border:none;border-radius:999px;flex:none;padding:4px 12px}.tree-stage--picking .tree-card{cursor:crosshair}.tree-panel__actions{flex-wrap:wrap;gap:8px;display:flex}.tree-panel__actions .button{gap:6px}.tree-panel__actions svg{width:16px;height:16px;color:var(--text-muted);flex:none}.tree-panel__actions .button--danger svg{color:inherit}.date-input{flex-wrap:wrap;align-items:center;gap:6px 16px;display:flex}.date-input input:not([type=checkbox]){flex:200px;width:auto}.date-input .date-input__toggle{margin:0;font-size:.9rem}.avatar--custom{background:var(--surface-muted);color:var(--text-muted);box-shadow:inset 0 0 0 2px var(--border);font-size:1rem}.chip__name .badge{vertical-align:middle;margin-left:4px;font-size:.8125rem;font-weight:500}.dialog__delete{margin-right:auto}.confirm-dialog{width:min(420px,100vw - 32px)}.confirm-dialog h2{margin:0 0 8px;font-size:1.15rem}.confirm-dialog__body{margin-bottom:16px}.confirm-dialog__body p{margin:0 0 6px}@media (prefers-reduced-motion:reduce){.tree-panel{animation-duration:1ms}}
