:root{--primary: #3b82f6;--secondary: #6366f1;--accent: #f43f5e;--bg: #0f172a;--card-bg: rgba(30, 41, 59, .7);--glass: rgba(255, 255, 255, .05);--glass-border: rgba(255, 255, 255, .1)}*{box-sizing:border-box}body{background-color:var(--bg);background-image:radial-gradient(at 0% 0%,hsla(210,100%,20%,.15) 0px,transparent 50%),radial-gradient(at 100% 100%,hsla(240,100%,20%,.15) 0px,transparent 50%);min-height:100vh}.app-main{width:100%;height:100vh}.tree-container{position:relative;width:100%;height:100vh;overflow:hidden}.glass{background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);box-shadow:0 8px 32px #0000005e}.header-overlay{position:absolute;top:1.25rem;left:1.25rem;padding:1.25rem 1.5rem;border-radius:1rem;z-index:10}.title-gradient{font-size:1.5rem;font-weight:700;margin:0;background:linear-gradient(135deg,#60a5fa,#a78bfa,#f472b6);-webkit-background-clip:text;background-clip:text;color:transparent}.subtitle{font-size:.8rem;color:#64748b;margin:.2rem 0 0;letter-spacing:.05em}.stats-row{display:flex;gap:.5rem;margin-top:.75rem}.stat-badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.7rem;color:#94a3b8;background:#ffffff0d;padding:.25rem .6rem;border-radius:9999px;border:1px solid rgba(255,255,255,.08)}.gen-badge{display:inline-flex;align-items:center;gap:.2rem}.gen-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.search-area{position:absolute;top:1.25rem;right:1.25rem;display:flex;align-items:flex-start;gap:.5rem;z-index:15;flex-direction:row-reverse}.search-toggle{width:2.5rem;height:2.5rem;border-radius:.75rem;border:none;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;color:#e2e8f0;flex-shrink:0;transition:background .2s}.search-toggle:hover{background:#ffffff1a}.search-box{border-radius:.75rem;overflow:hidden;display:flex;flex-direction:column}.search-input{width:100%;padding:.6rem .75rem;background:transparent;border:none;outline:none;color:#f1f5f9;font-size:.85rem;font-family:inherit}.search-input::placeholder{color:#475569}.search-results{max-height:300px;overflow-y:auto;border-top:1px solid rgba(255,255,255,.06)}.search-result-item{display:flex;flex-direction:column;width:100%;padding:.5rem .75rem;background:none;border:none;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer;text-align:left;transition:background .15s}.search-result-item:hover{background:#ffffff14}.result-name{color:#e2e8f0;font-size:.8rem}.result-spouse{color:#64748b;font-size:.7rem;margin-top:.1rem}.controls{position:absolute;bottom:1.25rem;right:1.25rem;display:flex;flex-direction:column;gap:2px;border-radius:.75rem;overflow:hidden;z-index:10}.controls button{width:2.5rem;height:2.5rem;background:none;border:none;color:#94a3b8;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.controls button:hover{background:#ffffff1a;color:#e2e8f0}.controls-divider{height:1px;background:#ffffff14;margin:2px 6px}.help-hint{position:absolute;bottom:1.25rem;left:50%;transform:translate(-50%);display:flex;gap:1.5rem;font-size:.7rem;color:#475569;z-index:10;pointer-events:none}.gen-legend{position:absolute;bottom:1.25rem;left:1.25rem;padding:.75rem 1rem;border-radius:.75rem;display:flex;flex-direction:column;gap:.3rem;z-index:10}.legend-item{display:flex;align-items:center;gap:.4rem}.legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.legend-label{font-size:.65rem;color:#64748b}.sidebar{position:absolute;top:0;right:0;width:22rem;height:100%;padding:2rem 1.5rem;z-index:20;overflow-y:auto;background:#0f172ad9;border-left:1px solid rgba(255,255,255,.06)}.close-btn{position:absolute;top:1rem;right:1rem;background:none;border:none;color:#64748b;cursor:pointer;font-size:1.1rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:.5rem;transition:all .15s}.close-btn:hover{color:#fff;background:#ffffff14}.details-content{margin-top:1.5rem}.lineage-path{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem;margin-bottom:1rem;padding:.5rem .75rem;background:#ffffff08;border-radius:.5rem;border:1px solid rgba(255,255,255,.05)}.lineage-item{display:inline-flex;align-items:center;gap:.15rem}.lineage-arrow{color:#334155;font-size:.75rem;margin:0 .15rem}.lineage-name{font-size:.7rem;font-weight:500}.gen-indicator{display:inline-block;font-size:.65rem;font-weight:600;color:#fff;padding:.15rem .5rem;border-radius:9999px;margin-bottom:.5rem;letter-spacing:.02em}.member-name{font-size:1.2rem;font-weight:600;margin:0 0 .25rem;color:#f1f5f9;line-height:1.3}.member-photos{display:flex;gap:.75rem;justify-content:center;margin:.75rem 0}.photo-container{display:flex;flex-direction:column;align-items:center;gap:.25rem}.member-photo{width:90px;height:110px;object-fit:cover;border-radius:10px;border:2px solid rgba(255,255,255,.15);box-shadow:0 4px 12px #0000004d}.photo-label{font-size:.65rem;color:#94a3b8;text-align:center;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spouse-info{margin-top:1rem}.label{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:#f472b6;display:block;margin-bottom:.2rem}.spouse-name{color:#94a3b8;margin:0;font-size:.95rem}.id-card{margin-top:1.5rem;padding:.75rem;background:#ffffff08;border-radius:.5rem;border:1px solid rgba(255,255,255,.06)}.id-text{font-family:SF Mono,Fira Code,monospace;font-size:.8rem;margin:.15rem 0 0;color:#64748b}.dates-info{margin-top:.75rem;display:flex;gap:1.5rem}.date-item{flex:1}.date-value{color:#e2e8f0;font-size:.9rem;font-weight:500;margin:0}.spouse-dates{margin-top:.4rem}.label-small{font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;color:#475569;display:block;margin-bottom:.1rem}.date-value-small{color:#94a3b8;font-size:.8rem;margin:0}.sidebar::-webkit-scrollbar,.search-results::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-track,.search-results::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb,.search-results::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.family-stats{display:flex;gap:1rem;margin-top:1.25rem}.stat-item{flex:1;text-align:center;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:.75rem;padding:.75rem .5rem}.stat-number{display:block;font-size:1.5rem;font-weight:700;color:#e2e8f0}.stat-label{display:block;font-size:.65rem;color:#64748b;text-transform:uppercase;letter-spacing:.06em;margin-top:.15rem}.children-section{margin-top:1.25rem}.children-list{display:flex;flex-direction:column;gap:.25rem;margin-top:.4rem;max-height:200px;overflow-y:auto}.child-item{display:flex;align-items:center;gap:.5rem;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:.5rem;padding:.5rem .65rem;cursor:pointer;transition:all .15s ease;text-align:left;color:inherit;font-family:inherit;font-size:inherit;width:100%}.child-item:hover{background:#ffffff14;border-color:#ffffff26}.child-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.child-name{color:#e2e8f0;font-size:.8rem;font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.child-spouse{color:#64748b;font-size:.7rem;flex-shrink:0;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collapse-indicator:hover circle{fill:#fff3;stroke-opacity:1}@media(max-width:640px){.sidebar{width:100%}.gen-legend,.help-hint{display:none}}.fab-add{position:absolute;bottom:1.25rem;left:50%;transform:translate(-50%);width:3rem;height:3rem;border-radius:50%;border:none;color:#e2e8f0;font-size:1.5rem;cursor:pointer;z-index:15;display:flex;align-items:center;justify-content:center;transition:all .2s}.fab-add:hover{background:#3b82f64d;color:#fff;transform:translate(-50%) scale(1.1)}.sidebar-actions{display:flex;gap:.5rem;margin-top:1rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.3rem;padding:.5rem 1rem;border-radius:.5rem;border:none;font-size:.8rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s}.btn-sm{padding:.35rem .75rem;font-size:.75rem}.btn-primary{background:#3b82f6;color:#fff}.btn-primary:hover{background:#2563eb}.btn-primary:disabled{background:#1e40af;opacity:.6;cursor:not-allowed}.btn-secondary{background:#ffffff14;color:#94a3b8;border:1px solid rgba(255,255,255,.12)}.btn-secondary:hover{background:#ffffff24;color:#e2e8f0}.btn-danger{background:#ef444426;color:#ef4444;border:1px solid rgba(239,68,68,.3)}.btn-danger:hover{background:#ef444440}.modal-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100}.modal-content{width:90%;max-width:480px;max-height:85vh;overflow-y:auto;padding:1.5rem;border-radius:1rem;background:#0f172af2;border:1px solid rgba(255,255,255,.1)}.modal-title{font-size:1.15rem;font-weight:600;color:#f1f5f9;margin:0 0 1rem}.member-form{display:flex;flex-direction:column;gap:.75rem}.form-row{display:flex;gap:.75rem}.form-row>.form-field{flex:1}.form-field{display:flex;flex-direction:column;gap:.25rem}.form-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.form-input{padding:.5rem .65rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:.5rem;color:#f1f5f9;font-size:.85rem;font-family:inherit;outline:none;transition:border-color .15s}.form-input:focus{border-color:#3b82f6}.form-input:disabled{opacity:.5;cursor:not-allowed}.form-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444;font-size:.8rem;padding:.5rem .75rem;border-radius:.5rem;margin-bottom:.5rem}.form-actions{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem;gap:.5rem}.form-actions-right{display:flex;gap:.5rem;margin-left:auto}.image-upload-row{display:flex;align-items:center;gap:.5rem}.upload-preview{width:48px;height:56px;object-fit:cover;border-radius:6px;border:1px solid rgba(255,255,255,.15)}.upload-btn{padding:.35rem .65rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:.4rem;color:#94a3b8;font-size:.75rem;cursor:pointer;font-family:inherit;transition:all .15s}.upload-btn:hover{background:#ffffff1f;color:#e2e8f0}.upload-btn:disabled{opacity:.5;cursor:not-allowed}
