.login-screen[data-v-f9a02d75]{background:var(--bg-secondary);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.login-card[data-v-f9a02d75]{background:var(--bg-primary);border:1px solid var(--border);width:360px;max-width:90vw;box-shadow:var(--panel-shadow);border-radius:16px;padding:40px}.login-title[data-v-f9a02d75]{color:var(--accent);text-align:center;margin-bottom:8px;font-size:24px;font-weight:700}.login-subtitle[data-v-f9a02d75]{color:var(--text-secondary);text-align:center;margin-bottom:28px;font-size:16px;font-weight:500}.login-field[data-v-f9a02d75]{margin-bottom:20px}.login-field label[data-v-f9a02d75]{color:var(--text-muted);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.login-btn[data-v-f9a02d75]{justify-content:center;width:100%;padding:10px;font-size:15px}.login-btn[data-v-f9a02d75]:disabled{opacity:.5;cursor:not-allowed}.welcome-screen[data-v-e93713a4]{background:var(--bg-secondary);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.welcome-card[data-v-e93713a4]{background:var(--bg-primary);border:1px solid var(--border);text-align:center;width:420px;max-width:90vw;box-shadow:var(--panel-shadow);border-radius:20px;padding:48px 40px}.welcome-icon[data-v-e93713a4]{margin-bottom:20px;font-size:56px}.welcome-title[data-v-e93713a4]{margin-bottom:10px;font-size:24px;font-weight:700}.welcome-subtitle[data-v-e93713a4]{color:var(--text-secondary);margin-bottom:32px;line-height:1.5}.welcome-actions[data-v-e93713a4]{flex-direction:column;gap:12px;display:flex}.welcome-btn[data-v-e93713a4]{justify-content:center;width:100%;padding:12px;font-size:15px}.search-bar[data-v-7ee97854]{flex-shrink:0;position:relative}.search-input[data-v-7ee97854]{background:var(--bg-tertiary);border:1px solid var(--border);width:200px;color:var(--text-primary);border-radius:7px;padding:6px 10px;font-size:13px;transition:border-color .15s,width .2s}.search-input[data-v-7ee97854]:focus{border-color:var(--accent);width:260px}.search-dropdown[data-v-7ee97854]{background:var(--context-menu-bg);border:1px solid var(--border);min-width:260px;box-shadow:var(--context-menu-shadow);z-index:200;border-radius:10px;max-height:300px;position:absolute;top:calc(100% + 6px);left:0;overflow:hidden auto}.search-no-results[data-v-7ee97854]{color:var(--text-muted);padding:12px 16px;font-size:13px}.search-result[data-v-7ee97854]{text-align:left;width:100%;color:var(--text-primary);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:9px 14px;font-size:13px;transition:background .1s;display:flex}.search-result[data-v-7ee97854]:hover,.search-result.highlighted[data-v-7ee97854]{background:var(--bg-tertiary)}.result-years[data-v-7ee97854]{color:var(--text-muted);font-size:12px}.user-badge[data-v-6f4667c2]{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:120px;font-size:12px;overflow:hidden}.checkbox-label[data-v-57a6ee59]{cursor:pointer;color:var(--text-primary);align-items:center;gap:8px;font-size:14px;display:flex}.gallery-grid[data-v-084d633e]{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.gallery-thumb[data-v-084d633e]{border:1px solid var(--border);cursor:pointer;border-radius:8px;width:72px;height:72px;transition:opacity .15s;position:relative;overflow:hidden}.gallery-thumb[data-v-084d633e]:hover{opacity:.85}.gallery-thumb img[data-v-084d633e]{object-fit:cover;width:100%;height:100%}.remove-photo-btn[data-v-084d633e]{color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;line-height:1;display:flex;position:absolute;top:3px;right:3px}.add-photo-btn[data-v-084d633e]{border:2px dashed var(--border-strong);width:72px;height:72px;color:var(--text-muted);cursor:pointer;text-align:center;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:4px;font-size:12px;transition:border-color .15s,color .15s;display:flex}.add-photo-btn[data-v-084d633e]:hover{border-color:var(--accent);color:var(--accent)}.lightbox[data-v-084d633e]{z-index:2000;background:#000000e0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox-img[data-v-084d633e]{object-fit:contain;-webkit-user-select:none;user-select:none;border-radius:4px;max-width:90vw;max-height:88vh;box-shadow:0 8px 40px #0009}.lightbox-close[data-v-084d633e]{color:#fffc;cursor:pointer;background:0 0;border:none;font-size:24px;line-height:1;transition:color .15s;position:absolute;top:16px;right:20px}.lightbox-close[data-v-084d633e]:hover{color:#fff}.lightbox-nav[data-v-084d633e]{color:#ffffffb3;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;padding:0 16px;font-size:48px;line-height:1;transition:color .15s;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav[data-v-084d633e]:hover{color:#fff}.lightbox-prev[data-v-084d633e]{left:8px}.lightbox-next[data-v-084d633e]{right:8px}.lightbox-counter[data-v-084d633e]{color:#fff9;font-size:13px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.audit-history[data-v-b008ada4]{margin-top:8px}.audit-toggle[data-v-b008ada4]{text-transform:uppercase;letter-spacing:.06em;width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:6px 0;font-size:11px;font-weight:600;display:flex}.audit-toggle[data-v-b008ada4]:hover{color:var(--text-primary)}.audit-toggle-icon[data-v-b008ada4]{font-size:10px}.audit-table-wrapper[data-v-b008ada4]{margin-top:8px;overflow-x:auto}.audit-table[data-v-b008ada4]{border-collapse:collapse;width:100%;font-size:12px}.audit-table th[data-v-b008ada4],.audit-table td[data-v-b008ada4]{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 8px}.audit-table th[data-v-b008ada4]{color:var(--text-muted);font-weight:500}.audit-table td[data-v-b008ada4]{color:var(--text-secondary)}.panel-photo-section[data-v-5be98f34]{justify-content:center;margin-bottom:16px;display:flex}.main-photo-wrapper[data-v-5be98f34]{width:96px;height:96px;position:relative}.main-photo[data-v-5be98f34]{object-fit:cover;border:2px solid var(--border);border-radius:50%;width:96px;height:96px}.photo-change-btn[data-v-5be98f34]{background:var(--accent);cursor:pointer;border:2px solid var(--panel-bg);border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;display:flex;position:absolute;bottom:0;right:0}.panel-rel-row[data-v-5be98f34]{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.panel-rel-label[data-v-5be98f34]{color:var(--text-muted);font-size:11px;font-weight:500}.btn-sm[data-v-5be98f34]{padding:3px 8px;font-size:12px}.person-link-wrap[data-v-5be98f34]{align-items:center;gap:2px;display:inline-flex}.unlink-btn[data-v-5be98f34]{width:18px;height:18px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .15s,color .15s;display:inline-flex}.unlink-btn[data-v-5be98f34]:hover{background:var(--danger);color:#fff}.panel-empty[data-v-5be98f34]{color:var(--text-muted);flex:1;justify-content:center;align-items:center;display:flex}.canvas-container[data-v-429a888d]{flex:1;position:relative;overflow:hidden}canvas[data-v-429a888d]{touch-action:none;width:100%;height:100%;display:block}.context-menu[data-v-a978f688]{background:var(--context-menu-bg);border:1px solid var(--border);box-shadow:var(--context-menu-shadow);z-index:500;border-radius:10px;min-width:180px;padding:4px;position:fixed;overflow:hidden}.ctx-item[data-v-a978f688]{text-align:left;width:100%;color:var(--text-primary);cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;transition:background .1s;display:flex}.ctx-item[data-v-a978f688]:hover{background:var(--bg-tertiary)}.ctx-item.ctx-danger[data-v-a978f688]{color:var(--danger)}.ctx-item.ctx-danger[data-v-a978f688]:hover{background:#ef444414}.ctx-divider[data-v-a978f688]{background:var(--border);height:1px;margin:4px 0}.modal-overlay[data-v-545dc9c9]{background:var(--modal-overlay);z-index:1000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card[data-v-545dc9c9]{background:var(--modal-bg);border:1px solid var(--border);width:360px;max-width:90vw;box-shadow:var(--panel-shadow);border-radius:12px;padding:28px}.modal-title[data-v-545dc9c9]{margin-bottom:12px;font-size:16px;font-weight:600}.modal-message[data-v-545dc9c9]{color:var(--text-secondary);margin-bottom:24px;line-height:1.5}.modal-actions[data-v-545dc9c9]{justify-content:flex-end;gap:10px;display:flex}.modal-overlay[data-v-12f6591d]{background:var(--modal-overlay);z-index:1000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card[data-v-12f6591d]{background:var(--modal-bg);border:1px solid var(--border);width:400px;max-width:90vw;box-shadow:var(--panel-shadow);border-radius:12px;padding:24px}.modal-title[data-v-12f6591d]{margin-bottom:16px;font-size:16px;font-weight:600}.link-search-input[data-v-12f6591d]{margin-bottom:12px}.link-results[data-v-12f6591d]{border:1px solid var(--border);border-radius:8px;max-height:240px;margin-bottom:16px;overflow:hidden}.link-no-results[data-v-12f6591d]{color:var(--text-muted);padding:12px 14px;font-size:13px}.link-result[data-v-12f6591d]{text-align:left;width:100%;color:var(--text-primary);border:none;border-bottom:1px solid var(--border);cursor:pointer;background:0 0;justify-content:space-between;align-items:center;padding:9px 14px;font-size:13px;transition:background .1s;display:flex}.link-result[data-v-12f6591d]:last-child{border-bottom:none}.link-result[data-v-12f6591d]:hover{background:var(--bg-tertiary)}.result-years[data-v-12f6591d]{color:var(--text-muted);font-size:12px}.modal-actions[data-v-12f6591d]{justify-content:flex-end;display:flex}:root,[data-theme=light]{--bg-primary:#fff;--bg-secondary:#f9fafb;--bg-tertiary:#f3f4f6;--text-primary:#111827;--text-secondary:#6b7280;--text-muted:#9ca3af;--border:#e5e7eb;--border-strong:#d1d5db;--accent:#6366f1;--accent-hover:#4f46e5;--accent-light:#e0e7ff;--danger:#ef4444;--danger-hover:#dc2626;--success:#22c55e;--canvas-bg:#f5f5f0;--card-default:#fff;--card-male:#dbeafe;--card-female:#fce7f3;--card-border:#d1d5db;--card-text:#111827;--card-subtext:#6b7280;--partner-line:#9ca3af;--parent-child-line:#4b5563;--slot-bg:#e5e7eb;--slot-border:#9ca3af;--photo-border:#d1d5db;--silhouette-bg:#e5e7eb;--silhouette:#9ca3af;--timeline-ruler:#d1d5db;--timeline-text:#6b7280;--panel-bg:#fff;--panel-shadow:0 4px 24px #0000001a;--panel-width:360px;--toolbar-bg:#fff;--toolbar-border:#e5e7eb;--toolbar-height:52px;--modal-bg:#fff;--modal-overlay:#0006;--context-menu-bg:#fff;--context-menu-shadow:0 8px 24px #0000001f}[data-theme=dark]{--bg-primary:#1f2937;--bg-secondary:#111827;--bg-tertiary:#374151;--text-primary:#f9fafb;--text-secondary:#9ca3af;--text-muted:#6b7280;--border:#374151;--border-strong:#4b5563;--accent:#818cf8;--accent-hover:#6366f1;--accent-light:#312e81;--danger:#f87171;--danger-hover:#ef4444;--success:#4ade80;--canvas-bg:#1a1f2e;--card-default:#1f2937;--card-male:#1e3a5f;--card-female:#3d1a2e;--card-border:#4b5563;--card-text:#f9fafb;--card-subtext:#9ca3af;--partner-line:#6b7280;--parent-child-line:#9ca3af;--slot-bg:#374151;--slot-border:#6b7280;--photo-border:#4b5563;--silhouette-bg:#374151;--silhouette:#6b7280;--timeline-ruler:#374151;--timeline-text:#6b7280;--panel-bg:#1f2937;--panel-shadow:0 4px 24px #0006;--toolbar-bg:#1f2937;--toolbar-border:#374151;--modal-bg:#1f2937;--modal-overlay:#0009;--context-menu-bg:#1f2937;--context-menu-shadow:0 8px 24px #0006}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{width:100%;height:100%;color:var(--text-primary);background:var(--bg-secondary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-size:14px;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button{cursor:pointer;font:inherit;color:inherit;background:0 0;border:none}input,textarea,select{font:inherit;color:var(--text-primary);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;outline:none;width:100%;padding:6px 10px;transition:border-color .15s}input:focus,textarea:focus,select:focus{border-color:var(--accent)}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.detail-panel{width:var(--panel-width);background:var(--panel-bg);border-right:1px solid var(--border);height:100%;box-shadow:var(--panel-shadow);z-index:10;flex-direction:column;flex-shrink:0;transition:transform .25s,width .25s;display:flex;position:relative;overflow:hidden}.detail-panel.hidden{width:0;transform:translate(-100%)}.panel-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.panel-header h2{font-size:16px;font-weight:600}.panel-close-btn{width:28px;height:28px;color:var(--text-secondary);border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.panel-close-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.panel-body{flex:1;padding:16px;overflow-y:auto}.panel-section{margin-bottom:20px}.panel-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px;font-size:11px;font-weight:600}.panel-footer{border-top:1px solid var(--border);flex-shrink:0;gap:8px;padding:12px 16px;display:flex}.detail-field{margin-bottom:12px}.detail-field label{color:var(--text-muted);margin-bottom:4px;font-size:11px;font-weight:500;display:block}.detail-field .field-value{color:var(--text-primary);min-height:28px;padding:4px 0;font-size:14px}.detail-field input,.detail-field textarea,.detail-field select{font-size:14px}.person-link{background:var(--accent-light);color:var(--accent);cursor:pointer;border:none;border-radius:20px;align-items:center;gap:6px;margin:2px;padding:4px 10px;font-size:13px;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.person-link:hover{background:var(--accent);color:#fff}.person-links-list{flex-wrap:wrap;gap:4px;padding:4px 0;display:flex}.btn{white-space:nowrap;border-radius:7px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover{background:var(--bg-tertiary);color:var(--text-primary)}.app-toolbar{height:var(--toolbar-height);background:var(--toolbar-bg);border-bottom:1px solid var(--toolbar-border);z-index:20;flex-shrink:0;align-items:center;gap:4px;padding:0 12px;display:flex;position:relative}.toolbar-logo{color:var(--accent);white-space:nowrap;margin-right:8px;font-size:16px;font-weight:700}.toolbar-divider{background:var(--border);flex-shrink:0;width:1px;height:24px;margin:0 6px}.toolbar-spacer{flex:1}.toolbar-btn{color:var(--text-secondary);white-space:nowrap;background:0 0;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;gap:5px;padding:6px 10px;font-size:13px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.toolbar-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.toolbar-btn.active{background:var(--accent-light);color:var(--accent)}.toolbar-btn.btn-add{background:var(--accent);color:#fff;font-weight:600}.toolbar-btn.btn-add:hover{background:var(--accent-hover)}.zoom-display{color:var(--text-muted);text-align:center;font-variant-numeric:tabular-nums;min-width:42px;font-size:12px}.canvas-container{background:var(--canvas-bg);flex:1;position:relative;overflow:hidden}canvas{cursor:default;touch-action:none;width:100%;height:100%;display:block}canvas.panning{cursor:grabbing}canvas.dragging-card{cursor:move}@media (width<=1024px){:root{--panel-width:320px;--toolbar-height:48px}.detail-panel{z-index:30;height:100%;position:absolute;top:0;left:0;box-shadow:4px 0 24px #0003}.toolbar-logo{display:none}}@media (width<=767px){:root{--panel-width:100vw;--toolbar-height:44px}.detail-panel{width:100vw!important}.toolbar-btn span{display:none}.toolbar-btn{padding:6px}.zoom-display,.toolbar-divider{display:none}}.app-shell[data-v-edb78771]{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.app-main[data-v-edb78771]{flex:1;display:flex;position:relative;overflow:hidden}
