.skeleton-container{width:100%}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes skeleton-shimmer{0%{opacity:.4}50%{opacity:.7}to{opacity:.4}}.skeleton-pulse{animation:skeleton-shimmer 1.5s ease-in-out infinite;background:var(--color-border-light, var(--color-border));border-radius:var(--radius-sm, 2px)}.skeleton-text{height:14px;border-radius:var(--radius-sm, 2px)}.skeleton-text-xs{width:40px}.skeleton-text-sm{width:80px}.skeleton-text-md{width:120px}.skeleton-text-lg{width:180px}.skeleton-text-xl{width:240px;height:20px}.skeleton-text-full{width:100%}.skeleton-circle{width:36px;height:36px;border-radius:50%;flex-shrink:0}.skeleton-badge{width:48px;height:22px;border-radius:9999px}.skeleton-btn{width:32px;height:32px;border-radius:var(--radius-md, 4px)}.skeleton-btn-wide{width:100%;height:36px;border-radius:var(--radius-md, 4px)}.skeleton-actions{display:flex;gap:var(--space-2, 8px)}.skeleton-table{display:flex;flex-direction:column;gap:2px}.skeleton-row{display:grid;grid-template-columns:2fr 1fr 80px 60px 1fr 100px;gap:var(--space-3, 12px);align-items:center;padding:var(--space-3, 12px) var(--space-4, 16px);background:var(--color-bg-card, #fff);border-radius:var(--radius-sm, 2px)}.skeleton-header{padding:var(--space-2, 8px) var(--space-4, 16px)}.skeleton-header .skeleton-cell{height:12px;border-radius:var(--radius-sm, 2px)}.skeleton-cell-avatar{display:flex;align-items:center;gap:var(--space-3, 12px)}.skeleton-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-6, 24px)}.skeleton-card{background:var(--color-bg-card, #fff);border:1px solid var(--color-border);border-radius:var(--radius-lg, 8px);padding:var(--space-6, 24px);display:flex;flex-direction:column;gap:var(--space-4, 16px)}.skeleton-card-header{display:flex;justify-content:space-between;align-items:center}.skeleton-card-body{display:flex;flex-direction:column;gap:var(--space-3, 12px)}.skeleton-card-footer{margin-top:auto}.skeleton-page{padding:var(--space-8, 32px);max-width:600px;margin:0 auto}.skeleton-page-header{display:flex;flex-direction:column;gap:var(--space-3, 12px);margin-bottom:var(--space-8, 32px);align-items:center}.skeleton-page-body{display:flex;flex-direction:column;gap:var(--space-3, 12px)}.empty-state-component{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-12, 48px) var(--space-8, 32px);border:2px dashed var(--color-border);border-radius:var(--radius-lg, 8px);background:var(--color-bg-primary)}.empty-state-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin-bottom:var(--space-4, 16px);opacity:.55;color:var(--color-text-secondary)}.empty-state-icon svg{width:56px;height:56px}.empty-state-title{font-size:var(--font-size-lg, 1.125rem);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-2, 8px)}.empty-state-desc{font-size:var(--font-size-sm, .875rem);color:var(--color-text-muted);max-width:320px;line-height:1.5;margin-bottom:var(--space-6, 24px)}.empty-state-btn{min-width:160px;display:inline-flex;align-items:center;gap:6px}.empty-state-btn-icon{display:flex;align-items:center;width:14px;height:14px;flex-shrink:0}.empty-state-btn-icon svg{width:14px;height:14px}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.timeline-view{max-width:900px;margin:0 auto;padding:var(--space-8) var(--space-4)}.timeline-header{text-align:center;margin-bottom:var(--space-12);padding-bottom:var(--space-8);border-bottom:1px solid var(--color-border)}.timeline-header h2{font-family:var(--font-family-heading);font-size:var(--font-size-2xl);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-2)}.timeline-header p{font-family:var(--font-family);color:var(--color-text-muted);font-size:var(--font-size-sm);font-style:italic}.timeline-spine{position:relative;padding-left:60px}.timeline-spine:before{content:"";position:absolute;left:24px;top:0;bottom:0;width:1px;background:var(--color-border)}.timeline-generation{position:relative;margin-bottom:var(--space-10)}.timeline-generation-label{position:relative;font-family:var(--font-family-heading);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);background:var(--color-bg-primary);padding:var(--space-1) var(--space-3);margin-left:-36px;margin-bottom:var(--space-6);display:inline-block}.timeline-generation-label:before{content:"";position:absolute;left:-15px;top:50%;transform:translateY(-50%);width:9px;height:9px;border-radius:50%;background:var(--color-accent)}.timeline-entry{position:relative;margin-bottom:var(--space-6);padding-left:var(--space-4)}.timeline-entry:before{content:"";position:absolute;left:-40px;top:14px;width:7px;height:7px;border-radius:50%;background:var(--color-border);border:1px solid var(--color-bg-primary)}.timeline-entry.male:before{background:var(--color-male)}.timeline-entry.female:before{background:var(--color-female)}.timeline-entry.deceased:before{background:var(--color-text-muted)}.timeline-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5) var(--space-6);transition:border-color var(--transition-fast) var(--easing-default);cursor:pointer}.timeline-card:hover{border-color:var(--color-border-hover)}.timeline-card-top{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-3)}.timeline-avatar{width:48px;height:48px;border-radius:50%;overflow:hidden;border:1px solid var(--color-border);flex-shrink:0;background:var(--color-bg-tertiary)}.timeline-avatar img{width:100%;height:100%;object-fit:cover}.timeline-avatar-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:1.1rem;font-weight:600;color:var(--color-text-muted);font-family:var(--font-family-heading)}.timeline-person-info{flex:1}.timeline-person-name{font-family:var(--font-family, "Lora", serif);font-size:1.1rem;font-weight:600;color:var(--color-text-primary);line-height:1.3}.timeline-lifespan{font-family:var(--font-family-sans);font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:2px}.timeline-gender-tag{font-family:var(--font-family-sans);font-size:var(--font-size-xs);font-weight:500;padding:2px 8px;border-radius:var(--radius-sm);border:1px solid}.timeline-gender-tag.male{color:var(--color-male);border-color:var(--color-male-border);background:var(--color-male-light)}.timeline-gender-tag.female{color:var(--color-female);border-color:var(--color-female-border);background:var(--color-female-light)}.timeline-bio{font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.6;font-style:italic;border-left:2px solid var(--color-border-light);padding-left:var(--space-4);margin-top:var(--space-2)}.timeline-meta{display:flex;gap:var(--space-4);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border-light);font-family:var(--font-family-sans);font-size:var(--font-size-xs);color:var(--color-text-muted)}.timeline-meta span{display:flex;align-items:center;gap:var(--space-1)}.timeline-empty{text-align:center;padding:var(--space-16) var(--space-4);color:var(--color-text-muted)}.timeline-empty p{font-family:var(--font-family);font-style:italic;font-size:var(--font-size-base)}@media (max-width: 768px){.timeline-view{padding:var(--space-4) var(--space-2)}.timeline-spine{padding-left:40px}.timeline-spine:before{left:12px}.timeline-generation-label{margin-left:-28px}.timeline-entry:before{left:-32px}.timeline-card{padding:var(--space-4)}.timeline-card-top{flex-direction:column;align-items:flex-start;gap:var(--space-2)}}.navbar{position:sticky;top:0;z-index:var(--z-dropdown, 100);background:var(--color-bg-card, #fff);border-bottom:1px solid var(--color-border);padding:0 var(--space-6);height:56px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.navbar-inner{display:flex;align-items:center;justify-content:space-between;height:100%;max-width:1400px;margin:0 auto;gap:var(--space-4)}.navbar-brand{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;flex-shrink:0;padding:var(--space-2) 0;transition:opacity var(--transition-fast) var(--easing-default)}.navbar-brand:hover{opacity:.8}.navbar-logo{display:flex;align-items:center;color:var(--color-accent)}.navbar-logo svg{width:22px;height:22px}.navbar-title{font-family:var(--font-family-heading, var(--font-family));font-size:var(--font-size-lg);font-weight:700;color:var(--color-text-primary);letter-spacing:-.01em}.navbar-breadcrumb{display:flex;align-items:center;gap:var(--space-2);flex:1;min-width:0}.breadcrumb-separator{color:var(--color-text-muted);font-size:var(--font-size-sm)}.breadcrumb-current{font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.navbar-user{position:relative;flex-shrink:0}.navbar-avatar-btn{display:flex;align-items:center;gap:var(--space-2);background:transparent;border:1px solid transparent;border-radius:var(--radius-lg, 4px);padding:var(--space-1) var(--space-2);cursor:pointer;transition:all var(--transition-fast) var(--easing-default);min-height:40px}.navbar-avatar-btn:hover{background:var(--color-bg-secondary);border-color:var(--color-border)}.navbar-avatar-circle{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--color-accent, #D97757);color:var(--color-accent-foreground, #fff);font-size:var(--font-size-xs);font-weight:600;font-family:var(--font-family-heading, var(--font-family));flex-shrink:0}.navbar-user-name{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar-chevron{display:flex;align-items:center;color:var(--color-text-muted);transition:transform var(--transition-fast) var(--easing-default)}.navbar-chevron svg{width:14px;height:14px}.navbar-item-icon{display:flex;align-items:center;flex-shrink:0;color:var(--color-text-secondary)}.navbar-item-icon svg{width:16px;height:16px}.navbar-dropdown-danger .navbar-item-icon{color:var(--color-error)}.navbar-theme-label{display:flex;align-items:center;gap:var(--space-3)}.navbar-dropdown{position:absolute;right:0;top:calc(100% + var(--space-1));min-width:260px;background:var(--color-bg-card, #fff);border:1px solid var(--color-border);border-radius:var(--radius-lg, 4px);box-shadow:0 8px 24px #0000001f;padding:var(--space-2) 0;animation:navbar-dropdown-in .15s var(--easing-default);z-index:calc(var(--z-dropdown, 100) + 1)}@keyframes navbar-dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.navbar-dropdown-header{padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:2px}.dropdown-display-name{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-email{font-size:var(--font-size-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar-dropdown-divider{height:1px;background:var(--color-border-light, var(--color-border));margin:var(--space-1) 0}.navbar-dropdown-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-4);background:transparent;border:none;border-radius:0;text-align:left;font-size:var(--font-size-sm);font-weight:400;color:var(--color-text-primary);cursor:pointer;transition:background var(--transition-fast) var(--easing-default);min-height:36px}.navbar-dropdown-item:hover{background:var(--color-bg-secondary)}.navbar-dropdown-danger{color:var(--color-error, #C62828)}.navbar-dropdown-danger:hover{background:var(--color-error-bg, #FFEBEE)}.navbar-theme-row{display:flex;justify-content:space-between;align-items:center;cursor:default}.navbar-theme-row:hover{background:var(--color-bg-secondary)}.navbar-theme-select .theme-switcher-select{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary);color:var(--color-text-primary);min-height:28px}@media (max-width: 768px){.navbar{padding:0 var(--space-3)}.navbar-user-name,.navbar-chevron,.navbar-breadcrumb{display:none}.navbar-title{font-size:var(--font-size-base)}.navbar-dropdown{min-width:220px;right:-4px}}.chat-panel-container{position:fixed;bottom:24px;right:24px;z-index:1000;display:flex;flex-direction:column;align-items:flex-end;pointer-events:none}.chat-toggle-btn{width:56px;height:56px;border-radius:50%;background-color:var(--color-primary);color:#fff;border:none;box-shadow:var(--shadow-md);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform var(--transition-fast),background-color var(--transition-fast);pointer-events:all}.chat-toggle-btn:hover{transform:scale(1.05);background-color:var(--color-primary-hover)}.chat-window{width:350px;height:500px;background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden;margin-bottom:16px;border:1px solid var(--color-border);opacity:0;transform:translateY(20px);pointer-events:none;transition:opacity var(--transition-normal),transform var(--transition-normal)}.chat-window.open{opacity:1;transform:translateY(0);pointer-events:all}.chat-header{padding:16px;background-color:var(--color-primary);color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600}.chat-close-btn{background:transparent;border:none;color:#fff;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:4px}.chat-close-btn:hover{background-color:#ffffff1a}.chat-messages{flex:1;padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;background-color:var(--color-bg-secondary)}.chat-input-container{padding:12px;border-top:1px solid var(--color-border);display:flex;gap:8px;background-color:var(--color-bg-card)}.chat-input{flex:1;padding:10px 12px;border:1px solid var(--color-border);border-radius:20px;outline:none;font-family:inherit;font-size:.9rem}.chat-input:focus{border-color:var(--color-primary)}.chat-send-btn{background-color:var(--color-primary);color:#fff;border:none;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color var(--transition-fast)}.chat-send-btn:hover:not(:disabled){background-color:var(--color-primary-hover)}.chat-send-btn:disabled{background-color:var(--color-text-disabled);cursor:not-allowed}.message-wrapper{display:flex;width:100%}.message-wrapper.user{justify-content:flex-end}.message-wrapper.bot{justify-content:flex-start}.message-bubble{max-width:85%;padding:10px 14px;border-radius:16px;font-size:.9rem;line-height:1.4;word-break:break-word}.message-wrapper.user .message-bubble{background-color:var(--color-primary);color:#fff;border-bottom-right-radius:4px}.message-wrapper.bot .message-bubble{background-color:var(--color-bg-card);color:var(--color-text-primary);border:1px solid var(--color-border);border-bottom-left-radius:4px}.message-loading{display:flex;gap:4px;justify-content:center;align-items:center;height:20px}.dot{width:6px;height:6px;background-color:var(--color-text-muted);border-radius:50%;animation:typing 1.4s infinite ease-in-out both}.dot:nth-child(1){animation-delay:-.32s}.dot:nth-child(2){animation-delay:-.16s}@keyframes typing{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.tree-management-container{max-width:1200px;margin:0 auto;padding:2rem}.tree-management-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem;margin-bottom:2rem}.tree-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1.5rem;transition:border-color var(--transition-fast) var(--easing-default)}.tree-card:hover{border-color:var(--color-border-hover)}.tree-card-header{display:flex;justify-content:space-between;align-items:start;margin-bottom:1rem}.tree-card-header h3{margin:0;font-size:1.25rem;font-family:var(--font-family-heading);color:var(--color-text-primary)}.owner-badge{background:var(--color-primary);color:var(--color-primary-foreground);padding:.25rem .5rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;font-family:var(--font-family-sans)}.tree-card-body{margin-bottom:1rem}.tree-description{color:var(--color-text-secondary);margin-bottom:1rem;font-size:.875rem}.tree-stats{display:flex;flex-direction:column;gap:.5rem}.stat-item{display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.stat-label{color:var(--color-text-secondary)}.stat-value{color:var(--color-text-primary);font-weight:500}.tree-card-actions{display:flex;gap:.5rem;padding-top:1rem;border-top:1px solid var(--color-border-light)}.tree-card-notice{margin-top:.75rem;padding:.5rem;background:var(--color-warning-bg);border:1px solid var(--color-warning);border-radius:var(--radius-sm);font-size:.75rem;color:var(--color-warning)}.tree-access-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;font-weight:500}.tree-access-badge svg{width:13px;height:13px}.tree-access-badge.public{color:var(--color-success)}.tree-access-badge.private{color:var(--color-text-muted)}.btn-admin{background:var(--color-admin);color:#fff;border-color:var(--color-admin)}.btn-admin:hover:not(:disabled){opacity:.85}.tree-management-loading{text-align:center;padding:2rem;color:var(--color-text-muted)}@media (max-width: 768px){.tree-management-grid{grid-template-columns:1fr}.tree-management-container{padding:1rem}}.admin-page{max-width:1200px;margin:0 auto}.admin-page-header{margin-bottom:2rem}.admin-page-header h1{margin:0 0 .25rem;font-size:1.75rem;font-weight:700;color:var(--text-primary, #1e293b)}.admin-page-header p{margin:0;color:var(--text-secondary, #64748b);font-size:.9rem}.admin-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;color:var(--text-secondary, #64748b)}.admin-spinner{width:40px;height:40px;border:3px solid var(--color-admin-bg);border-top-color:var(--color-admin);border-radius:50%;animation:admin-spin .8s linear infinite;margin-bottom:1rem}@keyframes admin-spin{to{transform:rotate(360deg)}}.admin-error{text-align:center;padding:3rem 2rem;background:#fef2f2;border:1px solid #fecaca;border-radius:12px}.admin-error h3{margin:0 0 .5rem;color:#dc2626}.admin-error p{color:#991b1b;margin-bottom:1rem}.admin-empty{text-align:center;padding:4rem 2rem;color:var(--text-secondary, #64748b)}.admin-empty h3{color:var(--text-primary, #1e293b)}.admin-notification{padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem;font-size:.875rem;font-weight:500;animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.notification-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.notification-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.notification-warning{background:#fffbeb;border:1px solid #fde68a;color:#92400e}.admin-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem 1rem;border:none;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease;white-space:nowrap}.admin-btn:disabled{opacity:.5;cursor:not-allowed}.admin-btn-primary{background:linear-gradient(135deg,var(--color-admin),var(--color-admin-hover));color:#fff}.admin-btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--color-admin-hover),#5b21b6);box-shadow:0 2px 8px #7c3aed4d}.admin-btn-success{background:#10b981;color:#fff}.admin-btn-success:hover:not(:disabled){background:#059669}.admin-btn-warning{background:#f59e0b;color:#fff}.admin-btn-warning:hover:not(:disabled){background:#d97706}.admin-btn-danger{background:#ef4444;color:#fff}.admin-btn-danger:hover:not(:disabled){background:#dc2626}.admin-btn-outline{background:transparent;border:1px solid var(--border-color, #e2e8f0);color:var(--text-primary, #1e293b)}.admin-btn-outline:hover:not(:disabled){background:var(--bg-secondary, #f1f5f9)}.admin-btn-sm{padding:.35rem .65rem;font-size:.8rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-card{background:var(--color-bg-card);border-radius:12px;padding:1.25rem;display:flex;align-items:center;gap:1rem;box-shadow:var(--shadow-sm);border:1px solid var(--color-border);cursor:pointer;transition:all .2s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-card-icon{font-size:2rem;width:52px;height:52px;display:flex;align-items:center;justify-content:center;border-radius:12px}.stat-card-primary .stat-card-icon{background:var(--color-admin-bg)}.stat-card-success .stat-card-icon{background:#10b9811a}.stat-card-warning .stat-card-icon{background:#f59e0b1a}.stat-card-danger .stat-card-icon{background:#ef44441a}.stat-card-content{display:flex;flex-direction:column}.stat-card-value{font-size:1.75rem;font-weight:700;color:var(--color-text-primary);line-height:1}.stat-card-label{font-size:.8rem;color:var(--color-text-secondary);margin-top:.25rem}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-panel{background:var(--color-bg-card);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow-sm);border:1px solid var(--color-border)}.stat-panel h3{margin:0 0 1rem;font-size:.95rem;color:var(--color-text-primary)}.stat-panel-grid{display:flex;gap:2rem}.stat-panel-item{display:flex;flex-direction:column;align-items:center}.stat-panel-value{font-size:1.5rem;font-weight:700;color:var(--color-admin)}.stat-panel-label{font-size:.75rem;color:var(--color-text-secondary);margin-top:.15rem}.admin-quick-actions{background:var(--color-bg-card);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow-sm);border:1px solid var(--color-border)}.admin-quick-actions h3{margin:0 0 1rem;font-size:.95rem;color:var(--color-text-primary)}.quick-actions-grid{display:flex;gap:.75rem;flex-wrap:wrap}.quick-action-btn{padding:.6rem 1rem;background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;font-size:.85rem;color:var(--color-text-primary);transition:all .15s ease}.quick-action-btn:hover{background:var(--color-bg-muted);border-color:var(--color-border-hover)}.admin-filters{display:flex;gap:.75rem;margin-bottom:1.5rem;flex-wrap:wrap}.admin-search-input{flex:1;min-width:200px;padding:.6rem 1rem;border:1px solid var(--color-border);border-radius:8px;font-size:.875rem;background:var(--color-bg-card);color:var(--color-text-primary);outline:none;transition:border-color .15s}.admin-search-input:focus{border-color:var(--color-admin);box-shadow:0 0 0 3px var(--color-admin-bg)}.admin-filter-select{padding:.6rem 1rem;border:1px solid var(--color-border);border-radius:8px;font-size:.875rem;background:var(--color-bg-card);color:var(--color-text-primary);cursor:pointer;outline:none}.admin-filter-select:focus{border-color:var(--color-admin)}.admin-table-container{overflow-x:auto;background:var(--color-bg-card);border-radius:12px;border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.admin-table{width:100%;border-collapse:collapse;font-size:.85rem}.admin-table th{padding:.75rem 1rem;text-align:left;font-weight:600;color:var(--color-text-secondary);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);white-space:nowrap;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.admin-table td{padding:.75rem 1rem;border-bottom:1px solid var(--color-border-light);color:var(--color-text-primary)}.admin-table tr:hover{background:var(--color-bg-secondary)}.admin-table tr.row-loading{opacity:.5}.user-cell{display:flex;align-items:center;gap:.75rem}.user-avatar-sm{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--color-admin),#a78bfa);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;color:#fff;flex-shrink:0}.user-avatar-img{width:36px;height:36px;border-radius:50%;object-fit:cover}.user-info-cell{display:flex;flex-direction:column}.user-name{font-weight:600;color:var(--color-text-primary)}.user-email{font-size:.75rem;color:var(--color-text-secondary)}.admin-badge-inline{display:inline-flex;align-items:center;padding:.2rem .5rem;border-radius:6px;font-size:.7rem;font-weight:600;white-space:nowrap}.badge-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.badge-warning{background:#fffbeb;color:#92400e;border:1px solid #fde68a}.badge-danger{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.badge-purple{background:#f5f3ff;color:#5b21b6;border:1px solid #ddd6fe}.badge-default{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}.oauth-icons{display:flex;gap:.25rem;font-size:1rem}.action-buttons{display:flex;gap:.35rem;align-items:center}.text-muted{color:var(--text-secondary, #64748b)}.admin-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.5rem}.pagination-info{font-size:.85rem;color:#64748b}.detail-card{background:var(--color-bg-card);border-radius:12px;padding:1.5rem;box-shadow:var(--shadow-sm);border:1px solid var(--color-border);margin-bottom:1rem}.detail-card h3{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--color-text-primary)}.detail-profile{display:flex;align-items:center;gap:1.5rem}.detail-avatar{width:72px;height:72px;border-radius:50%;background:linear-gradient(135deg,var(--color-admin),#a78bfa);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 12px #7c3aed40}.detail-avatar-img{width:72px;height:72px;border-radius:50%;object-fit:cover}.detail-avatar-initials{font-size:1.5rem;font-weight:700;color:#fff}.detail-profile-info h2{margin:0 0 .25rem;font-size:1.35rem;color:var(--color-text-primary)}.detail-badges{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1rem}.detail-field-list{display:flex;flex-direction:column;gap:.75rem}.detail-field{display:flex;justify-content:space-between;align-items:center;padding:.3rem 0;border-bottom:1px solid #f1f5f9}.detail-field:last-child{border-bottom:none}.detail-field-label{font-size:.8rem;color:var(--color-text-secondary);font-weight:500}.detail-field-value{font-size:.85rem;color:var(--color-text-primary);font-weight:500}.detail-actions-card{border:1px solid #fecaca;background:#fffbfb}.detail-actions{display:flex;gap:.75rem;flex-wrap:wrap}.profile-page-wrapper{max-width:800px;margin:0 auto;padding:2rem}.profile-container{max-width:100%}.profile-header{margin-bottom:1.5rem}.profile-header h1{margin:.5rem 0 0;font-size:1.5rem;font-weight:700;color:var(--color-text-primary)}.profile-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:1.5rem}.profile-tab{padding:.75rem 1.25rem;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--color-text-secondary);transition:all .15s ease}.profile-tab:hover{color:var(--color-admin)}.profile-tab.active{color:var(--color-admin);border-bottom-color:var(--color-admin);font-weight:600}.profile-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-group label{font-size:.8rem;font-weight:600;color:var(--color-text-secondary)}.form-group input[type=text],.form-group input[type=password],.form-group input[type=email]{padding:.6rem .8rem;border:1px solid var(--color-border);border-radius:8px;font-size:.875rem;color:var(--color-text-primary);background:var(--color-bg-card);outline:none;transition:border-color .15s}.form-group input:focus{border-color:var(--color-admin);box-shadow:0 0 0 3px var(--color-admin-bg)}.checkbox-group label{display:flex;align-items:center;gap:.5rem;font-size:.85rem;cursor:pointer}.checkbox-group input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-admin)}.danger-zone{border-color:#fecaca;background:#fffbfb}.danger-zone h3{color:#dc2626}@media (max-width: 768px){.stats-grid{grid-template-columns:repeat(2,1fr)}.stats-row,.detail-grid{grid-template-columns:1fr}.detail-profile{flex-direction:column;text-align:center}.detail-badges{justify-content:center}.admin-filters{flex-direction:column}.admin-search-input{min-width:auto}.action-buttons{flex-wrap:wrap}.profile-tabs{overflow-x:auto}.profile-page-wrapper{padding:1rem}}.admin-page-subtitle{margin:0;color:var(--text-secondary, #64748b);font-size:.85rem}.admin-tree-name{display:flex;align-items:center;gap:.5rem}.admin-tree-icon{font-size:1.25rem;flex-shrink:0}.admin-tree-desc{font-size:.75rem;color:#64748b;margin-top:.15rem;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-badge{display:inline-flex;align-items:center;padding:.2rem .5rem;border-radius:6px;font-size:.7rem;font-weight:600;white-space:nowrap}.badge-secondary{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}.admin-stat-inline{font-size:.85rem;font-weight:500;color:#475569}.admin-table-date{white-space:nowrap;font-size:.8rem;color:#64748b}.admin-table-empty{text-align:center;padding:2rem!important;color:#64748b}.admin-btn-danger-sm{padding:.35rem .65rem;font-size:.8rem;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;cursor:pointer;transition:all .15s ease;font-weight:500}.admin-btn-danger-sm:hover{background:#fee2e2;border-color:#fca5a5}.admin-layout{display:flex;min-height:100vh;background:var(--bg-primary, #f8fafc)}.admin-sidebar{width:260px;background:linear-gradient(135deg,#1e293b,#0f172a);color:#e2e8f0;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:50;box-shadow:2px 0 12px #00000026}.admin-sidebar-header{padding:1.5rem;border-bottom:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:.75rem}.admin-sidebar-header h2{margin:0;font-size:1.15rem;font-weight:700;color:#f1f5f9;letter-spacing:-.01em}.admin-badge{background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff;padding:.2rem .6rem;border-radius:6px;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.admin-nav{flex:1;padding:1rem .75rem;display:flex;flex-direction:column;gap:.25rem}.admin-nav-link{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;color:#94a3b8;text-decoration:none;border-radius:8px;font-size:.9rem;font-weight:500;transition:all .15s ease}.admin-nav-link:hover{color:#f1f5f9;background:#ffffff0f}.admin-nav-link.active{color:#f1f5f9;background:#7c3aed33;font-weight:600}.admin-sidebar-footer{padding:1rem .75rem;border-top:1px solid rgba(255,255,255,.08)}.admin-user-info{display:flex;flex-direction:column;gap:.15rem;padding:0 .5rem;margin-bottom:.75rem}.admin-user-name{font-size:.85rem;font-weight:600;color:#e2e8f0}.admin-user-role{font-size:.7rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.admin-back-btn{width:100%;padding:.6rem 1rem;background:#ffffff0f;color:#94a3b8;border:1px solid rgba(255,255,255,.08);border-radius:8px;cursor:pointer;font-size:.8rem;font-weight:500;transition:all .15s ease}.admin-back-btn:hover{background:#ffffff1a;color:#f1f5f9}.admin-main{flex:1;margin-left:260px;padding:2rem;min-height:100vh}@media (max-width: 768px){.admin-sidebar{width:100%;position:relative;flex-direction:row;align-items:center;padding:.5rem;gap:0}.admin-sidebar-header{padding:.5rem .75rem;border-bottom:none}.admin-sidebar-header h2{font-size:1rem}.admin-nav{flex-direction:row;padding:0;gap:.25rem;flex:1}.admin-nav-link{padding:.5rem .75rem;font-size:.8rem}.admin-sidebar-footer{display:none}.admin-layout{flex-direction:column}.admin-main{margin-left:0;padding:1rem}}[data-theme=modern]{--color-primary: #141413;--color-primary-hover: #2C2C2A;--color-primary-active: #000000;--color-primary-foreground: #FFFFFF;--color-secondary: #F0EFEA;--color-secondary-hover: #E8E6E0;--color-secondary-active: #D9D7D0;--color-secondary-foreground: #141413;--color-accent: #D97757;--color-accent-hover: #C4633F;--color-accent-foreground: #FFFFFF;--color-bg-primary: #FAF9F5;--color-bg-secondary: #F5F3EE;--color-bg-tertiary: #EEECEA;--color-bg-muted: #E5E3DE;--color-bg-card: #FFFFFF;--color-text-primary: #141413;--color-text-secondary: #5C5C58;--color-text-muted: #B0AEA5;--color-text-disabled: #D0CEC6;--color-border: #B0AEA5;--color-border-hover: #8A8880;--color-border-focus: #D97757;--color-border-light: #E5E3DE;--color-success: #2E7D32;--color-success-bg: #F1F8F1;--color-warning: #E65100;--color-warning-bg: #FFF3E0;--color-error: #C62828;--color-error-bg: #FFEBEE;--color-info: #1565C0;--color-info-bg: #E3F2FD;--color-male: #5B7FA5;--color-male-bg: #EEF3F8;--color-male-border: #A8C1DA;--color-male-light: #F4F7FA;--color-male-ring: #5B7FA5;--color-female: #A5706C;--color-female-bg: #F8EEEE;--color-female-border: #D4AFAD;--color-female-light: #FAF4F4;--color-female-ring: #A5706C;--color-other: #8B7FA5;--color-other-bg: #F0EEF5;--color-active-bg: #FFF5F0;--color-admin: #D97757;--color-admin-hover: #C4633F;--color-admin-bg: rgba(217, 119, 87, .1);--shadow-color: 30 10% 10%;--shadow-sm: 0 1px 2px rgba(20, 20, 19, .05);--shadow-md: 0 2px 8px rgba(20, 20, 19, .07);--shadow-lg: 0 4px 16px rgba(20, 20, 19, .1);--shadow-focus: 0 0 0 2px rgba(217, 119, 87, .3);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: 2px;--radius-md: 2px;--radius-lg: 4px;--radius-xl: 4px;--radius-full: 9999px;--font-family: "Lora", Georgia, "Times New Roman", serif;--font-family-heading: "Poppins", system-ui, -apple-system, sans-serif;--font-family-serif: "Lora", Georgia, serif;--font-family-sans: "Poppins", system-ui, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--button-height-sm: 28px;--button-height-md: 36px;--button-height-lg: 40px;--transition-fast: .15s;--transition-normal: .25s;--transition-slow: .35s;--easing-default: cubic-bezier(.4, 0, .2, 1);--z-dropdown: 100;--z-modal: 200;--z-toast: 300}[data-theme=traditional]{--color-primary: #8B2020;--color-primary-hover: #A52A2A;--color-primary-active: #6B1515;--color-primary-foreground: #FFFFFF;--color-secondary: #F5F0E3;--color-secondary-hover: #EDE7D5;--color-secondary-active: #E0D9C6;--color-secondary-foreground: #1C1917;--color-accent: #B8860B;--color-accent-hover: #9A7209;--color-accent-foreground: #FFFFFF;--color-bg-primary: #FAF8F2;--color-bg-secondary: #F5F0E3;--color-bg-tertiary: #EDE7D5;--color-bg-muted: #E0D9C6;--color-bg-card: #FFFFFF;--color-text-primary: #1C1917;--color-text-secondary: #44403C;--color-text-muted: #A8A29E;--color-text-disabled: #D6D3D1;--color-border: #C4B99A;--color-border-hover: #A89A7A;--color-border-focus: #8B2020;--color-border-light: #E5DFD0;--color-success: #2E7D32;--color-success-bg: #F1F8F1;--color-warning: #E65100;--color-warning-bg: #FFF3E0;--color-error: #C62828;--color-error-bg: #FFEBEE;--color-info: #1565C0;--color-info-bg: #E3F2FD;--color-male: #4A6D8C;--color-male-bg: #EDF2F7;--color-male-border: #8FADC8;--color-male-light: #F5F8FA;--color-male-ring: #4A6D8C;--color-female: #8C5656;--color-female-bg: #F7EDEC;--color-female-border: #C8A0A0;--color-female-light: #FAF5F5;--color-female-ring: #8C5656;--color-other: #7C6D8C;--color-other-bg: #F0EDF5;--color-active-bg: #FFF8E1;--color-admin: #8B2020;--color-admin-hover: #6B1515;--color-admin-bg: rgba(139, 32, 32, .1);--shadow-color: 28 25% 10%;--shadow-sm: 0 1px 2px rgba(28, 25, 23, .05);--shadow-md: 0 2px 8px rgba(28, 25, 23, .07);--shadow-lg: 0 4px 16px rgba(28, 25, 23, .1);--shadow-focus: 0 0 0 2px rgba(139, 32, 32, .25);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: 2px;--radius-md: 2px;--radius-lg: 4px;--radius-xl: 4px;--radius-full: 9999px;--font-family-serif: "Lora", Georgia, serif;--font-family-sans: "Poppins", system-ui, sans-serif;--font-family: var(--font-family-serif);--font-family-heading: var(--font-family-sans);--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--button-height-sm: 28px;--button-height-md: 36px;--button-height-lg: 40px;--transition-fast: .15s;--transition-normal: .25s;--transition-slow: .35s;--easing-default: cubic-bezier(.4, 0, .2, 1);--z-dropdown: 100;--z-modal: 200;--z-toast: 300}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;font-family:var(--font-family);line-height:1.6;background-color:var(--color-bg-primary);color:var(--color-text-primary);transition:background-color var(--transition-normal) var(--easing-default),color var(--transition-normal) var(--easing-default)}#root,.app{min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;color:var(--color-text-primary);font-family:var(--font-family-heading, var(--font-family))}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}h4{font-size:var(--font-size-lg)}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast) var(--easing-default)}a:hover{color:var(--color-accent-hover)}.family-tree-page{max-width:1400px;margin:0 auto;padding:var(--space-4) var(--space-8) var(--space-8)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8);padding-bottom:var(--space-6);border-bottom:1px solid var(--color-border)}.action-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4);padding:var(--space-3) 0}.action-bar-left,.action-bar-right{display:flex;align-items:center;gap:var(--space-3)}.tree-selector-wrapper{position:relative;display:inline-flex;align-items:center}.tree-selector-icon{position:absolute;left:var(--space-3);width:15px;height:15px;color:var(--color-text-muted);pointer-events:none;flex-shrink:0}.tree-selector-chevron{position:absolute;right:var(--space-3);width:14px;height:14px;color:var(--color-text-muted);pointer-events:none;flex-shrink:0}.action-bar .tree-selector{padding:var(--space-2) var(--space-10) var(--space-2) 2.25rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-card);color:var(--color-text-primary);font-size:var(--font-size-sm);font-family:var(--font-family);min-height:36px;-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.action-bar .tree-selector:hover{border-color:var(--color-border-hover)}.action-bar .tree-selector:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.header-content h1{font-size:var(--font-size-3xl);color:var(--color-text-primary);margin-bottom:var(--space-1)}.header-content p{color:var(--color-text-secondary);font-size:var(--font-size-base)}.header-actions{display:flex;align-items:center;gap:var(--space-4)}button{font-family:inherit;font-size:var(--font-size-base);min-height:40px;padding:0 var(--space-5);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast) var(--easing-default);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-weight:500}.btn-primary{background-color:var(--color-primary);color:var(--color-primary-foreground)}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover)}.btn-primary:active:not(:disabled){background-color:var(--color-primary-active)}.btn-secondary{background-color:transparent;color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background-color:var(--color-bg-tertiary);border-color:var(--color-border-hover)}.btn-ghost{background-color:transparent;color:var(--color-text-secondary)}.btn-link{background:none;border:none;color:var(--color-text-muted);padding:0;font-size:var(--font-size-xs);text-decoration:underline;cursor:pointer;width:auto!important;margin:0 auto;display:inline-block}.btn-link:hover{color:var(--color-primary)}.btn-primary-brand{background-color:var(--color-primary);color:var(--color-primary-foreground)}.btn-primary-brand:hover:not(:disabled){background-color:var(--color-primary-hover)}.btn-primary-brand:active:not(:disabled){background-color:var(--color-primary-active)}.btn-tertiary-link{background:none;border:none;color:var(--color-text-secondary);padding:8px;font-size:var(--font-size-sm);cursor:pointer;transition:all .2s ease;text-decoration:none;position:relative}.btn-tertiary-link:hover{color:var(--color-text-primary);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}.btn-ghost:hover:not(:disabled){background-color:var(--color-bg-tertiary);color:var(--color-text-primary)}.btn-danger{background-color:var(--color-error);color:var(--color-primary-foreground)}.btn-danger:hover:not(:disabled){opacity:.85}button:disabled{opacity:.5;cursor:not-allowed}.btn-add{font-weight:500;display:inline-flex;align-items:center;gap:var(--space-2)}.error-banner{background-color:var(--color-error-bg);border:1px solid var(--color-error);color:var(--color-error);padding:var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-6);display:flex;align-items:center;gap:var(--space-2)}.loading{text-align:center;padding:var(--space-12);color:var(--color-text-muted);font-size:var(--font-size-lg)}.empty-state{text-align:center;padding:var(--space-16) var(--space-8);background:var(--color-bg-primary);border-radius:var(--radius-lg);border:2px dashed var(--color-border)}.empty-state p{color:var(--color-text-muted);margin-bottom:var(--space-2)}.empty-state p:first-child{font-size:var(--font-size-lg);font-weight:500;color:var(--color-text-secondary)}.form-container{background:var(--color-bg-primary);border-radius:var(--radius-lg);padding:var(--space-8);box-shadow:var(--shadow-md)}.person-form h2{color:var(--color-text-primary);margin-bottom:var(--space-6);font-size:var(--font-size-2xl)}.form-section{margin-bottom:var(--space-8)}.form-section h3{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin-bottom:var(--space-4)}.form-group{display:flex;flex-direction:column}.form-group label{font-weight:500;margin-bottom:var(--space-2);color:var(--color-text-primary);font-size:var(--font-size-sm)}.form-group input,.form-group select,.form-group textarea{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-base);background-color:var(--color-bg-primary);color:var(--color-text-primary);transition:border-color var(--transition-fast) var(--easing-default),box-shadow var(--transition-fast) var(--easing-default)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--color-text-muted)}.form-group textarea{resize:vertical;min-height:80px}.error{color:var(--color-error);font-size:var(--font-size-sm);margin-top:var(--space-1)}.section-icon{margin-right:var(--space-2)}.form-section-header{margin-bottom:var(--space-4)}.checkbox-label{display:flex;align-items:center;gap:var(--space-3);cursor:pointer;font-weight:500;font-size:var(--font-size-lg);color:var(--color-text-primary);padding:var(--space-3) var(--space-4);background:var(--color-bg-tertiary);border-radius:var(--radius-md);transition:background-color var(--transition-fast) var(--easing-default)}.checkbox-label:hover{background:var(--color-bg-muted)}.checkbox-input{position:absolute;opacity:0;pointer-events:none}.checkbox-custom{width:20px;height:20px;border:2px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-primary);display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast) var(--easing-default);flex-shrink:0}.checkbox-input:checked+.checkbox-custom{background:var(--color-primary);border-color:var(--color-primary)}.checkbox-input:checked+.checkbox-custom:after{content:"✓";color:var(--color-primary-foreground);font-size:12px;font-weight:700}.checkbox-input:focus-visible+.checkbox-custom{box-shadow:var(--shadow-focus)}.checkbox-text{display:flex;align-items:center}.deceased-fields{margin-top:var(--space-4);padding:var(--space-4);background:var(--color-bg-secondary);border-radius:var(--radius-md);border-left:3px solid var(--color-text-muted);animation:slideDown var(--transition-normal) var(--easing-default)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.avatar-section{display:flex;justify-content:center;padding:var(--space-4) 0}.avatar-upload-container{display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.avatar-upload{width:140px;height:140px;border:3px dashed var(--color-border);border-radius:var(--radius-full);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast) var(--easing-default);background:var(--color-bg-secondary);overflow:hidden;position:relative}.avatar-upload:hover{border-color:var(--color-primary);background:var(--color-bg-tertiary)}.avatar-upload.dragging{border-color:var(--color-accent);background:var(--color-accent);background:#0d94881a;transform:scale(1.05)}.avatar-upload.has-preview{border-style:solid;border-color:var(--color-primary)}.avatar-placeholder{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-2);text-align:center}.avatar-icon{font-size:2.5rem}.avatar-text{font-size:var(--font-size-xs);color:var(--color-text-muted);line-height:1.3}.avatar-preview-img{width:100%;height:100%;object-fit:cover}.avatar-input{display:none}.btn-remove-avatar{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);background:var(--color-bg-tertiary);color:var(--color-error);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast) var(--easing-default)}.btn-remove-avatar:hover{background:var(--color-error-bg);border-color:var(--color-error)}.date-input-group{display:flex;flex-direction:column;gap:var(--space-2)}.date-type-toggle{display:flex;gap:0;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.date-type-btn{flex:1;padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);background:var(--color-bg-primary);color:var(--color-text-secondary);border:none;cursor:pointer;transition:all var(--transition-fast) var(--easing-default)}.date-type-btn:first-child{border-right:1px solid var(--color-border)}.date-type-btn:hover:not(.active){background:var(--color-bg-secondary)}.date-type-btn.active{background:var(--color-primary);color:var(--color-primary-foreground);font-weight:500}.form-actions{display:flex;gap:var(--space-4);justify-content:flex-end;margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border)}.form-actions-sticky{display:flex;justify-content:flex-end;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--color-border)}.form-actions-inner{display:flex;gap:var(--space-4);justify-content:flex-end}.person-form.sidebar-layout{background:var(--color-bg-card);border-radius:12px;padding:28px 36px;box-shadow:var(--shadow-md);max-height:calc(100vh - 80px);overflow-y:auto;max-width:860px;min-width:700px;width:100%;margin:0 auto}.person-form.sidebar-layout .form-header-with-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--color-border)}.person-form.sidebar-layout .form-header-with-actions h2{font-family:Georgia,serif;font-size:1.4rem;font-weight:600;color:var(--color-text-primary);margin:0}.header-actions{display:flex;gap:8px}.btn-icon{width:36px;height:36px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.btn-icon svg{width:18px;height:18px}.btn-icon-cancel{background:var(--color-bg-secondary);color:var(--color-text-secondary)}.btn-icon-cancel:hover:not(:disabled){background:var(--color-error-bg);color:var(--color-error)}.btn-icon-save{background:var(--color-primary);color:#fff}.btn-icon-save:hover:not(:disabled){background:var(--color-primary-hover);transform:scale(1.05)}.btn-icon:disabled{opacity:.5;cursor:not-allowed}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.form-sidebar-container{display:flex;gap:32px}.avatar-sidebar-column{width:140px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:12px;position:sticky;top:0;align-self:flex-start}.avatar-container{position:relative;display:inline-block}.avatar-large{width:120px;height:120px;border-radius:50%;background:#f8fafc;border:3px solid #e2e8f0;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:all .2s ease;box-shadow:0 4px 12px #0000001a;position:relative}.avatar-large:hover{border-color:#94a3b8;box-shadow:0 6px 16px #00000026}.avatar-large.has-photo{border-color:#64748b}.avatar-large img{width:100%;height:100%;object-fit:cover}.avatar-placeholder-icon{width:48px;height:48px;color:#94a3b8}.avatar-upload-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;border-radius:50%}.avatar-upload-overlay svg{width:32px;height:32px;color:#fff}.avatar-large:hover .avatar-upload-overlay{opacity:1}.avatar-large.has-photo:hover .avatar-upload-overlay{opacity:0}.avatar-remove-btn{position:absolute;bottom:0;right:0;width:32px;height:32px;border-radius:50%;background:#f1f5f9;border:2px solid white;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 6px #00000026}.avatar-remove-btn svg{width:16px;height:16px;color:#64748b}.avatar-remove-btn:hover{background:#fef2f2;border-color:#fecaca}.avatar-remove-btn:hover svg{color:#dc2626}.label-with-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.label-with-toggle label{margin-bottom:0}.date-toggle-inline{display:flex;gap:2px}.date-toggle-inline button{padding:2px 8px;font-size:11px;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer;transition:all .15s ease}.date-toggle-inline button:first-child{border-radius:3px 0 0 3px}.date-toggle-inline button:last-child{border-radius:0 3px 3px 0}.date-toggle-inline button.active{background:#475569;border-color:#475569;color:#fff}.form-fields-column{flex:1;display:flex;flex-direction:column;gap:24px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.form-row-full{width:100%}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:13px;font-weight:500;color:#475569;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.person-form.sidebar-layout input,.person-form.sidebar-layout select,.person-form.sidebar-layout textarea{height:44px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;padding:0 14px;color:#1e293b;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;transition:all .2s ease;text-transform:capitalize}.person-form.sidebar-layout input::placeholder,.person-form.sidebar-layout textarea::placeholder{text-transform:none;color:#94a3b8}.person-form.sidebar-layout textarea{height:auto;min-height:80px;padding:12px 14px;resize:vertical;line-height:1.5}.person-form.sidebar-layout input:focus,.person-form.sidebar-layout select:focus,.person-form.sidebar-layout textarea:focus{outline:none;border-color:#94a3b8;background:#fff;box-shadow:0 0 0 3px #94a3b826}.person-form.sidebar-layout select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.date-field-with-toggle{display:flex;flex-direction:column;gap:6px}.date-toggle-pills{display:flex;gap:4px}.date-toggle-pills button{padding:4px 12px;font-size:12px;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer;transition:all .2s ease}.date-toggle-pills button:first-child{border-radius:4px 0 0 4px}.date-toggle-pills button:last-child{border-radius:0 4px 4px 0}.date-toggle-pills button.active{background:#475569;border-color:#475569;color:#fff}.deceased-toggle-cell{display:flex;align-items:flex-end}.deceased-toggle-wrapper{display:flex;align-items:center;gap:12px;padding:10px 0}.toggle-label-inline{font-size:14px;color:#475569;white-space:nowrap;display:flex;align-items:center;gap:5px}.deceased-icon{width:15px;height:15px;color:#dc2626;flex-shrink:0}.label-with-help{display:flex;align-items:center;gap:4px}.field-help-icon{display:inline-flex;align-items:center;color:var(--color-text-muted);cursor:help;opacity:.65;transition:opacity .15s;flex-shrink:0}.field-help-icon:hover{opacity:1;color:var(--color-accent)}.field-help-icon svg{width:13px;height:13px}.deceased-section{display:none;padding:16px;background:#fef7f7;border-radius:8px;border-left:3px solid #dc2626}.deceased-section.expanded{display:block}.form-footer{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;padding-top:20px;border-top:1px solid #e5e7eb}.btn-cancel{padding:10px 20px;background:none;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#64748b;cursor:pointer;transition:all .2s ease}.btn-cancel:hover{background:#f1f5f9;border-color:#cbd5e1}.btn-submit{padding:10px 24px;background:#991b1b;border:none;border-radius:8px;font-size:14px;font-weight:500;color:#fff;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #991b1b40}.btn-submit:hover:not(:disabled){background:#7f1d1d;box-shadow:0 4px 12px #991b1b59}.btn-submit:disabled,.btn-cancel:disabled{opacity:.6;cursor:not-allowed}.form-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border)}.form-header h2{font-size:var(--font-size-xl);margin:0}.form-header-actions{display:flex;gap:var(--space-2)}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm)}.form-body{display:grid;grid-template-columns:1fr 1fr;gap:24px;flex:1;padding-bottom:16px}.form-column{display:flex;flex-direction:column;gap:16px}.avatar-compact{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2)}.avatar-upload-sm{width:70px;height:70px;border:2px dashed var(--color-border);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast) var(--easing-default);background:var(--color-bg-secondary);overflow:hidden;flex-shrink:0}.avatar-upload-sm:hover{border-color:var(--color-primary);background:var(--color-bg-tertiary)}.avatar-upload-sm.dragging{border-color:var(--color-accent);transform:scale(1.05)}.avatar-upload-sm.has-preview{border-style:solid;border-color:var(--color-primary)}.avatar-placeholder-icon{font-size:1.5rem}.btn-remove-sm{width:24px;height:24px;padding:0;border-radius:var(--radius-full);background:var(--color-error-bg);color:var(--color-error);border:1px solid var(--color-error);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center}.form-group-sm{display:flex;flex-direction:column;gap:4px}.form-group-sm label{font-size:12px;font-weight:500;color:#475569;font-family:Inter,-apple-system,sans-serif}.form-group-sm input,.form-group-sm select,.form-group-sm textarea{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--color-bg-primary);color:var(--color-text-primary)}.form-group-sm input:focus,.form-group-sm select:focus,.form-group-sm textarea:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.form-group-sm textarea{resize:none}.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-row-3{display:grid;grid-template-columns:1fr .8fr 1fr;gap:10px}.form-row-3-equal{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.form-row-4{display:grid;grid-template-columns:1fr .8fr 1fr 1fr;gap:10px}.form-row-4-equal{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px;margin-top:12px}.avatar-name-section{display:flex;gap:16px;align-items:flex-start;margin-bottom:12px}.name-fields{display:grid;grid-template-columns:1fr .8fr 1fr;gap:10px;flex:1}.avatar-circle-sm{width:56px;height:56px;border-radius:50%;background:#f1f5f9;display:flex;align-items:center;justify-content:center;cursor:pointer;border:2px solid #e2e8f0;transition:all .2s ease;overflow:hidden;flex-shrink:0;margin-top:18px}.avatar-circle-sm:hover{background:#e2e8f0;border-color:#cbd5e1}.avatar-circle-sm.has-photo{border-color:#94a3b8}.avatar-circle-sm img{width:100%;height:100%;object-fit:cover}.camera-icon-sm{width:22px;height:22px;color:#94a3b8}.toggle-row-inline{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid #f1f5f9;margin:8px 0}.date-input-group{display:flex;flex-direction:column;gap:6px}.form-section-compact{background:#fafafa;border:1px solid #f1f5f9;border-radius:8px;padding:14px 16px}.form-section-compact h4{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin:0}.date-toggle-sm{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:var(--space-1)}.date-toggle-sm button{flex:1;padding:var(--space-1) var(--space-2);font-size:10px;background:var(--color-bg-primary);color:var(--color-text-muted);border:none;cursor:pointer}.date-toggle-sm button:first-child{border-right:1px solid var(--color-border)}.date-toggle-sm button.active{background:var(--color-primary);color:var(--color-primary-foreground);font-weight:500}.checkbox-inline{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-weight:500;font-size:var(--font-size-sm);padding:var(--space-2);background:var(--color-bg-tertiary);border-radius:var(--radius-md)}.checkbox-inline input[type=checkbox]{width:16px;height:16px;cursor:pointer}.deceased-compact{margin-top:var(--space-2);padding:var(--space-3);background:var(--color-bg-secondary);border-radius:var(--radius-md);border-left:3px solid var(--color-text-muted);display:flex;flex-direction:column;gap:var(--space-2);animation:slideDown var(--transition-fast) var(--easing-default)}.btn-primary-brand.btn-polished{background-color:#991b1b;color:#fff;border-radius:8px;box-shadow:0 2px 8px #991b1b40;padding:12px 24px;font-weight:500;font-size:14px;transition:all .2s ease}.btn-primary-brand.btn-polished:hover:not(:disabled){background-color:#7f1d1d;box-shadow:0 4px 12px #991b1b59;transform:translateY(-1px)}.btn-ghost-text{background:none;border:none;color:#64748b;padding:10px 16px;cursor:pointer;text-decoration:none;font-size:var(--font-size-sm);transition:all .2s ease}.btn-ghost-text:hover:not(:disabled){color:#334155;text-decoration:underline;text-underline-offset:3px}.person-form.compact input[type=text],.person-form.compact input[type=number],.person-form.compact input[type=date],.person-form.compact input[type=tel],.person-form.compact input[type=email],.person-form.compact select{height:44px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;font-family:Inter,-apple-system,sans-serif;font-size:14px;padding:0 12px;color:#1e293b;transition:all .2s ease}.person-form.compact select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px}.person-form.compact textarea{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;font-family:Inter,-apple-system,sans-serif;font-size:14px;padding:10px 12px;color:#1e293b;min-height:70px;resize:vertical;line-height:1.4;transition:all .2s ease}.person-form.compact input:focus,.person-form.compact select:focus,.person-form.compact textarea:focus{outline:none;border-color:#94a3b8;background:#fff;box-shadow:0 0 0 3px #94a3b826}.person-form.compact input::placeholder,.person-form.compact textarea::placeholder{color:#94a3b8}.person-form.compact h2{font-family:Georgia,Times New Roman,serif;font-weight:600;font-size:1.5rem;color:#1e293b;margin-bottom:24px}.person-form.compact h4{font-family:Inter,-apple-system,sans-serif;font-weight:600;font-size:13px;color:#334155;margin-bottom:12px}.form-row-3.name-group{gap:12px}.date-toggle-minimal{display:inline-flex;background:#f1f5f9;border-radius:6px;padding:2px;margin-bottom:8px}.date-toggle-minimal button{padding:6px 12px;border:none;background:transparent;color:#64748b;border-radius:4px;cursor:pointer;font-size:11px;font-weight:500;transition:all .2s ease}.date-toggle-minimal button:hover{color:#1e293b}.date-toggle-minimal button.active{background:#fff;color:#1e293b;box-shadow:0 1px 2px #0000000d}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0}.toggle-label{font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-primary)}.toggle-switch{width:44px;height:24px;background:#cbd5e1;border-radius:12px;position:relative;transition:background .2s ease;border:none;cursor:pointer;padding:0;flex-shrink:0}.toggle-switch:hover{background:#94a3b8}.toggle-switch.active{background:#475569}.toggle-switch.active:hover{background:#334155}.toggle-slider{position:absolute;width:20px;height:20px;background:#fff;border-radius:50%;top:2px;left:2px;transition:transform .3s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 3px #0003}.toggle-switch.active .toggle-slider{transform:translate(20px)}.deceased-fields{display:none;opacity:0;transition:opacity .2s ease}.deceased-fields.expanded{display:block;opacity:1;margin-top:16px;padding:16px;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0;border-left:3px solid #475569}.deceased-fields .form-row-2{margin-bottom:16px}.deceased-fields .form-group-sm{margin-bottom:12px}.avatar-uploader-polished{position:relative;width:fit-content;margin-bottom:var(--space-3)}.avatar-circle{width:100px;height:100px;border-radius:50%;background:#f1f5f9;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;border:2px solid #e2e8f0;transition:all .2s ease;overflow:hidden;position:relative}.avatar-circle:hover{background:#e2e8f0;border-color:#cbd5e1;transform:scale(1.02)}.avatar-circle.has-photo{border-color:#94a3b8}.avatar-circle.has-photo:hover:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center}.avatar-circle.has-photo:hover:before{content:"🗑️";position:absolute;z-index:10;font-size:28px;filter:grayscale(1) brightness(2)}.avatar-circle img{width:100%;height:100%;object-fit:cover}.camera-icon{width:32px;height:32px;color:#64748b;margin-bottom:4px}.upload-label{font-size:11px;color:#64748b;text-align:center;font-weight:500}.btn-remove-avatar{display:none}@media (max-width: 900px){.form-body{grid-template-columns:1fr}.person-form.compact{max-height:none;overflow:auto}}.list-container{background:var(--color-bg-primary);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-md)}.person-list table{width:100%;border-collapse:collapse;background:var(--color-bg-card)}.person-list thead{background-color:var(--color-bg-card)}.person-list th{padding:var(--space-3) var(--space-4);text-align:left;font-weight:600;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.person-list td{padding:var(--space-4);border-bottom:1px solid var(--color-border-light);color:var(--color-text-primary);vertical-align:middle}.person-list tbody tr{transition:background-color .15s ease;background:var(--color-bg-card)}.person-list tbody tr:hover{background-color:var(--color-bg-secondary)}.person-cell{display:flex;align-items:center;gap:12px}.person-name-cell{display:flex;flex-direction:column;gap:2px}.person-name-cell strong{color:var(--color-text-primary);font-weight:600}.list-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid var(--color-border)}.list-avatar.male{border-color:var(--color-male-border)}.list-avatar.female{border-color:var(--color-female-border)}.list-avatar-initials{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.875rem;flex-shrink:0;background:var(--color-bg-muted);color:var(--color-text-secondary)}.list-avatar-initials.male{background:var(--color-male-bg);color:var(--color-male)}.list-avatar-initials.female{background:var(--color-female-bg);color:var(--color-female)}.gender-badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:9999px;font-size:.75rem;font-weight:500;background:var(--color-bg-tertiary);color:var(--color-text-secondary)}.gender-badge.gender-male{background:var(--color-male-bg);color:var(--color-male)}.gender-badge.gender-female{background:var(--color-female-bg);color:var(--color-female)}.courtesy-name{font-size:var(--font-size-sm);color:var(--color-text-muted);font-style:italic;margin-top:0}.actions{display:flex;gap:var(--space-3)}.btn-edit,.btn-delete,.btn-manage{padding:var(--space-2) var(--space-3);font-size:var(--font-size-lg);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease}.btn-edit:hover{background-color:var(--color-male-bg);border-color:var(--color-male);color:var(--color-male);transform:scale(1.05)}.btn-delete:hover{background-color:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error);transform:scale(1.05)}.btn-manage:hover{background-color:var(--color-success-bg);border-color:var(--color-success);transform:scale(1.05)}.list-summary{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-light);text-align:right;color:var(--color-text-muted);font-size:var(--font-size-sm)}.view-tabs{display:flex;gap:var(--space-1);margin-bottom:var(--space-6);border-bottom:1px solid var(--color-border)}.view-tabs .tab{background:none;border:none;border-bottom:2px solid transparent;padding:var(--space-3) var(--space-5);color:var(--color-text-secondary);font-weight:500;font-size:.9375rem;cursor:pointer;transition:all .2s ease;margin-bottom:-1px;display:inline-flex;align-items:center;gap:var(--space-2)}.view-tabs .tab svg{width:15px;height:15px;flex-shrink:0}.view-tabs .tab:hover{color:var(--color-text-primary);background-color:var(--color-bg-secondary)}.view-tabs .tab.active{color:var(--color-primary);font-weight:600;border-bottom-color:var(--color-primary)}.tree-container{display:flex;gap:var(--space-6);background:var(--color-bg-primary);border-radius:var(--radius-lg);padding:var(--space-4);min-height:650px;box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light)}.tree-container>div:first-child{flex:1;background:var(--color-bg-secondary);border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--color-border)}.person-node{background:#fff;border-radius:2px;padding:0;min-width:200px;cursor:pointer;transition:border-color var(--transition-fast) var(--easing-default);position:relative;overflow:visible;border:1px solid #B0AEA5;box-shadow:none}.person-node:hover{border-color:#8a8880}.person-node.selected{border-color:var(--color-accent)}.person-node:before{display:none}.person-node.male,.person-node.female{border-left-color:#b0aea5}.person-node-content{padding:20px 18px;display:flex;flex-direction:column;align-items:center;gap:10px}.add-relative-btn{width:28px;height:28px;border-radius:var(--radius-full);background:var(--color-primary);color:var(--color-primary-foreground);border:1px solid var(--color-border);cursor:pointer;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:opacity var(--transition-fast) var(--easing-default);padding:0;line-height:1;flex-shrink:0}.add-relative-btn:hover{opacity:.8}.add-relative-btn:active{opacity:.6}.root-indicator{position:absolute;top:-14px;left:50%;transform:translate(-50%);z-index:15;display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#d97706;filter:drop-shadow(0 2px 4px rgba(217,119,6,.45))}.root-indicator svg{width:24px;height:24px}.person-node-actions{position:absolute;top:var(--space-2);right:var(--space-2);display:flex;gap:var(--space-2);z-index:10;opacity:0;transform:translateY(-4px);transition:all .3s cubic-bezier(.4,0,.2,1)}.person-node:hover .person-node-actions{opacity:1;transform:translateY(0)}.manage-relationships-btn{width:28px;height:28px;border-radius:var(--radius-full);background:var(--color-accent);color:#fff;border:1px solid var(--color-border);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity var(--transition-fast) var(--easing-default);padding:0}.manage-relationships-btn svg{width:14px;height:14px;flex-shrink:0}.manage-relationships-btn:hover{opacity:.8}.manage-relationships-btn:active{opacity:.6}.add-relative-menu{position:absolute;top:100%;left:50%;transform:translate(-50%);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-2);z-index:100;min-width:160px;margin-top:var(--space-2);animation:menuSlideIn var(--transition-fast) var(--easing-default)}@keyframes menuSlideIn{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.add-relative-option{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);color:var(--color-text-primary);transition:background-color var(--transition-fast) var(--easing-default)}.add-relative-option:hover{background:var(--color-bg-secondary)}.add-relative-option .option-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:var(--color-accent);flex-shrink:0}.add-relative-option .option-icon svg{width:20px;height:20px}.add-relative-option .option-label{font-weight:500}.person-avatar{width:64px;height:64px;border-radius:50%;overflow:hidden;background:var(--color-bg-tertiary);border:1px solid var(--color-border);flex-shrink:0}.person-avatar.male,.person-avatar.female{border-color:#b0aea5}.person-node:hover .person-avatar,.person-node:hover .person-avatar.male,.person-node:hover .person-avatar.female{border-color:#8a8880}.person-avatar img{width:100%;height:100%;object-fit:cover}.placeholder-avatar{display:flex;align-items:center;justify-content:center}.person-name{font-family:Lora,Georgia,Times New Roman,serif;font-size:1rem;font-weight:600;color:var(--color-text-primary);text-align:center;line-height:1.3;letter-spacing:-.01em}.person-node.male .person-name{border-bottom:1.5px solid #141413;padding-bottom:2px;display:inline-block;width:fit-content;margin-left:auto;margin-right:auto}.person-node.female .person-name{border-bottom:1.5px solid #B0AEA5;padding-bottom:2px;display:inline-block;width:fit-content;margin-left:auto;margin-right:auto}.person-given-name{font-family:Poppins,system-ui,sans-serif;font-size:.85rem;color:var(--color-text-secondary);font-style:italic;text-align:center}.person-lifespan{font-family:Poppins,system-ui,sans-serif;font-size:.8rem;color:var(--color-text-muted);text-align:center;font-weight:400}.person-extended-info{opacity:0;max-height:0;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;align-items:center;gap:4px}.person-node:hover .person-extended-info{opacity:1;max-height:100px;margin-top:4px}.person-generation{font-family:Poppins,system-ui,sans-serif;font-size:.7rem;font-weight:500;color:var(--color-text-secondary);background:transparent;padding:2px 0;border-radius:0;border:none;text-transform:uppercase;letter-spacing:.06em}.placeholder-text{color:var(--color-text-muted);font-size:.875rem}.person-details{width:320px;background:var(--color-bg-primary);border-radius:var(--radius-lg);padding:0;box-shadow:var(--shadow-lg);height:fit-content;position:absolute;top:20px;right:20px;z-index:20;border:1px solid var(--color-border);overflow:hidden;animation:slideInRight .3s cubic-bezier(.16,1,.3,1)}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.details-header-image{height:100px;background:linear-gradient(135deg,var(--color-primary-light, #e0f2fe),var(--color-bg-secondary));position:relative}.details-header-male{background:linear-gradient(135deg,#f1f5f9,#cbd5e1)!important}.details-header-female{background:linear-gradient(135deg,#fdf2f8,#fbcfe8)!important}.details-close-btn{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;background:transparent;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;font-size:20px;color:var(--color-text-secondary);z-index:10}.details-close-btn:hover{background:#00000014;transform:scale(1.1);color:var(--color-text-primary)}.person-header-content{padding:0 var(--space-6) var(--space-4);margin-top:-50px;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative}.person-avatar-lg{width:100px;height:100px;border-radius:50%;border:4px solid #ffffff;box-shadow:0 4px 6px #0000001a;background:#fff;margin-bottom:var(--space-3);object-fit:cover;display:flex;align-items:center;justify-content:center;font-size:40px}.person-avatar-lg.male,.person-avatar-lg.female{border-color:#fff}.person-name-lg{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text-primary);margin:0 0 var(--space-1);line-height:1.2}.person-given-name{font-size:var(--font-size-md);color:var(--color-text-secondary);font-weight:500}.person-meta-row{display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin-top:var(--space-3);margin-bottom:var(--space-4)}.meta-badge{padding:4px 10px;background:var(--color-bg-secondary);border-radius:12px;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);border:1px solid var(--color-border)}.status-badge-alive{padding:5px 12px;background:var(--color-success-bg);border:1px solid var(--color-success);border-radius:12px;font-size:var(--font-size-xs);font-weight:600;color:var(--color-success);display:inline-flex;align-items:center;gap:6px}.status-badge-alive:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--color-success);display:inline-block;animation:pulse-green 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-green{0%,to{opacity:1}50%{opacity:.5}}.status-badge-deceased{padding:5px 12px;background:var(--color-bg-tertiary);border:1px solid var(--color-border-hover);border-radius:12px;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary);display:inline-flex;align-items:center;gap:6px}.generation-badge{padding:5px 12px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:12px;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-secondary)}.details-body{padding:0 var(--space-6) var(--space-6)}.detail-section{margin-bottom:var(--space-4)}.detail-row{display:flex;margin-bottom:var(--space-2);font-size:var(--font-size-sm);padding:8px;border-radius:8px;transition:background .2s}.detail-row:hover{background:var(--color-bg-secondary)}.detail-icon{width:20px;margin-right:12px;color:var(--color-text-muted);font-size:16px;display:flex;align-items:center;justify-content:center}.detail-content{flex:1}.detail-label{display:block;font-size:.75rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;font-weight:600}.detail-value{color:var(--color-text-primary);font-weight:500;line-height:1.4}.detail-bio{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.6;background:var(--color-bg-secondary);padding:12px;border-radius:8px;margin-top:8px;font-style:italic}.detail-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.detail-actions button{width:100%;font-size:var(--font-size-sm);padding:8px;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .2s}.btn-icon-text{display:flex;align-items:center;gap:6px}.btn-edit,.btn-manage,.btn-delete{padding:var(--space-2);background:transparent;border:none;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast) var(--easing-default);display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;color:var(--color-text-secondary)}.btn-edit svg,.btn-manage svg,.btn-delete svg{width:16px;height:16px}.btn-edit:hover{background:var(--color-bg-tertiary);color:var(--color-male);transform:scale(1.1)}.btn-manage{color:var(--color-accent)}.btn-manage:hover{background:var(--color-active-bg);color:var(--color-accent-hover);transform:scale(1.1)}.btn-delete:hover{background:var(--color-error-bg);color:var(--color-error);transform:scale(1.1)}.theme-switcher{display:flex;align-items:center;gap:var(--space-3)}.theme-switcher label{font-size:var(--font-size-base);color:var(--color-text-secondary);font-weight:500;white-space:nowrap;line-height:1;display:flex;align-items:center;height:40px}.theme-switcher-select{min-width:160px;height:40px;padding:0 var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:all var(--transition-fast) var(--easing-default);display:flex;align-items:center}.theme-switcher-select:hover{border-color:var(--color-border-hover);background-color:var(--color-bg-secondary)}.theme-switcher-select:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.theme-switcher-toggle{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);transition:all var(--transition-fast) var(--easing-default)}.theme-switcher-toggle:hover{background:var(--color-bg-tertiary);border-color:var(--color-border-hover)}.tree-view-container{position:relative}.tree-toolbar{position:absolute;top:20px;left:20px;z-index:10;display:flex;flex-direction:column;align-items:center;gap:var(--space-4);background:var(--color-bg-primary);padding:var(--space-3);border-radius:var(--radius-lg);box-shadow:0 4px 12px #00000026,0 2px 4px #0000001a;border:1px solid var(--color-border);width:fit-content}.tree-toolbar-actions{display:flex;flex-direction:column;gap:var(--space-2);padding-left:0;padding-top:var(--space-3);border-left:none;border-top:1px solid var(--color-border);width:100%;align-items:center}.toolbar-btn{width:36px;height:36px;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text-secondary);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast) var(--easing-default)}.toolbar-btn:hover{background:var(--color-bg-tertiary);border-color:var(--color-primary);color:var(--color-primary);transform:translateY(-1px)}.toolbar-btn.active{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.layout-controls{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.layout-selector-group,.direction-selector-group{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.layout-label{display:none}.layout-buttons{display:flex;flex-direction:column;gap:var(--space-1);background:var(--color-bg-secondary);padding:3px;border-radius:var(--radius-md)}.layout-btn{display:flex;align-items:center;justify-content:center;gap:0;padding:var(--space-2);width:32px;height:32px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast) var(--easing-default)}.layout-btn:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.layout-btn.active{background:var(--color-primary);color:var(--color-primary-foreground);box-shadow:0 2px 4px #0000001a}.layout-btn-icon{font-size:1rem}.layout-btn-name{display:none}.direction-buttons{display:flex;flex-direction:column;gap:2px;background:var(--color-bg-secondary);padding:3px;border-radius:var(--radius-md)}.direction-btn{width:32px;height:32px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast) var(--easing-default)}.direction-btn.active{background:var(--color-accent);color:#fff;box-shadow:0 2px 4px #0000001a}.direction-icon{font-weight:600}.react-flow__node{cursor:pointer}.react-flow__handle{opacity:0;width:8px;height:8px}.react-flow__edge-path{stroke-width:2;transition:stroke-width .2s ease,stroke .2s ease}.react-flow__controls{box-shadow:var(--shadow-md);border-radius:var(--radius-md)}.react-flow__controls-button{background:var(--color-bg-primary);border-bottom:1px solid var(--color-border)}.react-flow__controls-button:hover{background:var(--color-bg-secondary)}.layout-dagre{background:#faf9f5}.layout-dagre .react-flow__background{opacity:.6}.layout-dagre .react-flow__edge-path{transition:stroke-width .25s ease,opacity .25s ease,filter .25s ease}.marriage-edge-badge{position:absolute;pointer-events:none;display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#fff;border:1.5px solid #D97706;box-shadow:0 2px 6px #d9770638;color:#d97706;z-index:10}.marriage-heart-icon{width:12px;height:12px;display:block;flex-shrink:0}.heart-node-wrapper{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#fff;border:1.5px solid #D97706;box-shadow:0 2px 6px #d9770633;pointer-events:none;-webkit-user-select:none;user-select:none}.heart-node-icon{width:14px;height:14px;color:#d97706;display:block}.layout-dagre .react-flow__edge.dagre-marriage-edge .react-flow__edge-path{stroke-linecap:round;stroke:#d97706!important;stroke-width:3px!important;filter:drop-shadow(0 2px 3px rgba(217,119,6,.25))}.layout-dagre .react-flow__edge.dagre-parent-edge .react-flow__edge-path{stroke-linecap:round;stroke-linejoin:round;stroke:#94a3b8!important;stroke-width:2.5px!important;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}.layout-dagre .react-flow__edge:hover .react-flow__edge-path{stroke-width:4px!important;filter:drop-shadow(0 3px 6px rgba(0,0,0,.2))}.layout-dagre .react-flow__edge-text{font-family:inherit;font-size:16px}.layout-dagre .react-flow__edge-textbg{rx:12;ry:12;fill:#fff!important;fill-opacity:.95!important;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.layout-dagre .react-flow__edge.selected .react-flow__edge-path{stroke-dasharray:5 5;animation:dashedEdge .5s linear infinite}@keyframes dashedEdge{to{stroke-dashoffset:-10}}.style-classic .react-flow__edge.edge-classic .react-flow__edge-path{transition:all .2s ease}.style-classic .react-flow__edge.dagre-marriage-edge .react-flow__edge-path{stroke:#d97706!important;stroke-width:2.5px!important}.style-classic .react-flow__edge.dagre-parent-edge .react-flow__edge-path{stroke:#94a3b8!important;stroke-width:2px!important}.style-modern .react-flow__edge .react-flow__edge-path{transition:all .15s ease;filter:none!important}.style-modern .react-flow__edge.dagre-marriage-edge .react-flow__edge-path{stroke:#f59e0b!important;stroke-width:2.5px!important;stroke-dasharray:none}.style-modern .react-flow__edge.dagre-parent-edge .react-flow__edge-path{stroke:#cbd5e1!important;stroke-width:2px!important}.style-modern .react-flow__edge:hover .react-flow__edge-path{stroke-width:3px!important;stroke-opacity:.8}.style-modern .react-flow__edge-textbg{rx:16!important;ry:16!important}.style-compact .react-flow__edge .react-flow__edge-path{transition:all .1s ease}.style-compact .react-flow__edge.dagre-marriage-edge .react-flow__edge-path{stroke:#d97706!important;stroke-width:2px!important;filter:none!important}.style-compact .react-flow__edge.dagre-parent-edge .react-flow__edge-path{stroke:#9ca3af!important;stroke-width:1.5px!important;filter:none!important}.style-compact .react-flow__edge:hover .react-flow__edge-path{stroke-width:2.5px!important}.style-compact .react-flow__edge-text,.style-compact .react-flow__edge-textbg{display:none!important}.style-elegant .react-flow__edge .react-flow__edge-path{transition:all .3s cubic-bezier(.4,0,.2,1)}.style-elegant .react-flow__edge.dagre-marriage-edge .react-flow__edge-path{stroke:#b45309!important;stroke-width:3px!important;filter:drop-shadow(0 2px 4px rgba(180,83,9,.25))!important}.style-elegant .react-flow__edge.dagre-parent-edge .react-flow__edge-path{stroke:#78716c!important;stroke-width:2.5px!important;filter:drop-shadow(0 1px 3px rgba(0,0,0,.12))!important}.style-elegant .react-flow__edge:hover .react-flow__edge-path{stroke-width:4px!important;filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))!important}.style-elegant .react-flow__edge-text{font-size:18px!important}.style-elegant .react-flow__edge-textbg{rx:14!important;ry:14!important;filter:drop-shadow(0 2px 4px rgba(0,0,0,.15))!important}.layout-dagre .person-node{min-width:160px;background:#fff;border-radius:2px;border:1px solid #B0AEA5;box-shadow:none;transition:border-color .15s ease}.style-compact .layout-dagre .person-node{min-width:120px;border-radius:2px;padding:6px}.style-modern .layout-dagre .person-node{min-width:150px;border-radius:2px}.style-elegant .layout-dagre .person-node{min-width:180px;border-radius:2px}.layout-dagre .person-node:hover{transform:none;box-shadow:none;border-color:#8a8880}.layout-dagre .person-node.male{border-color:#b0aea5;background:#fff}.layout-dagre .person-node.male:before{display:none}.layout-dagre .person-node.female{border-color:#b0aea5;background:#fff}.layout-dagre .person-node.female:before{display:none}@keyframes shimmer{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.layout-dagre .person-avatar{width:56px;height:56px;border-radius:50%;overflow:hidden;border:1px solid #B0AEA5;box-shadow:none;transition:border-color .15s ease}.style-compact .layout-dagre .person-avatar{width:36px;height:36px;border-width:1.5px}.style-elegant .layout-dagre .person-avatar{width:70px;height:70px;border-width:3px}.layout-dagre .person-avatar.male,.layout-dagre .person-avatar.female{border-color:#b0aea5}.layout-dagre .person-node:hover .person-avatar{transform:none;box-shadow:none}.layout-dagre .person-name{font-family:Lora,Georgia,Times New Roman,serif;font-size:14px;font-weight:600;color:#141413;text-align:center;line-height:1.3;margin-top:4px}.layout-dagre .person-lifespan{font-family:Poppins,system-ui,sans-serif;font-size:12px;color:#b0aea5;font-weight:400;margin-top:2px}.layout-dagre .root-indicator{width:28px;height:28px;top:-16px;filter:drop-shadow(0 3px 6px rgba(217,119,6,.4))}.layout-dagre .root-indicator svg{width:28px;height:28px}.layout-dagre .person-node-actions{top:8px;right:8px}.layout-dagre .add-relative-btn,.layout-dagre .manage-relationships-btn{width:28px;height:28px;font-size:14px;box-shadow:0 2px 6px #00000026}.card-style-selector{display:flex;align-items:center;gap:var(--space-2);padding-left:var(--space-3);border-left:1px solid var(--color-border)}.card-style-label{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary);white-space:nowrap}.card-style-buttons{display:flex;gap:2px;background:var(--color-bg-secondary);padding:3px;border-radius:var(--radius-md)}.card-style-btn{display:flex;align-items:center;gap:4px;padding:6px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:all var(--transition-fast) var(--easing-default);white-space:nowrap}.card-style-btn:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.card-style-btn.active{background:var(--color-accent);color:#fff;box-shadow:0 2px 4px #0000001a}.card-style-icon{font-size:14px}.card-style-name{font-weight:500}.spacing-selector{display:flex;align-items:center;gap:var(--space-2);padding-left:var(--space-3);border-left:1px solid var(--color-border)}.spacing-label{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary);white-space:nowrap}.spacing-controls{display:flex;align-items:center;gap:var(--space-2)}.spacing-presets{display:flex;gap:2px;background:var(--color-bg-secondary);padding:2px;border-radius:var(--radius-md)}.spacing-preset-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;transition:all .15s ease;font-size:14px}.spacing-preset-btn:hover{background:var(--color-bg-tertiary)}.spacing-preset-btn.active{background:var(--color-primary);color:#fff}.spacing-slider{width:60px;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--color-bg-tertiary);border-radius:2px;outline:none;cursor:pointer}.spacing-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;background:var(--color-primary);border-radius:50%;cursor:pointer;transition:transform .15s ease}.card-visuals{border:1px solid #B0AEA5!important;box-shadow:none;background:#fff;border-radius:2px!important;overflow:hidden;transition:border-color .15s ease}.card-visuals:hover{transform:none;box-shadow:none}.visuals-content{display:flex;flex-direction:column;align-items:center;padding:1.5rem;gap:12px}.card-visuals .person-avatar{width:56px;height:56px;border-radius:50%;overflow:hidden;padding:3px;background:transparent}.card-visuals .person-avatar.male,.card-visuals.male .person-avatar,.card-visuals.female .person-avatar{background:#eeecea}.visuals-avatar-initials{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#eeecea;color:#5c5c58;font-weight:600;font-size:20px;font-family:Poppins,system-ui,sans-serif;border-radius:50%}.card-visuals.male .visuals-avatar-initials,.card-visuals.female .visuals-avatar-initials{background:#eeecea;color:#5c5c58}.card-visuals img{width:100%;height:100%;object-fit:cover;border-radius:50%;border:2px solid #ffffff}.visuals-info{text-align:center;display:flex;flex-direction:column;gap:4px}.visuals-name{font-family:Lora,Georgia,Times New Roman,serif;font-weight:600;font-size:1rem;color:#141413;line-height:1.2}.visuals-dates{font-family:Poppins,system-ui,sans-serif;font-weight:400;font-size:.85rem;color:#b0aea5}.card-visuals .root-indicator{top:8px;right:8px;left:auto;transform:none;width:20px;height:20px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.1))}.card-visuals .person-node-actions{opacity:0;transition:opacity .2s ease;top:8px;left:8px;right:auto}.card-visuals:hover .person-node-actions{opacity:1}.spacing-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.spacing-slider::-moz-range-thumb{width:14px;height:14px;background:var(--color-primary);border-radius:50%;border:none;cursor:pointer}.tree-settings-dropdown{position:relative}.tree-settings-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;gap:0;border:1px solid var(--color-border);background:var(--color-bg-primary);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);color:var(--color-text-primary);transition:all .15s ease}.tree-settings-btn:hover,.tree-settings-btn.active{background:var(--color-bg-secondary);border-color:var(--color-primary)}.settings-icon{width:16px;height:16px;flex-shrink:0}.settings-summary{display:none}.dropdown-arrow{display:none;width:14px;height:14px;flex-shrink:0}.tree-settings-menu{position:absolute;top:0;left:calc(100% + 12px);right:auto;bottom:auto;min-width:320px;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 10px 40px -10px #0003;z-index:100;padding:16px;animation:fadeIn .15s ease-out}.settings-section{padding:0 0 16px}.settings-section+.settings-section{border-top:1px solid var(--color-border);padding-top:16px}.settings-section-label{display:block;font-size:11px;font-weight:700;color:var(--color-text-secondary);margin-bottom:12px;text-transform:uppercase;letter-spacing:.8px}.settings-options{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.settings-option{padding:8px 4px;border:2px solid transparent;background:var(--color-bg-secondary);border-radius:12px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;transition:all .2s cubic-bezier(.4,0,.2,1);height:60px}.settings-option:hover{background:var(--color-bg-card);border-color:var(--color-border);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.settings-option.active{background:var(--color-active-bg);border-color:var(--color-primary);color:var(--color-primary);box-shadow:0 0 0 2px #3b82f61a}.option-icon{font-size:18px;line-height:1;margin-bottom:2px}.option-label{font-size:10px;font-weight:600;text-align:center}.spacing-controls{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.spacing-btn{padding:8px 4px;background:var(--color-bg-secondary);border:1px solid transparent;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all .2s ease}.spacing-btn:hover{background:var(--color-bg-card);border-color:var(--color-border)}.spacing-btn.active{background:var(--color-active-bg);border-color:var(--color-male);color:var(--color-male)}.spacing-visual{display:flex;align-items:center;justify-content:center;height:16px}.spacing-visual .dot{width:4px;height:4px;border-radius:50%;background-color:currentColor;opacity:.6}.spacing-btn.active .spacing-visual .dot{opacity:1;background-color:var(--color-male)}.spacing-label{font-size:10px;font-weight:600}.settings-slider{width:100%;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,#e2e8f0 0%,var(--color-primary) 50%,#e2e8f0 100%);border-radius:3px;outline:none;cursor:pointer}.settings-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;background:var(--color-primary);border-radius:50%;cursor:pointer;transition:transform .15s ease;box-shadow:0 2px 4px #0003}.settings-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.settings-slider::-moz-range-thumb{width:18px;height:18px;background:var(--color-primary);border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 4px #0003}.spacing-value-label{text-align:center;margin-top:8px;font-size:12px;font-weight:600;color:var(--color-primary)}.layout-options-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.layout-option-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px;border:1px solid var(--color-border);background:var(--color-bg-secondary);border-radius:8px;cursor:pointer;transition:all .2s ease;font-size:12px}.layout-option-btn:hover{background:var(--color-bg-card);border-color:var(--color-text-secondary)}.layout-option-btn.active{background:var(--color-success-bg);border-color:var(--color-success);color:var(--color-success);font-weight:600}.layout-icon{width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.layout-icon svg{width:18px;height:18px}.layout-name{font-size:13px}.direction-controls{display:flex;justify-content:center;gap:8px;padding-top:4px;border-top:1px dashed var(--color-border);margin-top:8px}.direction-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;background:transparent;border-radius:6px;cursor:pointer;color:var(--color-text-secondary)}.direction-btn-icon{display:flex;align-items:center;justify-content:center;width:16px;height:16px}.direction-btn-icon svg{width:16px;height:16px}.settings-option .option-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.settings-option .option-icon svg{width:20px;height:20px}.direction-btn:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.direction-btn.active{background:var(--color-bg-secondary);border-color:var(--color-primary);color:var(--color-primary)}.btn-reset-root{width:100%;padding:12px 16px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;color:var(--color-text-primary);transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:8px}.btn-reset-root:hover{background:var(--color-bg-card);border-color:var(--color-primary);color:var(--color-primary);box-shadow:var(--shadow-sm)}.btn-reset-root:active{transform:scale(.98)}.person-node.card-classic{min-width:180px;background:#fff;border-radius:2px;border:1px solid #B0AEA5;box-shadow:none}.person-node.card-classic .classic-content{padding:20px 16px 16px;display:flex;flex-direction:column;align-items:center;gap:10px}.person-node.card-classic .person-avatar{width:60px;height:60px}.person-node.card-classic .person-name{font-size:13px;font-weight:600}.person-node.card-modern{min-width:170px;background:#fff;border-radius:2px;border:1px solid #B0AEA5;box-shadow:none;overflow:visible;transition:border-color .15s ease}.person-node.card-modern:hover{box-shadow:none;transform:none}.person-node.card-modern:before{display:none}.person-node.card-modern.male:before{display:none}.person-node.card-modern.female:before{display:none}.person-node.card-modern .modern-content{padding:20px 18px 18px;display:flex;flex-direction:column;align-items:center;gap:12px}.person-node.card-modern .modern-header{position:relative;margin-bottom:4px}.person-node.card-modern .deceased-badge{position:absolute;top:-6px;right:-6px;width:22px;height:22px;background:#b0aea5;color:#fff;border-radius:50%;font-size:13px;display:flex;align-items:center;justify-content:center;border:2px solid white;box-shadow:none}.person-node.card-modern .person-avatar{width:68px;height:68px;border-radius:50%;border:1px solid #B0AEA5;box-shadow:none;position:relative;overflow:hidden;background:#eeecea}.person-node.card-modern.male .person-avatar,.person-node.card-modern.female .person-avatar{border-color:#b0aea580}.person-node.card-modern .person-avatar img{border-radius:50%;width:100%;height:100%;object-fit:cover}.person-node.card-modern .modern-avatar-initials{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:Poppins,system-ui,sans-serif;font-size:24px;font-weight:600;color:#5c5c58;background:#eeecea;-webkit-user-select:none;user-select:none}.person-node.card-modern.male .modern-avatar-initials,.person-node.card-modern.female .modern-avatar-initials{background:#eeecea;color:#5c5c58}.person-node.card-modern .person-name{font-family:Lora,Georgia,Times New Roman,serif;font-size:15px;font-weight:600;color:#141413;text-align:center;line-height:1.3;margin:0}.person-node.card-modern .person-lifespan{font-family:Poppins,system-ui,sans-serif;font-size:11px;color:#b0aea5;font-weight:400;text-align:center;margin-top:-4px;letter-spacing:.3px}.person-node.card-modern .person-generation-badge{font-family:Poppins,system-ui,sans-serif;background:transparent;color:#5c5c58;font-size:10px;font-weight:500;padding:2px 0;border-radius:0;margin-top:2px;border:none;text-transform:uppercase;letter-spacing:.05em}.person-node.card-modern.male .person-generation-badge,.person-node.card-modern.female .person-generation-badge{background:transparent;color:#5c5c58;border-color:transparent}.person-node.card-modern .root-indicator{width:20px;height:20px;top:-10px;filter:drop-shadow(0 2px 6px rgba(251,191,36,.4))}.person-node.card-modern .root-indicator svg{width:20px;height:20px}.person-node.card-compact{min-width:120px;max-width:140px;background:#fff;border-radius:2px;border:1px solid #B0AEA5;box-shadow:none}.person-node.card-compact:before{display:none}.person-node.card-compact .compact-content{padding:10px 8px 8px;display:flex;flex-direction:row;align-items:center;gap:8px}.person-node.card-compact .person-avatar{width:36px;height:36px;flex-shrink:0;border-width:2px}.person-node.card-compact .person-info{flex:1;min-width:0;text-align:left}.person-node.card-compact .person-name{font-family:Lora,Georgia,Times New Roman,serif;font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-node.card-compact .person-lifespan{font-family:Poppins,system-ui,sans-serif;font-size:9px;color:#b0aea5;margin-top:1px}.person-node.card-compact .root-indicator{width:16px;height:16px;top:-8px}.person-node.card-compact .root-indicator svg{width:16px;height:16px}.person-node.card-compact .person-node-actions{top:4px;right:4px}.person-node.card-compact .add-relative-btn,.person-node.card-compact .manage-relationships-btn{width:20px;height:20px;font-size:12px}.person-node.card-elegant{min-width:200px;background:#fff;border-radius:2px;border:1px solid #B0AEA5;box-shadow:none;position:relative;overflow:visible}.person-node.card-elegant:before{display:none}.person-node.card-elegant:after{display:none}.person-node.card-elegant.male,.person-node.card-elegant.female{background:#fff;border-color:#b0aea5;box-shadow:none}.person-node.card-elegant .elegant-content{padding:24px 20px 20px;display:flex;flex-direction:column;align-items:center;gap:12px;position:relative}.person-node.card-elegant .elegant-avatar-wrapper{position:relative}.person-node.card-elegant .elegant-avatar-ring{display:none}@keyframes pulse-ring{0%,to{transform:scale(1);opacity:.3}50%{transform:scale(1.05);opacity:.5}}.person-node.card-elegant .person-avatar{width:72px;height:72px;border:1px solid #B0AEA5;box-shadow:none}.person-node.card-elegant .person-name{font-family:Lora,Georgia,Times New Roman,serif;font-size:15px;font-weight:600;color:#141413;text-shadow:none}.person-node.card-elegant .person-given-name{font-family:Poppins,system-ui,sans-serif;font-size:12px;color:#5c5c58;font-style:italic}.person-node.card-elegant .person-lifespan{font-family:Poppins,system-ui,sans-serif;font-size:12px;color:#b0aea5;font-weight:400;background:transparent;padding:0;border-radius:0}.person-node.card-elegant .person-generation{font-family:Poppins,system-ui,sans-serif;font-size:11px;color:#5c5c58;font-weight:400}.person-node.card-elegant .elegant-deceased-ribbon{position:absolute;top:12px;right:-8px;background:#475569;color:#fff;font-size:9px;font-weight:600;padding:2px 12px;border-radius:4px 0 0 4px;box-shadow:2px 2px 4px #0003}.person-node.card-elegant .root-indicator{width:32px;height:32px;top:-20px;filter:drop-shadow(0 4px 8px rgba(217,119,6,.5))}.person-node.card-elegant .root-indicator svg{width:32px;height:32px}@media (max-width: 1024px){.tree-container{flex-direction:column}.person-details{width:100%;position:static;max-height:none}.person-form.sidebar-layout .form-body{grid-template-columns:1fr}.avatar-sidebar{padding:1rem}}@media (max-width: 768px){.person-form.sidebar-layout{min-width:unset;width:100%;padding:16px 12px;max-height:none}.form-sidebar-container{flex-direction:column}.avatar-sidebar-column{width:100%;flex-direction:row;align-items:center}.family-tree-page{padding:var(--space-4)}.page-header{flex-direction:column;align-items:flex-start;gap:var(--space-4)}.header-content h1{font-size:var(--font-size-2xl)}.header-actions{flex-wrap:wrap;gap:var(--space-2);width:100%}.header-actions .tree-selector{width:100%;min-width:unset}.header-actions button{flex:1;min-width:auto;font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3)}.action-bar{flex-direction:column;align-items:stretch;gap:var(--space-2)}.action-bar-left,.action-bar-right{justify-content:stretch}.action-bar-left .tree-selector{flex:1;min-width:0}.action-bar-right{justify-content:flex-end}.form-row,.form-row-3{grid-template-columns:1fr}.person-list{overflow-x:auto}.person-list table{font-size:var(--font-size-sm)}.person-list th,.person-list td{padding:var(--space-3)}.person-list th:nth-child(2),.person-list td:nth-child(2),.person-list th:nth-child(4),.person-list td:nth-child(4),.person-list th:nth-child(7),.person-list td:nth-child(7){display:none}.view-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.view-tabs::-webkit-scrollbar{display:none}.view-tabs .tab{padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);white-space:nowrap;flex-shrink:0}.tree-container{padding:var(--space-2)}.person-node{min-width:120px;padding:var(--space-3)}.person-avatar{width:50px;height:50px}.tree-view-toolbar{flex-wrap:wrap;gap:var(--space-2)}.tree-settings-menu{left:auto;right:0;min-width:280px}.modal-content{min-width:auto;width:95vw;max-width:95vw}.dialog-content{min-width:auto;width:90vw}.skeleton-row{grid-template-columns:2fr 1fr 1fr}.skeleton-row .skeleton-cell:nth-child(n+4){display:none}}@media (max-width: 480px){.family-tree-page{padding:var(--space-2)}.header-content h1{font-size:var(--font-size-xl)}.person-node{min-width:100px}.person-avatar{width:40px;height:40px}.person-name{font-size:.85rem}.header-actions button{font-size:var(--font-size-xs);padding:var(--space-2)}.action-bar-left,.action-bar-right{flex-direction:column;width:100%}.action-bar-left>*,.action-bar-right>*{width:100%}.person-list table thead{display:none}.person-list table,.person-list table tbody,.person-list table tr{display:block}.person-list table tr{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-3)}.person-list table td{display:flex;justify-content:space-between;align-items:center;padding:var(--space-1) 0;border:none}.person-list table td:before{content:attr(data-label);font-weight:600;font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;margin-right:var(--space-3)}.person-list th:nth-child(2),.person-list td:nth-child(2),.person-list th:nth-child(4),.person-list td:nth-child(4),.person-list th:nth-child(7),.person-list td:nth-child(7){display:flex}.form-sidebar-container{grid-template-columns:1fr}.avatar-sidebar-column{display:flex;justify-content:center;padding:var(--space-4) 0}.avatar-large{width:100px;height:100px}.skeleton-cards{grid-template-columns:1fr}}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.person-node:focus-visible{outline:3px solid var(--color-primary);outline-offset:3px;box-shadow:0 0 0 6px rgba(var(--color-primary-rgb, 59, 130, 246),.2)}.skip-to-content{position:absolute;top:-100px;left:50%;transform:translate(-50%);padding:var(--space-2) var(--space-4);background:var(--color-primary);color:#fff;border-radius:var(--radius-md);z-index:10000;transition:top .2s;font-weight:600}.skip-to-content:focus{top:var(--space-2)}::selection{background-color:var(--color-accent);color:#fff}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:400px;max-width:90vw;max-height:90vh;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-border)}.modal-header h3{margin:0;font-size:1.25rem;font-weight:600}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text-secondary);padding:var(--space-1);line-height:1;border-radius:var(--radius-sm)}.modal-close:hover{background:var(--color-bg-secondary);color:var(--color-text-primary)}.modal-body{padding:var(--space-4)}.modal-description{margin-bottom:var(--space-4);color:var(--color-text-secondary)}.modal-footer{display:flex;gap:var(--space-3);justify-content:flex-end;padding:var(--space-4);border-top:1px solid var(--color-border);background:var(--color-bg-secondary)}.person-select{width:100%;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:1rem;background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer}.person-select:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #3b82f61a}.no-persons-message{text-align:center;color:var(--color-text-secondary);padding:var(--space-4);font-style:italic}.link-person-modal{min-width:450px}.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);animation:fadeIn var(--transition-fast) var(--easing-default)}.dialog-content{background:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:400px;max-width:90vw;max-height:90vh;overflow:auto;animation:slideUp var(--transition-normal) var(--easing-default)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border)}.dialog-header h3{margin:0;font-size:var(--font-size-xl);color:var(--color-text-primary)}.dialog-close{background:transparent;border:none;font-size:1.5rem;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);line-height:1;transition:color var(--transition-fast) var(--easing-default);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md)}.dialog-close:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.dialog-body{padding:var(--space-6)}.dialog-message{color:var(--color-text-secondary);font-size:var(--font-size-base);line-height:1.6;margin:0 0 var(--space-4) 0;white-space:pre-wrap}.dialog-input{width:100%;padding:var(--space-3) var(--space-4);border:2px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);background:var(--color-bg-primary);color:var(--color-text-primary);transition:all var(--transition-fast) var(--easing-default);font-family:inherit}.dialog-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}.dialog-input::placeholder{color:var(--color-text-muted)}.dialog-footer{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-5) var(--space-6);border-top:1px solid var(--color-border);background:var(--color-bg-secondary)}.confirm-dialog-danger .dialog-header{border-bottom-color:var(--color-error)}.confirm-dialog-danger .dialog-header h3{color:var(--color-error)}.confirm-dialog-warning .dialog-header{border-bottom-color:var(--color-warning)}.confirm-dialog-warning .dialog-header h3{color:var(--color-warning)}.confirm-dialog-info .dialog-header{border-bottom-color:var(--color-info)}.choice-dialog{min-width:500px}.choice-options{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-4)}.choice-option{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);background:var(--color-bg-secondary);border:2px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast) var(--easing-default);text-align:left;width:100%}.choice-option:hover{background:var(--color-bg-tertiary);border-color:var(--color-primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.choice-option:active{transform:translateY(0)}.choice-icon{font-size:2rem;flex-shrink:0}.choice-content{flex:1}.choice-label{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-1)}.choice-description{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.toast-container{position:fixed;top:var(--space-6);right:var(--space-6);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-3);max-width:400px}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border-left:4px solid var(--color-info);animation:slideInRight var(--transition-normal) var(--easing-default);min-width:300px}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast-icon{font-size:1.25rem;font-weight:700;flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full)}.toast-message{flex:1;color:var(--color-text-primary);font-size:var(--font-size-sm);line-height:1.5}.toast-close{background:transparent;border:none;font-size:1.25rem;color:var(--color-text-muted);cursor:pointer;padding:0;line-height:1;transition:color var(--transition-fast) var(--easing-default);width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);flex-shrink:0}.toast-close:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.toast-success{border-left-color:var(--color-success);background:var(--color-success-bg)}.toast-success .toast-icon{color:var(--color-success);background:var(--color-success);color:#fff}.toast-error{border-left-color:var(--color-error);background:var(--color-error-bg)}.toast-error .toast-icon{color:var(--color-error);background:var(--color-error);color:#fff}.toast-warning{border-left-color:var(--color-warning);background:var(--color-warning-bg)}.toast-warning .toast-icon{color:var(--color-warning);background:var(--color-warning);color:#fff}.toast-info{border-left-color:var(--color-info);background:var(--color-info-bg)}.toast-info .toast-icon{color:var(--color-info);background:var(--color-info);color:#fff}@media (max-width: 640px){.dialog-content{min-width:0;width:90vw}.choice-dialog{min-width:0}.toast-container{left:var(--space-4);right:var(--space-4);max-width:none}.toast{min-width:0}}.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9998;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,-45%)}to{opacity:1;transform:translate(-50%,-50%)}}.relationship-manager{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 20px 60px #0000004d;width:90%;max-width:550px;max-height:85vh;display:flex;flex-direction:column;z-index:9999;animation:slideUp .3s cubic-bezier(.16,1,.3,1)}.relationship-manager-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid var(--border-color)}.relationship-manager-header h3{margin:0;font-size:1.25rem;color:var(--text-primary)}.relationship-manager-header .btn-close{background:none;border:none;font-size:1.5rem;color:var(--text-secondary);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.relationship-manager-header .btn-close:hover{background:var(--hover-bg);color:var(--text-primary)}.relationship-manager-body{padding:1.5rem;overflow-y:auto;flex:1}.selected-person{margin-bottom:1.5rem;padding:1rem;background:var(--hover-bg);border-radius:8px;font-size:1.1rem}.selected-person .generation{color:var(--text-secondary);font-size:.9rem;margin-left:.5rem}.relationships-list{display:flex;flex-direction:column;gap:.75rem}.no-relationships{text-align:center;color:var(--text-secondary);padding:2rem;font-style:italic}.relationship-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;transition:all .2s}.relationship-item:hover{border-color:var(--primary-color);box-shadow:0 2px 8px #0000001a}.relationship-info{flex:1;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.relationship-type{font-weight:600;color:var(--primary-color);min-width:80px}.relationship-name{font-weight:500;color:var(--text-primary)}.relationship-dates{font-size:.875rem;color:var(--text-secondary)}.btn-delete-relationship{background:none;border:none;color:var(--text-secondary);font-size:1.25rem;cursor:pointer;padding:.5rem;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s;flex-shrink:0}.btn-delete-relationship:hover{background:#fee;color:#c00}.btn-delete-relationship:active{transform:scale(.95)}.card-hero{border:1px solid #B0AEA5!important;background:#fff;border-radius:2px!important;box-shadow:none;overflow:hidden;transition:border-color .15s ease;height:100%}.card-hero:hover{transform:none;box-shadow:none;z-index:10}.hero-content{height:100%;position:relative;display:flex;flex-direction:column}.hero-header{height:80px;width:100%;position:absolute;top:0;left:0}.hero-header.male,.hero-header.female,.hero-header.other{background:#f5f3ee}.hero-avatar-wrapper{position:absolute;top:44px;left:50%;transform:translate(-50%);z-index:2;border-radius:50%;padding:4px;background:#fff;box-shadow:0 4px 6px -1px #0000001a}.hero-avatar-wrapper .person-avatar{width:72px;height:72px;border-radius:50%;border:none!important;overflow:hidden}.hero-avatar-wrapper .person-avatar img{width:100%;height:100%;object-fit:cover}.hero-info{margin-top:124px;padding:0 16px 16px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px}.hero-info .person-name{font-family:Lora,Georgia,Times New Roman,serif;font-weight:600;color:#141413;font-size:16px;line-height:1.4}.hero-title{font-family:Poppins,system-ui,sans-serif;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:1px;color:#5c5c58;margin-bottom:4px}.hero-status-line{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:2px}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.living{background-color:#10b981;box-shadow:0 0 0 2px #d1fae5}.status-dot.deceased{background-color:#94a3b8}.hero-info .birth-year{font-family:Poppins,system-ui,sans-serif;font-size:13px;color:#b0aea5;font-weight:400}.card-vintage{background:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important;overflow:visible!important}.vintage-content{background:#fff;padding:12px 12px 30px;box-shadow:2px 4px 8px #00000026;display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease;width:100%;height:100%}.card-vintage:hover .vintage-content{transform:rotate(0) scale(1.02)!important;box-shadow:5px 10px 15px #0003;z-index:20}.vintage-content:before{content:"";position:absolute;top:-12px;left:50%;transform:translate(-50%) rotate(-2deg);width:80px;height:24px;background-color:#ffebcdb3;box-shadow:0 1px 2px #0000001a;z-index:10;opacity:.9}.vintage-photo-area{width:100%;aspect-ratio:1/1;background:#f0f0f0;margin-bottom:12px;border:1px solid #e5e5e5;overflow:hidden}.vintage-photo-area .person-avatar{width:100%;height:100%;border-radius:0;border:none!important;filter:sepia(.3) grayscale(.2);transition:filter .3s ease}.card-vintage:hover .vintage-photo-area .person-avatar{filter:sepia(0) grayscale(0)}.vintage-photo-area .person-avatar img{width:100%;height:100%;object-fit:cover;border-radius:0}.vintage-photo-area .visuals-avatar-initials{width:100%;height:100%;border-radius:0;font-size:48px}.vintage-caption-area{text-align:center;font-family:Brush Script MT,Bradley Hand,Comic Sans MS,cursive;color:#374151;flex-grow:1;display:flex;flex-direction:column;justify-content:center}.vintage-caption-area .person-name{font-size:20px;font-weight:500;line-height:1.2}.vintage-caption-area .person-lifespan{font-size:14px;opacity:.7;margin-top:4px}.card-flip{background:transparent!important;border:none!important;box-shadow:none!important;perspective:1000px;overflow:visible!important}.flip-container{position:relative;width:100%;height:100%;text-align:center;transition:transform .6s;transform-style:preserve-3d}.card-flip:hover .flip-container{transform:rotateY(180deg)}.flip-card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d}.flip-card-front,.flip-card-back{position:absolute;width:100%;height:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:20px;box-shadow:0 4px 10px #0000001a;display:flex;flex-direction:column;justify-content:center;align-items:center}.flip-card-front{background-color:#fff;color:#000}.flip-card-front .person-avatar{width:100px;height:100px;margin-bottom:20px;border-radius:50%;box-shadow:0 8px 16px #0000001a}.flip-name{font-size:18px;font-weight:700;color:#1e293b;padding:0 10px}.tree-select-screen{text-align:center;padding:var(--space-8)}.tree-select-desc{margin-bottom:var(--space-6);color:var(--color-text-secondary)}.tree-select-list{display:flex;flex-direction:column;gap:var(--space-2);max-width:320px;margin:0 auto}.tree-select-item{width:100%;text-align:left;display:flex;justify-content:space-between;align-items:center}.tree-select-count{font-size:var(--font-size-sm);opacity:.7}.tree-select-create-btn{margin-top:var(--space-4)}.flip-card-back{background-color:#f8fafc;color:#334155;transform:rotateY(180deg);padding:20px;align-items:flex-start}.flip-card-back.male{background:linear-gradient(135deg,#e0f2fe,#f0f9ff);border:2px solid #bae6fd}.flip-card-back.female{background:linear-gradient(135deg,#fce7f3,#fff1f2);border:2px solid #fbcfe8}.flip-detail-row{display:flex;justify-content:space-between;width:100%;margin-bottom:8px;font-size:14px}.flip-label{font-weight:600;color:#64748b}.flip-value{font-weight:500;color:#0f172a}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;background-color:var(--color-bg-secondary);background-image:radial-gradient(at 0% 0%,color-mix(in srgb,var(--color-primary) 15%,transparent) 0px,transparent 50%),radial-gradient(at 100% 100%,color-mix(in srgb,var(--color-accent) 15%,transparent) 0px,transparent 50%);padding:var(--space-4);overflow:hidden}.auth-page:before,.auth-page:after{content:"";position:absolute;border-radius:50%;filter:blur(60px);z-index:0;opacity:.5;animation:auth-blob-float 10s infinite ease-in-out alternate;pointer-events:none}.auth-page:before{top:-10%;left:-10%;width:40vw;height:40vw;background:color-mix(in srgb,var(--color-primary) 20%,transparent);animation-delay:-2s}.auth-page:after{bottom:-10%;right:-10%;width:50vw;height:50vw;background:color-mix(in srgb,var(--color-accent) 20%,transparent)}@keyframes auth-blob-float{0%{transform:translateY(0) scale(1)}to{transform:translateY(-20px) scale(1.05)}}.auth-container{width:100%;max-width:440px;display:flex;flex-direction:column;gap:var(--space-6);z-index:1}.auth-header{text-align:center}.auth-logo{display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin-bottom:var(--space-2)}.auth-logo .logo-icon{font-size:2.5rem}.auth-logo h1{font-size:var(--font-size-3xl);font-weight:700;color:var(--color-text-primary);margin:0}.auth-subtitle{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0}.auth-theme-switcher{position:fixed;top:var(--space-4);right:var(--space-4);z-index:100}.auth-card{background:color-mix(in srgb,var(--color-bg-primary) 85%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:var(--radius-xl);padding:var(--space-8);box-shadow:0 10px 40px -10px #0000001a,0 0 0 1px color-mix(in srgb,var(--color-border) 40%,transparent);border:1px solid color-mix(in srgb,var(--color-bg-primary) 50%,rgba(255,255,255,.2));transition:transform var(--transition-normal)}.auth-card:hover{transform:translateY(-2px)}.auth-card-header{text-align:center;margin-bottom:var(--space-6)}.auth-card-header h2{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.auth-card-header p{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0}.auth-link{color:var(--color-accent);font-weight:500;text-decoration:none;transition:color var(--transition-fast)}.auth-link:hover{color:var(--color-accent-hover);text-decoration:underline}.auth-link-subtle{color:var(--color-text-muted);font-size:var(--font-size-sm);text-decoration:none;transition:color var(--transition-fast)}.auth-link-subtle:hover{color:var(--color-accent)}.auth-error{display:flex;align-items:flex-start;gap:var(--space-2);background:var(--color-error-bg);color:var(--color-error);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--space-4);border:1px solid var(--color-error)}.auth-error .error-icon{flex-shrink:0;margin-top:1px}.auth-error-content{display:flex;flex-direction:column;gap:var(--space-2);flex:1}.auth-error-message{line-height:1.5}.auth-error-retry{align-self:flex-start;background:none;border:1px solid currentColor;color:inherit;font-size:var(--font-size-xs);font-weight:600;padding:2px var(--space-3);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.auth-error-retry:hover{background:#00000014}.password-input-wrapper{position:relative;display:flex;align-items:center}.password-input-wrapper input{width:100%;padding-right:2.75rem!important}.password-toggle-btn{position:absolute;right:var(--space-3);background:none;border:none;padding:0;cursor:pointer;color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;transition:color var(--transition-fast);line-height:0}.password-toggle-btn:hover{color:var(--color-text-secondary)}.password-toggle-btn svg{width:18px;height:18px}.auth-form{display:flex;flex-direction:column;gap:var(--space-4)}.auth-form .form-group{display:flex;flex-direction:column;gap:var(--space-2)}.auth-form .form-group label{font-weight:500;font-size:var(--font-size-sm);color:var(--color-text-primary)}.auth-form .form-group input{padding:var(--space-3) var(--space-4);border:2px solid transparent;border-radius:var(--radius-md);font-size:var(--font-size-base);background:var(--color-bg-secondary);color:var(--color-text-primary);transition:all .3s ease}.auth-form .form-group input::placeholder{color:var(--color-text-muted)}.auth-form .form-group input:hover{background:color-mix(in srgb,var(--color-bg-secondary) 80%,var(--color-primary) 5%)}.auth-form .form-group input:focus{outline:none;background:var(--color-bg-primary);border-color:var(--color-primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--color-primary) 15%,transparent)}.auth-form .form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.auth-options{display:flex;justify-content:flex-end}.auth-submit-btn{width:100%;padding:var(--space-3) var(--space-4);font-size:var(--font-size-base);font-weight:600;margin-top:var(--space-4);background:linear-gradient(135deg,var(--color-primary) 0%,color-mix(in srgb,var(--color-primary) 80%,black) 100%);border:none;box-shadow:0 4px 12px color-mix(in srgb,var(--color-primary) 30%,transparent);transition:all .3s ease}.auth-submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px color-mix(in srgb,var(--color-primary) 40%,transparent)}.auth-submit-btn:active:not(:disabled){transform:translateY(0)}.auth-submit-btn:disabled{opacity:.6;cursor:not-allowed}.auth-submit-btn .spinner{display:inline-block;width:16px;height:16px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite;margin-right:var(--space-2)}@keyframes spin{to{transform:rotate(360deg)}}.auth-divider{display:flex;align-items:center;margin:var(--space-6) 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.auth-divider span{padding:0 var(--space-4);color:var(--color-text-muted);font-size:var(--font-size-sm);text-transform:lowercase}.auth-oauth-buttons{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.btn-oauth{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);box-shadow:0 2px 4px #00000005;cursor:pointer;transition:all .3s ease}.btn-oauth:hover{background:var(--color-bg-primary);border-color:color-mix(in srgb,var(--color-border-hover) 80%,var(--color-primary) 20%);transform:translateY(-2px);box-shadow:0 4px 12px #0000000d}.btn-oauth .oauth-icon{width:20px;height:20px;flex-shrink:0}.auth-terms{margin-top:var(--space-6);text-align:center;font-size:var(--font-size-xs);color:var(--color-text-muted)}.auth-terms a{color:var(--color-accent);text-decoration:none}.auth-terms a:hover{text-decoration:underline}.auth-footer{text-align:center}.auth-footer p{color:var(--color-text-muted);font-size:var(--font-size-xs);margin:0}@media (max-width: 480px){.auth-card{padding:var(--space-6)}.auth-form .form-row-2,.auth-oauth-buttons{grid-template-columns:1fr}.auth-theme-switcher{top:var(--space-2);right:var(--space-2)}}.oauth-callback{display:flex;justify-content:center;align-items:center;height:100vh;flex-direction:column;gap:1rem;font-family:var(--font-family, system-ui, -apple-system, sans-serif)}.oauth-callback-icon{font-size:48px}.oauth-callback-error{color:var(--color-error);font-size:var(--font-size-base);font-weight:500}.oauth-callback-text{color:var(--color-text-muted);font-size:var(--font-size-sm)}.oauth-callback-spinner{width:40px;height:40px;border:4px solid var(--color-border-light);border-top:4px solid var(--color-primary);border-radius:50%;animation:oauth-spin 1s linear infinite}@keyframes oauth-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:400px;padding:2rem}.error-content{max-width:600px;text-align:center;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:2rem}.error-content h2{color:var(--color-error);margin:0 0 1rem}.error-content p{color:var(--color-text-secondary);margin:0}.error-content details{text-align:left;background:var(--color-bg-tertiary);padding:1rem;border-radius:var(--radius-sm);font-family:monospace;font-size:.875rem;margin-top:1rem;white-space:pre-wrap}.error-content summary{cursor:pointer;font-weight:600;margin-bottom:.5rem}.error-content .btn-primary{margin-top:1rem}
