.detailed text{font-family:var(--tree-person-font);fill:#000}.detailed .name{font-size:var(--tree-person-name-size);font-weight:700}.detailed .details,.detailed .id{font-size:var(--tree-person-details-size)}.tree-chart-svg .link{fill:none;stroke:var(--tree-link-color);stroke-width:1px}.tree-chart-svg .additional-marriage{stroke-dasharray:2}.detailed rect{stroke:var(--tree-person-border)}.detailed{stroke-width:2px}.detailed .id{font-style:italic;opacity:0;pointer-events:none}.detailed rect.nocolor{fill:#fff}.detailed rect.bysex{fill:var(--tree-unknown-fill)}.detailed rect.bysex.male{fill:var(--tree-male-fill)}.detailed rect.bysex.female{fill:var(--tree-female-fill)}.detailed rect.bygeneration{fill:var(--tree-generation-base)}.generation-11 .detailed rect.bygeneration,.generation1 .detailed rect.bygeneration{fill:#edffdb}.generation-10 .detailed rect.bygeneration,.generation2 .detailed rect.bygeneration{fill:#dbffdb}.generation-9 .detailed rect.bygeneration,.generation3 .detailed rect.bygeneration{fill:#dbffed}.generation-8 .detailed rect.bygeneration,.generation4 .detailed rect.bygeneration{fill:#dbffff}.generation-7 .detailed rect.bygeneration,.generation5 .detailed rect.bygeneration{fill:#dbedff}.generation-6 .detailed rect.bygeneration,.generation6 .detailed rect.bygeneration{fill:#dbdbff}.generation-5 .detailed rect.bygeneration,.generation7 .detailed rect.bygeneration{fill:#eddbff}.generation-4 .detailed rect.bygeneration,.generation8 .detailed rect.bygeneration{fill:#ffdbff}.generation-3 .detailed rect.bygeneration,.generation9 .detailed rect.bygeneration{fill:#ffdbed}.generation-2 .detailed rect.bygeneration,.generation10 .detailed rect.bygeneration{fill:#ffdbdb}.generation-1 .detailed rect.bygeneration,.generation11 .detailed rect.bygeneration{fill:#ffeddb}.tree-chart-svg .detailed .indi{cursor:pointer}.tree-chart-svg .detailed .indi:hover rect.border{stroke:var(--tree-person-hover);stroke-width:2px}.tree-chart-svg .detailed .indi.kinship-reference rect.border{stroke:#c62828;stroke-width:3px}.tree-chart-svg .detailed .indi.kinship-comparison rect.border{stroke:#1565c0;stroke-width:3px}.tree-chart-svg .detailed .indi.kinship-path rect.border{stroke:#ef6c00;stroke-width:2.5px}.expander{cursor:pointer}.tree-chart-svg .person-tree-photo image{pointer-events:none}.tree-chart-svg .person-tree-photo-deceased image{filter:grayscale(100%)}.tree-chart-svg .person-tree-photo-ribbon{fill:#1a1a1a;pointer-events:none}:root{color:#1f2933;background:#f4efe6;font-family:Segoe UI,system-ui,sans-serif;line-height:1.5}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:#8b4513;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;gap:1.5rem;padding:1rem 1.5rem;background:#2f2418;color:#f8f4ec}.brand a{color:inherit;font-weight:700;font-size:1.1rem}.app-nav a{color:#f8f4ec;margin-right:1rem}.app-nav a.active{text-decoration:underline}.user-panel{margin-left:auto;display:flex;align-items:center;gap:.75rem}.user-meta{font-size:.9rem;opacity:.85}.app-main{width:min(1100px,100%);margin:0 auto;padding:1.5rem}.page-header{margin-bottom:1rem}.page-header h1{margin:.25rem 0}.breadcrumb{margin:0;font-size:.9rem}.page-center{padding:3rem;text-align:center}.card{background:#fffdf8;border:1px solid #dfd3c0;border-radius:12px;padding:1.25rem;box-shadow:0 8px 24px #2f24180f}.page .card+.card{margin-top:1rem}.person-layout{display:grid;gap:1rem}.details-grid{display:grid;grid-template-columns:160px 1fr;gap:.5rem 1rem;margin:0 0 1rem}.details-grid dt{color:#6b5b4b}.details-grid dd{margin:0}.person-form,.inline-form{display:grid;gap:.75rem}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem}label{display:grid;gap:.35rem;font-size:.95rem}input,select,textarea{width:100%;padding:.55rem .7rem;border:1px solid #cdbfa8;border-radius:8px;background:#fff}.form-actions{display:flex;gap:.75rem}.btn{border:none;border-radius:8px;padding:.55rem .9rem;cursor:pointer}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:#8b4513;color:#fff}.btn-secondary{background:#e8dcc8;color:#2f2418}.btn-ghost{background:transparent;color:inherit}.btn-small{padding:.35rem .65rem;font-size:.85rem}.muted{color:#6b5b4b}.error{color:#b42318}.auth-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.auth-card{width:min(420px,100%)}.search-field{margin-bottom:1rem}.people-list,.relation-list,.events-list,.event-participants{list-style:none;padding:0;margin:0}.people-link{display:flex;justify-content:space-between;gap:1rem;padding:.65rem 0;border-bottom:1px solid #ece2d3}.relations-grid{display:grid;gap:1rem}.relation-card h3{margin:0 0 .35rem}.relation-list li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.45rem 0;border-bottom:1px solid #ece2d3}.relation-role{font-size:.85rem}.event-item+.event-item{margin-top:1rem;padding-top:1rem;border-top:1px solid #ece2d3}.event-title{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.35rem}.permissions-banner{margin:0 0 1rem;padding:.75rem 1rem;border-radius:8px;background:#efe4d2;color:#4a3b2f}@media(min-width:900px){.person-layout{grid-template-columns:1fr 1fr}.person-layout:not(.person-card-modal-layout)>.card:first-child{grid-row:span 2}}.tree-page .tree-controls-row{display:grid;grid-template-columns:2fr 1fr;gap:1rem}.tree-root-field{margin-bottom:0}.tree-mode-hint{margin:.75rem 0 0}.tree-root-picker{margin-top:.75rem;max-height:220px;overflow:auto}.people-link-button{width:100%;border:none;background:transparent;cursor:pointer;text-align:left;font:inherit;color:inherit}.people-link-button:hover span:first-child{text-decoration:underline}.tree-chart-shell{padding:0;overflow:hidden;height:var(--tree-viewport-height);display:flex;flex-direction:column}.tree-viewport-shell{display:flex;flex-direction:column;height:100%}.tree-chart-viewport{flex:1;overflow:hidden;touch-action:none;overscroll-behavior:contain;user-select:none;-webkit-user-select:none;cursor:var(--tree-grab-cursor);background:linear-gradient(var(--tree-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--tree-grid-line) 1px,transparent 1px);background-size:var(--tree-grid-size) var(--tree-grid-size);background-color:var(--tree-viewport-bg)}.tree-chart-viewport.is-grabbing{cursor:var(--tree-grabbing-cursor)}.tree-chart-content{width:max-content;height:max-content;padding:2rem;will-change:transform}.tree-chart-svg{display:block;overflow:visible}.tree-zoom-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid #dfd3c0;background:#fffdf8}.tree-zoom-hint{font-size:.85rem;margin-left:auto}.tree-picker-actions{display:flex;align-items:center;gap:.75rem}.tree-picker-actions .people-link-button{flex:1}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#2f24188c;display:flex;align-items:center;justify-content:center;padding:1rem}.modal-dialog{width:min(1120px,100%);max-height:calc(100vh - 2rem);background:#fffdf8;border:1px solid #dfd3c0;border-radius:12px;box-shadow:0 20px 60px #2f241840;display:flex;flex-direction:column}.modal-dialog-wide{width:min(760px,100%)}.admin-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.admin-section+.admin-section{margin-top:1.5rem}.admin-section h3{margin:0 0 .75rem}.admin-user-list{list-style:none;padding:0;margin:0}.admin-user-list li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.65rem 0;border-bottom:1px solid #ece2d3}.admin-form{display:flex;flex-direction:column;gap:.75rem}.admin-form h3{margin:0}.checkbox-field{display:flex;align-items:center;gap:.5rem}.invitation-link-box{padding:.75rem;border-radius:8px;background:#efe4d2;word-break:break-all}.invitation-link-box code{display:block;margin-top:.35rem;font-size:.85rem}.modal-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid #dfd3c0}.modal-title{font-weight:600}.modal-body{overflow:auto;padding:1rem}.person-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.person-card-header h2{margin:0 0 .25rem}.person-card-title{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.person-photo-section{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.person-avatar{position:relative;border-radius:8px;overflow:hidden;background:#efe4d2;border:1px solid #dfd3c0;flex-shrink:0}.person-avatar img{width:100%;height:100%;object-fit:cover;display:block}.person-avatar-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:700;color:#6b5a48;background:linear-gradient(145deg,#f5ebe0,#e8d9c8)}.person-avatar-card.person-avatar-deceased img{filter:none}.person-avatar-card .person-avatar-ribbon{position:absolute;left:0;right:0;bottom:0;height:6px;background:#1a1a1a;pointer-events:none}.person-layout-modal{gap:1rem}.person-card-modal-layout{display:grid;gap:.75rem}.person-card-main-grid{display:grid;gap:.75rem;align-items:start}@media(min-width:820px){.person-card-main-grid{grid-template-columns:1fr 1fr}}.person-profile-compact{padding:.85rem 1rem}.person-profile-compact.card,.person-life-events-panel,.person-relations-panel{margin:0}.person-relations-panel .relation-card{padding:0;border:none;box-shadow:none;background:transparent}.person-relations-panel .relation-card+.relation-card{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #ece2d3}.person-relations-panel h3,.person-life-events-panel h3,.person-events-all h3{margin:0 0 .75rem;font-size:1rem}.person-card-header-compact{margin-bottom:.5rem}.person-card-heading h2{margin:0;font-size:1.25rem;line-height:1.2}.person-card-meta{margin:.15rem 0 0;font-size:.85rem}.person-photo-controls{display:flex;align-items:center;gap:.25rem;margin-left:auto}.person-card-header-actions{flex-shrink:0}.person-profile-summary{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.profile-chip{display:inline-block;padding:.2rem .55rem;border-radius:999px;background:#efe4d2;font-size:.85rem}.profile-comment{flex:1 1 100%;margin:0;font-size:.9rem}.profile-edit-btn{margin-left:auto}.person-form-compact{gap:.55rem}.form-row-compact{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.5rem}.form-row-compact label,.person-form-compact label{font-size:.85rem}.form-row-compact input,.form-row-compact select,.person-form-compact textarea{padding:.4rem .55rem;font-size:.9rem}.profile-fullname-field{grid-column:span 2}.profile-display-hint{margin:0;font-size:.8rem}.person-layout-modal h3{margin-top:0}.kinship-panel{display:flex;flex-direction:column;gap:.75rem}.kinship-panel-row{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;align-items:center}.kinship-actions{flex-wrap:wrap}.kinship-path-chips{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 0}.kinship-swatch{display:inline-block;width:.75rem;height:.75rem;margin-left:.4rem;border-radius:2px;vertical-align:middle}.kinship-swatch-reference{background:#c62828}.kinship-swatch-comparison{background:#1565c0}.kinship-label{padding:.35rem .6rem;border-radius:6px;background:#efe4d2}.life-events-section header{margin-bottom:1rem}.person-life-events-panel,.person-relations-panel{max-height:min(70vh,900px);overflow:auto}.milestone-card{padding:.65rem 0;border-top:1px solid #ece2d3}.milestone-card:first-of-type{border-top:none;padding-top:0}.milestone-card h4{margin:0 0 .5rem;font-size:.92rem}.milestone-card-title-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.35rem}.milestone-card-title-row h4{margin:0}.milestone-checkbox{display:inline-flex;align-items:center;gap:.35rem;margin:0;font-size:.85rem;font-weight:400}.milestone-form{display:flex;flex-direction:column;gap:.5rem}.milestone-details{margin:0}.milestone-details-compact{grid-template-columns:88px 1fr;gap:.25rem .75rem;font-size:.9rem}.milestone-radio-group{border:1px solid #dfd3c0;border-radius:8px;padding:.75rem;display:flex;flex-wrap:wrap;gap:1rem}.milestone-radio-group legend{padding:0 .25rem}.milestone-radio-group label{display:inline-flex;align-items:center;gap:.35rem;margin:0}:root{--tree-viewport-height: 70vh;--tree-viewport-bg: #faf6ef;--tree-grid-line: #ece2d3;--tree-grid-size: 24px;--tree-grab-cursor: grab;--tree-grabbing-cursor: grabbing;--tree-person-font: "Segoe UI", Montserrat, verdana, arial, sans-serif;--tree-person-name-size: 12px;--tree-person-details-size: 10px;--tree-person-border: #2f2418;--tree-person-hover: #8b4513;--tree-link-color: #5c4a3a;--tree-male-fill: #dbffff;--tree-female-fill: #ffdbed;--tree-unknown-fill: #eeeeee;--tree-generation-base: #ffffdd}
