.password-gate{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#fce4ec,#e8f5e9)}.password-gate-card{background:#fff;border-radius:16px;padding:40px 48px;box-shadow:0 8px 32px #0000001f;display:flex;flex-direction:column;align-items:center;gap:16px;min-width:280px}.password-gate-logo-circle{width:72px;height:72px;border-radius:50%;background-color:var(--primary-pink);display:flex;align-items:center;justify-content:center}.password-gate-logo{width:40px;height:40px}.password-gate-title{font-family:Borel,cursive;font-weight:800;font-size:2rem;color:var(--primary-pink);margin:0}.password-gate-form{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}.password-gate-input{width:100%;padding:10px 14px;border:2px solid #ddd;border-radius:8px;font-size:1rem;outline:none;box-sizing:border-box;transition:border-color .15s}.password-gate-input:focus{border-color:var(--primary-pink)}.password-gate-input-error{border-color:#e53935;animation:shake .3s ease}.password-gate-error{color:#e53935;font-size:.85rem;align-self:flex-start}.password-gate-button{width:100%;padding:10px;background:var(--primary-pink);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .15s}.password-gate-button:hover{background:#c2185b}.logout-button{background:none;border:none;cursor:pointer;color:#fff;padding:4px 6px;border-radius:6px;opacity:.8;transition:opacity .15s;display:flex;align-items:center;transform:translateY(-4px)}.logout-button:hover{opacity:1}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}:root{--primary-pink: #e91e63;--primary-cyan: #1ee9e6;--text-dark: #333;--background-white: #fff;--link-gray: #ccc;--shadow-light: rgba(0, 0, 0, .15);--shadow-medium: rgba(0, 0, 0, .8);--node-label-font-size: 14px}.symbol-text{font-weight:400}.gender-symbol{font-size:1.15em;line-height:1;vertical-align:baseline;margin-left:4px;display:inline;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.name-with-symbols{display:inline}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;width:100%;height:100%}.navbar{font-family:Dancing Script,cursive;font-weight:800;width:100vw;background-color:var(--primary-pink);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;display:flex;flex-direction:column;color:#fff;font-size:1.5rem;padding:8px 20px;box-sizing:border-box;position:relative;z-index:100;gap:8px}.navbar-row{display:flex;align-items:center;width:100%}.navbar-row-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.navbar-row-top .back-button{justify-self:start}.navbar-row-top .navbar-title{grid-column:2}.navbar-row-top .logout-button{justify-self:end}.navbar-row-bottom{justify-content:space-between;gap:10px}.navbar-row-bottom-left{display:flex;align-items:center;gap:10px}.navbar-title{display:flex;font-family:Borel,cursive;font-size:1.6rem}@media (max-width: 600px){.navbar{padding:8px 14px;gap:6px}.navbar-row-bottom{flex-wrap:wrap;gap:8px}.search-bar{flex:1 1 100%}.search-input-wrapper{width:100%;box-sizing:border-box}.search-input-wrapper input{width:100%}.search-results{right:auto;left:50%;transform:translate(-50%);width:calc(100vw - 20px);max-width:320px}.legend-dropdown .dropdown-arrow{display:none}.legend-dropdown .legend-dropdown-content{position:fixed!important;top:9rem!important;right:10px!important;left:10px!important;min-width:unset!important;max-width:none!important;max-height:calc(100vh - 8rem);overflow-y:auto;overflow-x:hidden;width:auto!important}.legend-item{flex-wrap:wrap}.legend-item span{word-break:break-word}}.search-bar{position:relative;z-index:1001}.search-input-wrapper{display:flex;align-items:center;background:#fff3;border:2px solid rgba(255,255,255,.5);border-radius:20px;padding:6px 12px;transition:all .2s ease}.search-input-wrapper:focus-within{background:#ffffff4d;border-color:#fffc}.search-icon{width:18px;height:18px;color:#fff;margin-right:8px;flex-shrink:0}.search-input-wrapper input{background:transparent;border:none;outline:none;color:#fff;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;width:150px}.search-input-wrapper input::placeholder{color:#ffffffb3}.search-results{position:absolute;top:100%;right:0;margin-top:8px;background:#fff;border-radius:12px;box-shadow:0 4px 20px #0003;max-height:400px;overflow-y:auto;min-width:280px}.search-result-item{display:flex;align-items:center;gap:12px;padding:10px 12px;cursor:pointer;transition:background .15s ease}.search-result-item:first-child{border-radius:12px 12px 0 0}.search-result-item:last-child{border-radius:0 0 12px 12px}.search-result-item:only-child{border-radius:12px}.search-result-item:hover,.search-result-item.selected{background:#f5f5f5}.search-result-photo{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0}.search-result-photo-placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-cyan),#00acc1);color:#fff;font-size:16px;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.search-result-info{flex:1;min-width:0}.search-result-name{font-size:14px;font-weight:600;color:var(--text-dark);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.search-result-nickname{font-size:12px;color:#666;font-style:italic;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.search-result-year{font-size:11px;color:#999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.search-highlight{animation:highlight-pulse 2s ease-out}@keyframes highlight-pulse{0%{background-color:#e91e634d;box-shadow:0 0 0 4px #e91e634d}to{background-color:transparent;box-shadow:0 0 0 0 transparent}}.panel-card{background:var(--background-white);padding:15px;border-radius:8px;box-shadow:0 2px 8px var(--shadow-light);z-index:1000;transition:all .3s ease}.panel-card.collapsed{max-width:fit-content;padding:10px 15px}.panel-title{font-weight:700;margin-bottom:12px;color:var(--primary-pink);font-size:16px;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:5px}.panel-card.collapsed .panel-title{margin-bottom:0}.panel-title:hover{opacity:.7}.panel-title span{font-size:18px;font-weight:700;width:20px;text-align:center}.legend-dropdown{position:relative}.legend-dropdown-button{display:flex;align-items:center;gap:8px;background:#fff3;border:2px solid rgba(255,255,255,.5);border-radius:20px;padding:6px 16px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.legend-dropdown-button:hover{background:#ffffff4d;border-color:#fffc}.legend-dropdown-button svg{width:18px;height:18px}.dropdown-arrow{font-size:10px;transition:transform .2s ease}.dropdown-arrow.open{transform:rotate(180deg)}.legend-dropdown-content{position:absolute;top:calc(100% + 8px);right:0;background:var(--background-white);border-radius:12px;box-shadow:0 4px 20px #0003;padding:16px;min-width:280px;max-width:350px;z-index:1001;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;color:var(--text-dark)}.legend-section{margin-bottom:12px}.legend-section:last-child{margin-bottom:0}.legend-subtitle{font-weight:600;font-size:13px;margin-bottom:8px;color:var(--text-dark)}.legend-items{display:flex;flex-direction:column;gap:8px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.legend-notes p{margin:5px 0;font-size:13px;color:var(--text-dark)}.legend-node{stroke:var(--primary-cyan);stroke-width:2px}.legend-node.extendable{fill:var(--primary-cyan)}.legend-node.collapsible{fill:var(--primary-pink)}.legend-node.non-extendable{fill:var(--background-white)}.text-size-card{position:fixed;bottom:20px;left:20px}.font-controls{display:flex;gap:8px}.font-controls button{width:36px;height:36px;border:none;border-radius:8px;background:var(--background-white);color:var(--text-dark);font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 2px 8px var(--shadow-light);transition:background-color .2s,transform .1s}.font-controls button:hover{background-color:#f0f0f0}.font-controls button:active{transform:scale(.95)}.font-controls button:disabled,.font-controls button.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.person{stroke:var(--primary-cyan);stroke-width:3px}.extendable,.collapsible{cursor:pointer}.extendable{fill:var(--primary-cyan)}.collapsible{fill:var(--primary-pink)}.non-extendable{fill:var(--background-white)}.node-label{font-size:var(--node-label-font-size);fill:var(--text-dark)}.link{fill:none;stroke:var(--link-gray);stroke-width:2px}.tooltip{position:absolute;font-size:var(--node-label-font-size);padding:12px;background:var(--shadow-medium);color:var(--background-white);border-radius:2px;pointer-events:auto}.spacer{margin-right:.5rem;height:2rem}svg{cursor:grab}.view-toggle-group{position:relative;display:flex;background:#fff3;border:2px solid rgba(255,255,255,.5);border-radius:20px;padding:2px;gap:2px}.view-toggle-slider{position:absolute;top:2px;left:2px;width:calc(50% - 3px);height:calc(100% - 4px);background:#ffffffe6;border-radius:16px;transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:0}.view-toggle-group[data-active=tree] .view-toggle-slider{transform:translate(calc(100% + 2px))}.view-toggle-option{position:relative;display:flex;align-items:center;gap:6px;background:transparent;border:none;border-radius:16px;padding:4px 14px;color:#fffc;font-size:14px;font-weight:500;cursor:pointer;transition:color .25s ease;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;z-index:1}.view-toggle-option svg{flex-shrink:0}.view-toggle-option:hover{color:#fff}.view-toggle-option.active{color:#333}.view-toggle{display:flex;align-items:center;gap:8px;background:#fff3;border:2px solid rgba(255,255,255,.5);border-radius:20px;padding:6px 16px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.view-toggle:hover{background:#ffffff4d;border-color:#fffc}.view-toggle svg{width:18px;height:18px;fill:currentColor}.card-view{position:absolute;top:6.5rem;left:0;right:0;bottom:0;overflow-y:auto;padding:10px 20px 20px;background:#f5f5f5}@media (max-width: 600px){.card-view{position:fixed;top:9rem;bottom:0;height:auto;padding:10px;overscroll-behavior:contain}}@media (max-width: 500px){.card-view{top:9rem}}@media (max-width: 400px){.card-view{top:9rem}}.generation-section{margin-bottom:30px}.generation-header{position:sticky;top:0;background:linear-gradient(135deg,var(--primary-pink),#c2185b);color:#fff;padding:12px 20px;margin:0 0 16px;border-radius:8px;font-size:var(--node-label-font-size);font-weight:600;display:flex;align-items:center;gap:10px;box-shadow:0 2px 8px var(--shadow-light);z-index:10}.generation-count{font-weight:400;opacity:.8}.person-card-grid{display:grid;grid-template-columns:1fr;gap:16px}@media (min-width: 600px){.person-card-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 900px){.person-card-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1200px){.person-card-grid{grid-template-columns:repeat(4,1fr)}}.person-card{background:var(--background-white);border-radius:12px;box-shadow:0 2px 8px var(--shadow-light);overflow:hidden;display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease}.person-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px var(--shadow-light)}.person-card-photo{width:100%;height:200px;overflow:hidden;background:linear-gradient(135deg,#e0e0e0,#f5f5f5)}.person-card-photo img{width:100%;height:100%;object-fit:cover}.person-card-photo-placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-cyan),#00acc1)}.person-card-photo-placeholder span{font-size:64px;font-weight:600;color:#fff;text-transform:uppercase}.person-card-info{padding:16px;font-size:var(--node-label-font-size)}.person-card-name{font-weight:600;color:var(--text-dark);margin-bottom:4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.person-card-badges{display:flex;gap:4px}.badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:12px;font-weight:700}.badge-adopted{background:var(--primary-cyan);color:#fff}.badge-divorced{background:#ff9800;color:#fff;font-size:10px;line-height:1;padding-bottom:2px}.badge-other-marriage{background:#9c27b0;color:#fff}.person-card-nickname{color:#666;font-style:italic;margin-bottom:4px}.person-card-full-name{color:#888;font-size:.9em;margin-bottom:4px}.person-card-years{color:var(--primary-pink);font-weight:500;margin-bottom:8px}.person-card-places{color:#666;margin-bottom:8px}.person-card-place{margin-bottom:2px}.person-card-profession{color:#555;font-size:.9em;border-top:1px solid #eee;padding-top:8px;margin-top:8px}.family-section{margin-bottom:24px}.family-card{background:var(--background-white);border-radius:12px;box-shadow:0 2px 8px var(--shadow-light);overflow:hidden}.family-card-header{background:linear-gradient(135deg,var(--primary-pink),#c2185b);color:#fff;padding:12px 20px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:opacity .2s ease}.family-card-header:hover{opacity:.95}.family-card-header:focus{outline:3px solid var(--primary-cyan);outline-offset:-3px}.family-card-header:focus:not(:focus-visible){outline:none}.family-card-title{margin:0;font-size:18px;font-weight:600}.family-card-meta{display:flex;align-items:center;gap:12px}.descendant-count{font-size:14px;opacity:.9}.expand-arrow{font-size:12px;transition:transform .2s ease}.founding-couple{display:flex;align-items:flex-start;gap:12px;padding:16px;flex-wrap:wrap}.founder-person{display:flex;align-items:center;gap:8px}.couple-connector{font-size:24px;color:var(--primary-pink);font-weight:600}.founder-mini{display:flex;align-items:center;gap:12px}.founder-mini-photo{width:70px;height:70px;border-radius:50%;overflow:hidden;flex-shrink:0;background:linear-gradient(135deg,#e0e0e0,#f5f5f5);border:3px solid var(--primary-pink)}.founder-mini-photo img{width:100%;height:100%;object-fit:cover}.founder-mini-photo-placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-cyan),#00acc1)}.founder-mini-photo-placeholder span{font-size:28px;font-weight:600;color:#fff;text-transform:uppercase}.founder-mini-info{flex:1}.founder-mini-name{font-weight:600;font-size:16px;color:var(--text-dark);display:flex;align-items:center;gap:6px}.founder-mini-nickname{color:#666;font-style:italic;font-size:13px}.founder-mini-profession{color:#555;font-size:12px;margin-top:2px}.founder-mini-birth,.founder-mini-death{color:#333;font-size:12px}.founder-mini-military{color:#2e5a1c;font-size:12px;margin-top:2px}.founder-mini-other-spouses{color:#666;font-size:12px;font-style:italic;margin-top:2px}.founder-mini-ancestors{color:#1565c0;font-size:12px;cursor:pointer;margin-top:4px}.founder-mini-ancestors:hover{text-decoration:underline}.founder-mini-ancestors:focus{outline:2px solid var(--primary-cyan);outline-offset:2px;border-radius:4px}.founder-mini-ancestors:focus:not(:focus-visible){outline:none}.direct-children{padding:0 16px 16px;border-top:1px solid #eee}.children-label{color:#666;font-size:14px;font-weight:500;margin:12px 0}.children-list{display:flex;flex-direction:column;gap:8px}.no-children{padding:16px;color:#999;font-style:italic;border-top:1px solid #eee}.expandable-person{border-left:2px solid #e0e0e0;padding-left:12px}.expandable-person-card{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#f8f8f8;border-radius:8px;transition:background .2s ease}.expandable-person-card.has-children{cursor:pointer}.expandable-person-card.has-children:hover{background:#f0f0f0}.expandable-person-card.has-children:focus{outline:3px solid var(--primary-cyan);outline-offset:2px}.expandable-person-card.has-children:focus:not(:focus-visible){outline:none}.expandable-person-content{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.spouse-connector{font-size:16px;color:var(--primary-pink);font-weight:600;margin:0 4px}.children-section{margin-top:8px;padding-left:8px}.additional-spouse{display:flex;align-items:center;gap:8px;padding:8px;background:#fff8e1;border-radius:6px;margin-bottom:8px}.spouse-label{color:#666;font-size:12px;font-style:italic}.other-relationship-section{margin-top:12px;padding-top:12px;border-top:1px dashed #ddd}.other-relationship-label{color:#888;font-size:12px;font-style:italic;margin-bottom:8px;padding-left:4px}.person-mini{display:flex;align-items:center;gap:10px}.person-mini-photo{width:50px;height:50px;border-radius:50%;overflow:hidden;flex-shrink:0;background:linear-gradient(135deg,#e0e0e0,#f5f5f5)}.person-mini-photo img{width:100%;height:100%;object-fit:cover}.person-mini-photo-placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-cyan),#00acc1)}.person-mini-photo-placeholder span{font-size:20px;font-weight:600;color:#fff;text-transform:uppercase}.person-mini-info{flex:1;min-width:0}.person-mini-name{font-weight:600;font-size:14px;color:var(--text-dark);display:flex;align-items:center;gap:6px}.person-mini-nickname{color:#666;font-style:italic;font-size:12px}.person-mini-profession{color:#555;font-size:11px;margin-top:2px}.person-mini-military{color:#2e5a1c;font-size:11px;margin-top:2px}.person-mini-birth,.person-mini-death{color:#333;font-size:11px}.person-mini-other-spouses{color:#666;font-size:11px;font-style:italic;margin-top:2px}.person-mini-ancestors{color:#1565c0;font-size:12px;cursor:pointer;margin-top:4px}.person-mini-ancestors:hover{text-decoration:underline}.person-mini-ancestors:focus{outline:2px solid var(--primary-cyan);outline-offset:2px;border-radius:4px}.person-mini-ancestors:focus:not(:focus-visible){outline:none}.jump-to-tree{display:inline-flex;align-items:center;gap:4px;color:#1565c0;font-size:12px;cursor:pointer;margin-top:4px}.jump-to-tree:hover{text-decoration:underline}.jump-to-tree:focus{outline:2px solid var(--primary-cyan);outline-offset:2px;border-radius:4px}.jump-to-tree:focus:not(:focus-visible){outline:none}.jump-to-tree svg{width:12px;height:12px}.family-card>.family-photos-btn{margin-left:16px}.family-photos-btn{display:inline-flex;align-items:center;gap:6px;background:#e91e631a;border:1px solid rgba(233,30,99,.3);border-radius:20px;padding:6px 14px;color:var(--primary-pink);font-size:13px;font-weight:500;cursor:pointer;transition:background .2s;margin:8px 0}.family-photos-btn:hover{background:#e91e6333}.photo-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;z-index:2000;display:flex;align-items:center;justify-content:center}.photo-modal{position:relative;width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center;gap:12px}.photo-modal-close{position:absolute;top:-40px;right:0;background:none;border:none;color:#fff;font-size:24px;cursor:pointer;padding:4px 8px;z-index:1}.photo-modal-content{position:relative;display:flex;align-items:center;justify-content:center;width:100%}.photo-modal-img{max-width:100%;max-height:80vh;object-fit:contain;border-radius:6px}.photo-modal-arrow{position:absolute;top:50%;transform:translateY(-50%);background:#fff3;color:#fff;border:none;width:40px;height:40px;border-radius:50%;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;line-height:1}.photo-modal-arrow:hover{background:#fff6}.photo-modal-prev{left:8px}.photo-modal-next{right:8px}.photo-modal-dots{display:flex;gap:8px}.photo-modal-dot{width:10px;height:10px;border-radius:50%;background:#fff6;cursor:pointer;transition:background .2s}.photo-modal-dot.active{background:#fff}.photo-modal-people{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:90vw}.photo-modal-person-chip{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:20px;padding:4px 12px;font-size:.85rem}.photo-modal-person-chip--clickable{cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s}.photo-modal-person-chip--clickable:hover,.photo-modal-person-chip--clickable:focus-visible{background:#ffffff4d;border-color:#fff9;outline:none}@media (max-width: 600px){.view-toggle-group,.jump-to-tree{display:none}}
