:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f4ee;--fg:#1d1f1c;--muted:#62665f;--accent:#2f5d50;--on-accent:#fff;--ok:#2e7d4f;--bad:#b3392b;--danger-fg:#a12d22;--danger-bg:#fbe4e1;--warn-bg:#fff1c7;--surface:#fff;--surface-2:#ece8df;--border:#e0dbd0;--border-strong:#c9c2b4;--backdrop:#14181473;font-family:system-ui,sans-serif}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#141614;--fg:#ecebe6;--muted:#9a9d96;--accent:#6fb39d;--on-accent:#0f1a16;--ok:#5cb47f;--bad:#e0675a;--danger-fg:#f2a29c;--danger-bg:#3a1f1c;--warn-bg:#3d3214;--surface:#1d201d;--surface-2:#2a2e2a;--border:#2c302c;--border-strong:#3c413c;--backdrop:#0009}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);margin:0;line-height:1.45}a{color:var(--accent)}input,select,textarea,button,.button{font:inherit;color:var(--fg);background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;padding:.5rem .75rem}button,.button{cursor:pointer;background:var(--surface-2);text-decoration:none}button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}button.danger{border-color:var(--bad);color:var(--danger-fg)}button.link{color:var(--muted);background:0 0;border:0;padding:0;text-decoration:underline}button:disabled{opacity:.4;cursor:default}.icon-button{min-width:2.5rem;line-height:1}.stack{gap:1rem;display:grid}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.muted{color:var(--muted)}.error{color:var(--danger-fg);background:var(--danger-bg);border-radius:6px;padding:.5rem .75rem}.notice{background:var(--warn-bg);border-radius:6px;padding:.5rem .75rem}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem}.nav{padding:.6rem 1rem;padding-top:max(.6rem, env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--border-strong);flex-wrap:wrap;align-items:center;gap:.6rem 1.25rem;display:flex}.nav a{color:var(--muted);text-decoration:none}.nav a.active,.nav-brand{color:var(--fg)}.nav-brand{align-items:center;gap:.5rem;display:flex}.nav-brand,.nav-brand:visited{color:var(--fg)}.nav-toggle{margin-left:auto}.nav-links{flex-direction:column;flex-basis:100%;gap:.75rem;padding:.5rem 0;display:none}.nav.open .nav-links{display:flex}.nav-user{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.main{max-width:1100px;padding:1rem;padding-bottom:max(1rem, env(safe-area-inset-bottom));margin:0 auto}.login{max-width:340px;margin:12vh auto;padding:0 1rem}.login h1{align-items:center;gap:.6rem;display:flex}.login button.link{justify-self:start}.login-footer{margin-top:1.5rem}@media (width>=800px){.nav-toggle{display:none}.nav-links,.nav.open .nav-links{display:contents}.nav-user{margin-left:auto}.main{padding:1.5rem}}.icon-menu{position:relative}.icon-menu-button{min-width:2.3rem;padding:.4rem .5rem;font-size:1.1rem;line-height:1}.icon-menu-list{z-index:20;background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;min-width:10rem;padding:.3rem;display:grid;position:absolute;top:calc(100% + .35rem);right:0;box-shadow:0 8px 24px #0003}.icon-menu-list button{text-align:left;background:0 0;border:0;border-radius:5px;align-items:center;gap:.6rem;width:100%;padding:.45rem .6rem;display:flex}.icon-menu-list button:hover,.icon-menu-list button:focus-visible{background:var(--surface-2);outline:none}.icon-menu-list button.selected{font-weight:600}.icon-menu-list button.selected:after{content:"✓";color:var(--ok);margin-left:auto}.stack label,.row label{color:var(--muted);gap:.3rem;font-size:.9rem;display:grid}.stack label.checkbox{align-items:center;gap:.45rem;display:flex}h1,h2{margin:0}h2{margin-top:.75rem;font-size:1.2rem}button{justify-content:center;align-items:center;gap:.4rem;display:inline-flex}button.link.danger{color:var(--danger-fg)}.icon{flex-shrink:0}.narrow{max-width:640px}.users-page{max-width:820px}.invite-form{max-width:480px}.hint{color:var(--muted);margin:0;font-size:.85rem}.error-text{color:var(--danger-fg)}.notice.success{background:color-mix(in srgb, var(--ok) 15%, var(--surface))}.item-list{border-top:1px solid var(--border);margin:0;padding:0;list-style:none}.item-list li{border-bottom:1px solid var(--border);overflow-wrap:anywhere;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.75rem 0;display:flex}.item-list li.inactive>div:first-child{opacity:.6}.passkey-prompt{gap:.6rem;margin-bottom:1.5rem;display:grid}.password-field .hint{min-height:1.2em}.password-strength{font-weight:600}.password-strength.weak{color:var(--danger-fg)}.password-strength.ok{color:var(--accent)}.password-strength.strong{color:var(--ok)}.token-created{border:1px solid var(--accent);border-radius:8px;padding:1rem}.copyable{justify-items:start;gap:.4rem;display:grid}.copyable code{background:var(--surface-2);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:4px;max-width:100%;padding:.4rem .5rem}.confirm-dialog{width:min(420px,100vw - 2rem);color:var(--fg);background:var(--surface);border:1px solid var(--border-strong);border-top:4px solid var(--accent);border-radius:10px;padding:1.25rem 1.25rem 1rem;box-shadow:0 18px 48px #0006}.confirm-dialog.danger{border-top-color:var(--bad)}.confirm-dialog::backdrop{background:var(--backdrop)}.confirm-message{color:var(--muted);margin:0}.confirm-actions{justify-content:flex-end;margin-top:.4rem}.confirm-dialog button.danger-fill{background:var(--bad);border-color:var(--bad);color:var(--on-accent)}@media (pointer:coarse){input,select,button{min-height:2.75rem;font-size:max(1rem,16px)}button.link{min-height:0}}.button{align-items:center;gap:.4rem;display:inline-flex}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.icon-button.small{min-width:0;min-height:0;color:var(--muted);background:0 0;border-color:#0000;padding:.2rem .35rem}.branch-select{padding:.35rem .5rem}.badge{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;padding:.05rem .45rem;font-size:.8rem;display:inline-block}.badge.branch{background:color-mix(in srgb, var(--accent) 15%, var(--surface));color:var(--fg)}.badge.other-branch{background:var(--warn-bg);color:var(--fg)}.page-heading{justify-content:space-between}.filters{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.5rem .75rem;display:grid}.filters label{color:var(--muted);gap:.3rem;font-size:.9rem;display:grid}.filters input,.filters select{width:100%;min-width:0}.plain-list{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.plain-list li{align-items:center;gap:.25rem;display:flex}fieldset{border:1px solid var(--border);border-radius:8px;min-width:0;margin:0;padding:.6rem .75rem .75rem}legend{color:var(--muted);padding:0 .25rem;font-size:.9rem}.form-grid{grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:.75rem;display:grid}.form-grid label{color:var(--muted);align-content:start;gap:.3rem;font-size:.9rem;display:grid}textarea{resize:vertical;width:100%}label.checkbox{align-items:center;gap:.45rem;display:flex}.partial-date .row{align-items:end}.partial-date input.year{width:5.5rem}.partial-date input.day{width:4rem}.partial-date label.checkbox{padding-bottom:.5rem}.portrait{object-fit:cover;background:var(--surface-2);border-radius:50%;flex-shrink:0}.portrait.small{width:2rem;height:2rem}.portrait.large{width:6rem;height:6rem}.portrait.initials{color:var(--muted);text-transform:uppercase;place-items:center;font-size:.8rem;font-weight:600;display:inline-grid}.portrait.large.initials{font-size:1.8rem}.person-link{overflow-wrap:anywhere;align-items:center;gap:.5rem;display:inline-flex}.kin-label{color:var(--muted);font-size:.8rem;display:block}.lifespan{white-space:nowrap;font-size:.9rem}.person-list,.event-list{border-top:1px solid var(--border);margin:0;padding:0;list-style:none}.person-row,.event-row{border-bottom:1px solid var(--border);overflow-wrap:anywhere;gap:.15rem .75rem;padding:.55rem 0;display:grid}.person-row{grid-template-columns:2rem 1fr;align-items:center}.person-row .life{color:var(--muted);grid-column:2;font-size:.9rem}.person-row .life:empty,.person-row.header,.event-row.header{display:none}.event-row{grid-template-columns:auto 1fr}.event-date{color:var(--muted);white-space:nowrap}.event-type{font-weight:600}.event-place,.event-persons{grid-column:1/-1}.event-place:empty{display:none}@media (width>=800px){.person-row,.person-row.header{grid-template-columns:2rem 2fr 1.2fr 1.2fr;display:grid}.person-row .life{color:var(--fg);grid-column:auto}.person-row .life:empty{display:block}.event-row,.event-row.header{grid-template-columns:11rem 9rem 1fr 1.5fr;display:grid}.event-place,.event-persons{grid-column:auto}.event-place:empty{display:block}.person-row.header,.event-row.header{color:var(--muted);font-size:.85rem}}.person-page{max-width:900px}.person-header{flex-wrap:wrap;align-items:flex-start;gap:1rem 1.25rem;display:flex}.person-heading{flex:18rem;gap:.75rem}.person-heading p{margin:.2rem 0 0}.birth-death{flex-wrap:wrap;gap:.5rem;margin:0;display:flex}.birth-death-item{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.4rem .75rem}.birth-death-item.birth,.birth-death-item.death{border-left:4px solid var(--accent)}.birth-death-item.death{border-left-color:var(--muted)}.birth-death-item dt{color:var(--muted);font-size:.8rem}.birth-death-item dd{margin:0;font-weight:600}.markdown{max-width:70ch}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.kin-groups{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem 1.5rem;display:grid}.kin-group h3{color:var(--muted);margin:0 0 .4rem;font-size:.95rem;font-weight:600}.timeline{border-left:2px solid var(--border);margin:0;padding:0;list-style:none}.timeline-item{grid-template-columns:1fr auto;gap:.1rem .5rem;padding:.5rem 0 .5rem .9rem;display:grid;position:relative}.timeline-item:before{content:"";background:var(--border-strong);border-radius:50%;width:.6rem;height:.6rem;position:absolute;top:.85rem;left:-.4rem}.timeline-item.life:before{background:var(--accent);width:.8rem;height:.8rem;top:.75rem;left:-.5rem}.timeline-item.life .timeline-body>div:first-child{font-size:1.05rem}.timeline-date{color:var(--muted);grid-column:1;font-size:.85rem}.timeline-body{grid-column:1}.timeline-item>.icon-button{grid-area:1/2/span 2;align-self:start}.timeline-body p{margin:.2rem 0 0}.thumbnail-grid{grid-template-columns:repeat(auto-fill,minmax(6.5rem,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.thumbnail-grid a{color:var(--fg);gap:.3rem;font-size:.85rem;text-decoration:none;display:grid}.thumbnail-grid img{aspect-ratio:1;object-fit:cover;background:var(--surface-2);border-radius:6px;width:100%}.generations{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.generations li{padding-left:calc(var(--generation,0) * min(1.5rem, 4vw));align-items:center;gap:.5rem;display:flex}.generation{text-align:center;min-width:1.6rem;color:var(--muted);border:1px solid var(--border);border-radius:999px;font-size:.75rem}.form-dialog{width:min(560px,100vw - 1rem);max-height:calc(100dvh - 1rem);color:var(--fg);background:var(--bg);border:1px solid var(--border-strong);border-radius:10px;padding:1rem 1.25rem;box-shadow:0 18px 48px #0006}.form-dialog::backdrop{background:var(--backdrop)}.form-dialog-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.form-dialog-header h2{margin:0}.dialog-actions{justify-content:flex-end}.dialog-actions .danger{margin-right:auto}.participant-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.participant-list li{flex-wrap:wrap;align-items:center;gap:.4rem .6rem;display:flex}.participant-list li strong{flex:100%}.participant-list li input:not([type=checkbox]){flex:8rem}.person-picker{gap:.3rem;display:grid}.picker-matches{border:1px solid var(--border);background:var(--surface);border-radius:6px;margin:0;padding:.25rem;list-style:none}.picker-matches li.muted{padding:.4rem .6rem}.picker-matches button{text-align:left;background:0 0;border:0;flex-wrap:wrap;justify-content:space-between;gap:0 .75rem;width:100%;padding:.4rem .6rem;display:flex}.picker-matches button:hover,.picker-matches button:focus-visible{background:var(--surface-2)}.nav-search{border:1px solid var(--border-strong);background:var(--bg);min-width:0;max-width:22rem;color:var(--muted);border-radius:999px;flex:8rem;align-items:center;gap:.4rem;padding:0 .6rem;display:flex}.nav-search input{background:0 0;border:0;outline:none;flex:1;min-width:0;padding:.4rem 0}.nav-search:focus-within{border-color:var(--accent)}@media (width>=800px){.nav-search{flex:0 11rem}}.thumbnail-grid .thumbnail{display:block;position:relative}.thumbnail-grid .thumbnail .badge{position:absolute;bottom:.3rem;left:.3rem}.thumbnail-grid .thumbnail .badge.portrait-mark{background:var(--accent);color:var(--on-accent);left:auto;right:.3rem}.thumbnail-title{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.thumbnail-grid .hint{margin-top:-.2rem}.upload .row{gap:.5rem}.document-page{max-width:1100px}.document-layout{align-items:start;gap:1.25rem;display:grid}.document-view{justify-self:start;max-width:100%;display:block}.document-view img{object-fit:contain;background:var(--surface-2);border-radius:6px;max-width:100%;max-height:75vh;display:block}.document-view.pdf img{width:10rem}.document-info{overflow-wrap:anywhere;min-width:0}.document-info p{margin:0}.document-description{white-space:pre-wrap}@media (width>=800px){.document-layout{grid-template-columns:minmax(0,3fr) minmax(18rem,2fr)}}.portrait-choices{grid-template-columns:repeat(auto-fill,minmax(6rem,1fr));gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.portrait-choices button{background:var(--surface-2);border:3px solid #0000;border-radius:8px;width:100%;padding:0;display:block;overflow:hidden}.portrait-choices button.selected{border-color:var(--accent)}.portrait-choices img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.search-places{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.search-places>li{gap:.3rem;display:grid}.search-places .plain-list{border-left:2px solid var(--border);padding-left:.75rem}.plain-list li.search-event{flex-wrap:wrap;gap:0 .6rem}.trash-item{align-items:center;gap:.75rem;min-width:0;display:flex}.trash-thumbnail{object-fit:cover;background:var(--surface-2);border-radius:4px;width:3rem;height:3rem;display:block}.event-types code{font-size:.85em}.item-list.event-types li{flex-wrap:nowrap}.event-types li>div:first-child{flex:1;min-width:0}.event-types .row{flex-wrap:nowrap;gap:.3rem}
