*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary: #ffffff;--bg-secondary: #f8f9fa;--bg-tertiary: rgba(255, 255, 255, .95);--text-primary: #333;--text-secondary: #666;--text-tertiary: #999;--border-color: #e0e0e0;--border-light: #ddd;--shadow: rgba(0, 0, 0, .1);--shadow-strong: rgba(0, 0, 0, .2);--accent-color: #667eea;--node-color: #6c7ff2;--node-search-root: #ff9f43;--link-color: #999;--tooltip-bg: rgba(0, 0, 0, .9);--tooltip-text: white;--button-hover: #f0f0f0;--error-bg: #fee;--error-text: #c33;--graph-bg: rgba(255, 255, 255, .5);--node-unexpanded: #667eea;--node-expanded: #48bb78;--node-leaf: #a0aec0;--focus-ring: rgba(102, 126, 234, .4);--hover-overlay: rgba(0, 0, 0, .05);--transition-fast: .1s;--transition-normal: .2s;--transition-slow: .3s;--ease-out: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.175, .885, .32, 1.275);--search-focus-shadow: rgba(102, 126, 234, .15);--dropdown-item-hover: var(--bg-secondary);--dropdown-item-focus: rgba(102, 126, 234, .1);--success-color: #48bb78;--success-bg: rgba(72, 187, 120, .1);--warning-color: #ed8936;--warning-bg: rgba(237, 137, 54, .1)}body.dark-mode{--bg-primary: #363636;--bg-secondary: #363636;--bg-tertiary: rgba(54, 54, 54, .95);--text-primary: #f0f0f0;--text-secondary: #c0c0c0;--text-tertiary: #909090;--border-color: #505050;--border-light: #606060;--shadow: rgba(0, 0, 0, .5);--shadow-strong: rgba(0, 0, 0, .7);--accent-color: #9dabff;--node-color: #8c9dff;--node-search-root: #ffbb77;--link-color: #999;--tooltip-bg: rgba(20, 20, 20, .98);--tooltip-text: #f0f0f0;--button-hover: #2a2a2a;--error-bg: #3a1010;--error-text: #ff9999;--graph-bg: #363636;--node-unexpanded: #8c9dff;--node-expanded: #68d391;--node-leaf: #718096;--focus-ring: rgba(140, 157, 255, .4);--hover-overlay: rgba(255, 255, 255, .05);--search-focus-shadow: rgba(140, 157, 255, .2);--dropdown-item-focus: rgba(140, 157, 255, .15);--success-color: #68d391;--success-bg: rgba(104, 211, 145, .15);--warning-color: #fbd38d;--warning-bg: rgba(251, 211, 141, .15)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--bg-primary);min-height:100vh;color:var(--text-primary);transition:background-color .3s,color .3s}:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}:focus:not(:focus-visible){outline:none;box-shadow:none}#app{display:flex;flex-direction:column;height:100vh}.main-layout{display:flex;flex:1;overflow:hidden}.content-area{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.right-panel{width:30vw;min-width:320px;max-width:600px;background:var(--bg-primary);border-left:1px solid var(--border-color);display:flex;flex-direction:column;transition:background-color .3s,border-color .3s,width .2s ease-out;position:relative}.right-panel.collapsed{width:36px!important;min-width:36px!important;background:var(--bg-secondary)}.right-panel.collapsed .right-panel-tabs,.right-panel.collapsed .right-panel-content,.right-panel.collapsed .panel-target-btn,.right-panel.collapsed #panel-title{display:none!important}.right-panel.collapsed .right-panel-header{flex-direction:column;padding:.5rem 0;height:100%;justify-content:flex-start;align-items:center;border-bottom:none;background:transparent}.right-panel.collapsed .panel-collapse-btn{margin-bottom:1rem}.right-panel.collapsed .panel-collapse-btn svg{transform:rotate(180deg)}.right-panel.collapsed .right-panel-header:after{content:"Info";writing-mode:vertical-rl;text-orientation:mixed;font-size:.75rem;font-weight:500;color:var(--text-tertiary);letter-spacing:.05em;text-transform:uppercase}.right-panel.collapsed .resize-handle{display:none}.resize-handle{position:absolute;left:0;top:0;bottom:0;width:5px;cursor:ew-resize;background:transparent;z-index:10;transition:background .2s}.resize-handle:hover,.resize-handle.active{background:var(--accent-color)}.right-panel.resizing{transition:none}.right-panel-header{display:flex;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border-color);background:var(--bg-secondary);transition:background-color .3s,border-color .3s;gap:.5rem}.right-panel-header h3{margin:0;font-size:1rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.panel-collapse-btn{background:none;border:none;cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-secondary);transition:all .2s;display:flex;align-items:center;justify-content:center;flex-shrink:0}.panel-collapse-btn:hover{background:var(--bg-primary);color:var(--accent-color)}.panel-collapse-btn svg{width:16px;height:16px;display:block;transition:transform .2s}.panel-target-btn{display:none;background:none;border:none;cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-secondary);transition:all .2s;flex-shrink:0}.panel-target-btn:hover{background:var(--bg-primary);color:var(--accent-color)}.panel-target-btn svg{width:18px;height:18px;display:block}.right-panel-tabs{display:flex;border-bottom:1px solid var(--border-color);background:var(--bg-secondary);transition:background-color .3s,border-color .3s}.right-panel-content{flex:1;overflow:hidden;position:relative}.panel-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-tertiary);padding:2rem;text-align:center}.panel-placeholder-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.panel-placeholder-text{font-size:.9rem;line-height:1.5}header{background:var(--bg-tertiary);padding:.5rem 1rem;box-shadow:0 2px 10px var(--shadow);transition:background-color .3s,box-shadow .3s}.header-content{display:flex;justify-content:space-between;align-items:center;gap:1rem}.header-text{flex:1}header h1{font-size:1.25rem;color:var(--accent-color);margin-bottom:.25rem}header p{color:var(--text-secondary);font-size:.75rem}.settings-btn{background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary);padding:.5rem;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;width:40px;height:40px;flex-shrink:0}.settings-btn:hover{background:var(--button-hover);border-color:var(--accent-color);transform:rotate(45deg)}.settings-btn svg{transition:transform .2s}#controls{background:var(--bg-tertiary);padding:.5rem 1rem;border-bottom:1px solid var(--border-color);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;transition:background-color .3s,border-color .3s}.controls-left{display:flex;align-items:center;gap:.5rem;flex:1;flex-wrap:wrap}.controls-right{display:flex;align-items:center;gap:.5rem}#search-container{position:relative;min-width:240px;max-width:360px;flex:1}.search-input-wrapper{position:relative;display:flex;align-items:center;background:var(--bg-primary);border:1.5px solid var(--border-light);border-radius:10px;transition:all var(--transition-normal) var(--ease-out);overflow:hidden}.search-input-wrapper:hover{border-color:var(--accent-color)}.search-input-wrapper:focus-within{border-color:var(--accent-color);box-shadow:0 0 0 4px var(--search-focus-shadow)}.search-input-wrapper.loading{pointer-events:none;opacity:.7}.search-icon{width:18px;height:18px;margin-left:12px;color:var(--text-tertiary);flex-shrink:0;transition:color var(--transition-normal)}.search-input-wrapper:focus-within .search-icon{color:var(--accent-color)}#search-input{flex:1;padding:10px 12px;font-size:.9375rem;border:none;outline:none;background:transparent;color:var(--text-primary);min-width:0}#search-input::placeholder{color:var(--text-tertiary);transition:opacity var(--transition-normal)}#search-input:focus::placeholder{opacity:.6}.search-loading-spinner{display:flex;align-items:center;justify-content:center;padding:0 8px}.search-loading-spinner .spinner{width:18px;height:18px;stroke:var(--accent-color);stroke-width:2;fill:none;stroke-dasharray:60;stroke-dashoffset:60;animation:search-spinner 1s ease-in-out infinite}@keyframes search-spinner{0%{stroke-dashoffset:60;transform:rotate(0)}50%{stroke-dashoffset:15}to{stroke-dashoffset:60;transform:rotate(360deg)}}.search-clear-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;margin-right:6px;padding:0;background:var(--bg-secondary);border:none;border-radius:6px;color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast)}.search-clear-btn:hover{background:var(--hover-overlay);color:var(--text-primary)}.search-clear-btn:active{transform:scale(.92)}.search-clear-btn svg{width:14px;height:14px}#autocomplete-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;max-height:400px;overflow-y:auto;box-shadow:0 8px 24px var(--shadow),0 2px 8px var(--shadow);z-index:1000;opacity:0;transform:translateY(-8px) scale(.98);visibility:hidden;transition:all var(--transition-normal) var(--ease-out)}#autocomplete-results.show{opacity:1;transform:translateY(0) scale(1);visibility:visible}.autocomplete-item{padding:12px 16px;cursor:pointer;border-bottom:1px solid var(--border-color);transition:background-color var(--transition-fast);outline:none}.autocomplete-item:last-child{border-bottom:none}.autocomplete-item:hover,.autocomplete-item.keyboard-focus{background-color:var(--dropdown-item-hover)}.autocomplete-item.keyboard-focus{background-color:var(--dropdown-item-focus);box-shadow:inset 3px 0 0 var(--accent-color)}.autocomplete-item:active{background-color:#667eea26}.autocomplete-item-name{display:flex;align-items:center;gap:8px;margin-bottom:4px}.autocomplete-item-name strong{font-size:.9375rem;font-weight:600;color:var(--text-primary)}.autocomplete-item strong{display:block;color:var(--text-primary);margin-bottom:.25rem}.autocomplete-item .qid{font-size:.75rem;color:var(--text-tertiary);background:var(--bg-secondary);padding:2px 6px;border-radius:4px}.autocomplete-item small{display:block;color:var(--text-secondary);font-size:.8125rem;line-height:1.4}.autocomplete-empty{padding:24px 16px;text-align:center;color:var(--text-tertiary)}.autocomplete-empty-icon{font-size:2rem;margin-bottom:8px;opacity:.5}.autocomplete-empty-text{font-size:.875rem}.autocomplete-hint{padding:8px 16px;font-size:.75rem;color:var(--text-tertiary);background:var(--bg-secondary);border-top:1px solid var(--border-color);display:flex;gap:12px}.autocomplete-hint kbd{display:inline-block;padding:2px 6px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;font-family:inherit;font-size:.7rem}.btn{padding:.35rem .7rem;font-size:.8rem;font-weight:500;border-radius:6px;cursor:pointer;transition:all .2s;border:1px solid transparent;height:32px;display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap}.btn-primary{background-color:var(--accent-color);color:#fff;border-color:var(--accent-color)}.btn-primary:hover:not(:disabled){background-color:#5568d3;border-color:#5568d3}.btn-outline{background-color:transparent;color:var(--accent-color);border-color:var(--border-light)}.btn-outline:hover:not(:disabled){background-color:#667eea0d;border-color:var(--accent-color)}.btn:disabled{opacity:.5;cursor:not-allowed}#loading{color:#667eea;font-weight:600;display:flex;align-items:center;gap:.5rem}#loading:before{content:"";width:16px;height:16px;border:2px solid #667eea;border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.progress-divider{position:relative;overflow:hidden}.progress-divider .progress-fill{position:absolute;top:0;left:0;height:100%;width:0%;background:linear-gradient(90deg,#667eea33,#764ba233);transition:width .3s ease;z-index:0}.progress-divider p{position:relative;z-index:1;margin:0}#error{color:#d32f2f;background:#ffebee;padding:.75rem 1rem;border-radius:8px;font-size:.9rem}#graph-info{background:#fffffff2;padding:.3rem 1rem;border-bottom:1px solid #e0e0e0;color:#666;font-size:.7rem}#position-filter{display:none;align-items:center;gap:8px;padding:4px 8px;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}#position-filter.show{display:flex}.position-filter-label{font-size:.8125rem;font-weight:600;color:var(--text-secondary);white-space:nowrap}.position-filter-controls{display:flex;gap:4px}.filter-action-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;background:transparent;border:1px solid var(--border-light);color:var(--text-secondary);font-size:.8125rem;font-weight:500;border-radius:6px;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.filter-action-btn svg{width:14px;height:14px}.filter-action-btn:hover{background:var(--accent-color);border-color:var(--accent-color);color:#fff}.filter-action-btn:active{transform:scale(.95)}.position-selector-container{position:relative;min-width:160px;max-width:240px}.position-selector-summary{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;border:1.5px solid var(--border-light);border-radius:8px;background:var(--bg-primary);cursor:pointer;transition:all var(--transition-normal);font-size:.875rem;color:var(--text-primary);text-align:left}.position-selector-summary:hover{border-color:var(--accent-color)}.position-selector-summary:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px var(--focus-ring)}.position-selector-summary[aria-expanded=true]{border-color:var(--accent-color);border-bottom-left-radius:0;border-bottom-right-radius:0}#position-count-text{font-size:.875rem;color:var(--text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-arrow{width:16px;height:16px;color:var(--text-tertiary);transition:transform var(--transition-normal) ease-out;flex-shrink:0}.position-selector-summary[aria-expanded=true] .dropdown-arrow{transform:rotate(180deg)}.position-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--bg-primary);border:1.5px solid var(--accent-color);border-top:none;border-radius:0 0 10px 10px;max-height:320px;overflow:hidden;display:flex;flex-direction:column;z-index:1000;box-shadow:0 8px 24px var(--shadow);animation:dropdown-open var(--transition-normal) ease-out}@keyframes dropdown-open{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.position-search-wrapper{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border-light);background:var(--bg-secondary)}.position-search-icon{width:16px;height:16px;color:var(--text-tertiary);flex-shrink:0}#position-search{flex:1;padding:0;border:none;outline:none;font-size:.875rem;background:transparent;color:var(--text-primary)}#position-search::placeholder{color:var(--text-tertiary)}.position-list{flex:1;overflow-y:auto;padding:6px 0}.position-list-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;transition:background-color var(--transition-fast);position:relative}.position-list-item:hover{background-color:var(--bg-secondary)}.position-list-item.keyboard-focus{background-color:var(--dropdown-item-focus)}.position-list-item.keyboard-focus:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent-color)}.position-list-item input[type=checkbox]{appearance:none;-webkit-appearance:none;width:18px;height:18px;border:2px solid var(--border-color);border-radius:4px;cursor:pointer;transition:all var(--transition-fast);position:relative;flex-shrink:0}.position-list-item input[type=checkbox]:hover{border-color:var(--accent-color)}.position-list-item input[type=checkbox]:checked{background:var(--accent-color);border-color:var(--accent-color)}.position-list-item input[type=checkbox]:checked:after{content:"";position:absolute;left:5px;top:2px;width:5px;height:9px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.position-list-item input[type=checkbox]:focus{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}.position-list-item label{flex:1;font-size:.875rem;color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;line-height:1.3}.position-list-item.just-changed{animation:selection-flash var(--transition-slow) ease-out}@keyframes selection-flash{0%{background-color:#667eea33}to{background-color:transparent}}.position-dropdown-footer{padding:8px 14px;font-size:.75rem;color:var(--text-tertiary);background:var(--bg-secondary);border-top:1px solid var(--border-light);display:flex;justify-content:space-between;align-items:center}.selection-count{font-weight:500}.position-list-empty{padding:24px 16px;text-align:center;color:var(--text-tertiary);font-size:.875rem}.position-pill-remove{background:none;border:none;color:#fff;cursor:pointer;font-size:1rem;line-height:1;padding:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s;opacity:.8}.position-pill-remove:hover{background-color:#fff3;opacity:1}.no-positions-message{color:#666;font-size:.9rem;font-style:italic;padding:.5rem 0}#graph-container,#gantt-container,#tree-container{flex:1;position:relative;overflow:hidden;background:var(--graph-bg);contain:layout style paint}#graph,#gantt,#tree{width:100%;height:100%}#graph-container svg{touch-action:none;-webkit-user-select:none;user-select:none}.view-switcher{display:inline-flex;gap:2px;padding:4px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;position:relative}.view-switcher:before{content:"";position:absolute;height:calc(100% - 8px);width:calc(33.33% - 4px);background:var(--accent-color);border-radius:6px;top:4px;left:4px;transition:transform .25s var(--ease-out);z-index:0}.view-switcher[data-active=graph]:before{transform:translate(0)}.view-switcher[data-active=tree]:before{transform:translate(calc(100% + 2px))}.view-switcher[data-active=gantt]:before,.view-switcher[data-active=timeline]:before{transform:translate(calc(200% + 4px))}.btn-view{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:6px;font-size:.8125rem;font-weight:500;transition:color var(--transition-normal);white-space:nowrap;position:relative;z-index:1}.btn-view svg{width:16px;height:16px;flex-shrink:0}.btn-view:hover:not(.active){color:var(--text-primary)}.btn-view:focus{outline:none}.btn-view:focus-visible{box-shadow:0 0 0 2px var(--focus-ring)}.btn-view.active{color:#fff}.btn-view:after{content:"";position:absolute;inset:0;border-radius:6px;background:radial-gradient(circle,rgba(255,255,255,.3) 0%,transparent 70%);opacity:0;transform:scale(0);transition:opacity var(--transition-slow),transform var(--transition-slow)}.btn-view:active:after{opacity:1;transform:scale(1);transition:none}.view-switcher.loading .btn-view{pointer-events:none}#gantt-container{position:relative}.timeline-controls{position:absolute;top:8px;right:16px;z-index:10;display:flex;gap:8px;align-items:center;background:var(--bg-tertiary);padding:6px 10px;border-radius:6px;border:1px solid var(--border-color);box-shadow:0 2px 4px var(--shadow)}.timeline-sort-label{font-size:11px;color:var(--text-secondary);font-weight:500}.timeline-sort-select{padding:4px 8px;border-radius:4px;border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);font-size:12px;cursor:pointer;transition:border-color .2s,box-shadow .2s}.timeline-sort-select:hover{border-color:var(--accent-color)}.timeline-sort-select:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px #667eea33}.term-bar{transition:transform .15s ease-out,filter .15s ease-out;transform-origin:left center}.term-bar:hover{filter:brightness(1.1);cursor:pointer}.row-header{pointer-events:none;font-weight:500}.year-grid,.today-marker{pointer-events:none}.node{cursor:pointer}.node circle:not(.node-border):not([clip-path]){stroke:var(--bg-primary);stroke-width:2px;transition:all .2s}.node circle:not(.node-border):hover{stroke-width:3px;filter:brightness(1.1)}.node.unexpanded circle:not(.node-border):not([clip-path]){fill:var(--node-color)}.node.expanded circle:not(.node-border):not([clip-path]){fill:#4caf50}.node.leaf circle:not(.node-border):not([clip-path]){fill:var(--text-tertiary);cursor:default}.node.root circle:not(.node-border):not([clip-path]){stroke-width:4px;stroke:var(--node-search-root)}.node.search-root circle:not(.node-border):not([clip-path]){fill:var(--node-search-root)!important;stroke-width:4px;stroke:var(--node-search-root)}.node.multi-position circle:not(.node-border):not([clip-path]){stroke-width:3px;stroke-dasharray:5,5}.initials-bg{fill:var(--accent-color)}.initials-text{fill:#fff;font-size:20px;font-weight:700;pointer-events:none;-webkit-user-select:none;user-select:none}.node-border{stroke:var(--border-color)}.node.search-root .node-border{stroke:var(--node-search-root);stroke-width:4px}.node.selected .node-border{stroke:#5a9fd4;stroke-width:2.5px}.node.selected .pulse-ring{display:block!important}.pulse-ring-2{display:none!important}.pulse-ring{fill:none;stroke:#5a9fd4;pointer-events:none;animation:pulse-ring-subtle 3s ease-in-out infinite}@keyframes pulse-ring-subtle{0%,to{stroke-width:1.5px;opacity:.25;transform:scale(1)}50%{stroke-width:1px;opacity:.1;transform:scale(1.03)}}body.dark-mode .pulse-ring{stroke:#6ab0e6;opacity:.3}body.dark-mode .node.selected .node-border{stroke:#6ab0e6}.node.multi-position .node-border{stroke-width:3px;stroke-dasharray:5,5}.node-label{font-size:13px;font-weight:600;letter-spacing:-.01em;fill:var(--text-primary);pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:-1px -1px 0 var(--bg-primary),1px -1px 0 var(--bg-primary),-1px 1px 0 var(--bg-primary),1px 1px 0 var(--bg-primary),0 0 8px var(--bg-primary)}svg[data-zoom-level=far] .node-label{opacity:0}.node:hover .node-label{opacity:1!important;font-weight:700}.node{filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:filter .2s ease-out,transform .15s ease-out}.node:hover{filter:drop-shadow(0 4px 12px rgba(0,0,0,.2))}body.dark-mode .node{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}body.dark-mode .node:hover{filter:drop-shadow(0 4px 12px rgba(0,0,0,.5))}.expand-indicator{stroke:var(--accent-color);stroke-width:2px;stroke-dasharray:6 6;fill:none;opacity:0;transition:opacity .3s;pointer-events:none}.node.unexpanded:hover .expand-indicator{opacity:.5;animation:rotate-dash 8s linear infinite}@keyframes rotate-dash{to{stroke-dashoffset:-48}}.expand-hint circle{fill:var(--accent-color);stroke:var(--bg-primary);stroke-width:2;transition:transform .2s,fill .2s}.expand-hint text{fill:#fff;font-size:12px;font-weight:700;pointer-events:none}.node:hover .expand-hint circle{fill:var(--node-search-root);transform:scale(1.1)}.position-badge circle{fill:var(--accent-color);stroke:var(--bg-primary);stroke-width:2}.position-badge text{fill:#fff;font-size:10px;font-weight:700;pointer-events:none}.node.keyboard-focused .node-border{stroke:var(--accent-color)!important;stroke-width:3px!important}.node.keyboard-focused{filter:drop-shadow(0 0 12px var(--focus-ring))!important}.node.dimmed{opacity:.25;transition:opacity .2s}.node:not(.dimmed){transition:opacity .2s}.node.pressing{transform:scale(.95)}.node.leaf{cursor:default;opacity:.8}.node.leaf:hover{filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}body.dark-mode .node.leaf:hover{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.node-status{font-size:10px;fill:var(--text-tertiary);pointer-events:none;opacity:0;transition:opacity .2s}.node:hover .node-status{opacity:1}.position-group{stroke-width:1;rx:16;ry:16;filter:url(#soft-shadow);transition:filter .15s ease-out}body.dark-mode .position-group{stroke-width:1;filter:url(#soft-shadow-dark)}svg.zooming .position-group{filter:none!important;transition:none}.graph-container svg g{will-change:transform}svg.zooming .node,svg.zooming .link{shape-rendering:optimizeSpeed}.position-label{font-size:16px;font-weight:600;fill:#333;text-anchor:start;pointer-events:auto;cursor:pointer;transition:fill .2s}.position-label:hover{fill:#000;text-decoration:underline}body.dark-mode .position-label{fill:#fff;font-weight:700}body.dark-mode .position-label:hover{fill:#9dabff}.position-background{fill:#fff;opacity:.8;rx:5;ry:5}body.dark-mode .position-background{fill:#363636;opacity:.95}.node text{font-size:12px;text-anchor:middle;pointer-events:none;fill:var(--text-primary);font-weight:600;text-shadow:1px 1px 2px var(--bg-primary),-1px -1px 2px var(--bg-primary)}.link{fill:none;stroke:var(--link-color);stroke-width:2px;stroke-opacity:.5;transition:stroke-opacity .2s,stroke-width .2s,stroke .2s;pointer-events:stroke;cursor:pointer}.link:hover{stroke-opacity:1;stroke-width:3px;stroke:var(--accent-color)}.link.highlighted{stroke-opacity:.9;stroke-width:2.5px;stroke:var(--accent-color)}.link.dimmed{stroke-opacity:.12}.link[data-direction=successor]{stroke-dasharray:8 4}.link.cycle{stroke-dasharray:5,5;stroke:#ff9800}body.dark-mode .link.cycle{stroke:#fa3}.link-label{font-size:10px;fill:var(--text-tertiary);pointer-events:none;opacity:0;transition:opacity .2s}.link:hover~.link-label,.link-label.visible{opacity:1}.tooltip{position:absolute;padding:0;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:12px;pointer-events:none;font-size:.875rem;max-width:320px;min-width:200px;z-index:2000;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s;box-shadow:0 4px 20px var(--shadow-strong);overflow:hidden}.tooltip.show{opacity:1;transform:translateY(0)}.tooltip-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.tooltip-header strong{font-size:.95rem;color:var(--text-primary);margin:0}.tooltip-badge{font-size:.65rem;padding:.15rem .5rem;border-radius:4px;background:var(--accent-color);color:#fff;font-weight:600;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap}.tooltip-badge.search-root{background:var(--node-search-root)}.tooltip-badge.leaf{background:var(--text-tertiary)}.tooltip-badge.expanded{background:var(--node-expanded)}.tooltip-description{padding:.75rem 1rem;color:var(--text-secondary);font-size:.8125rem;border-bottom:1px solid var(--border-color);line-height:1.4}.tooltip-positions{padding:.75rem 1rem}.tooltip-position-item{display:flex;justify-content:space-between;align-items:center;padding:.25rem 0;gap:1rem}.tooltip-position-name{font-weight:500;color:var(--text-primary)}.tooltip-dates{font-size:.75rem;color:var(--text-tertiary);white-space:nowrap}.tooltip-more{font-size:.75rem;color:var(--text-tertiary);font-style:italic;margin-top:.5rem}.tooltip-hint{padding:.5rem 1rem;background:var(--bg-secondary);font-size:.7rem;color:var(--text-tertiary);border-top:1px solid var(--border-color)}.tooltip-hint kbd{display:inline-block;padding:.1rem .35rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:3px;font-family:inherit;font-size:.65rem;font-weight:500}.marker{fill:#999}body.dark-mode .marker{fill:#aaa}.tree-node circle{transition:transform .15s ease-out}.tree-node:hover circle{transform:scale(1.1)}#tree-container{background:var(--graph-bg)}.wiki-tab{flex:1;padding:.6rem .75rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.wiki-tab:hover{color:var(--text-primary);background:var(--button-hover)}.wiki-tab.active{color:var(--accent-color);border-bottom-color:var(--accent-color);font-weight:600}.tab-content{display:none;width:100%;height:100%;overflow-y:auto}.tab-content.active{display:block}#info-content{padding:1rem}.person-image-container{display:flex;justify-content:center;margin-bottom:1.5rem}.person-image{width:100px;height:100px;border-radius:50%;object-fit:cover;border:3px solid var(--border-color)}.person-initials{width:100px;height:100px;border-radius:50%;background:var(--accent-color);color:#fff;font-size:48px;font-weight:700;display:flex;align-items:center;justify-content:center;border:3px solid var(--border-color)}.info-section{margin-bottom:1.5rem}.info-section h4{margin:0 0 .75rem;font-size:.875rem;font-weight:600;color:var(--accent-color);text-transform:uppercase;letter-spacing:.5px}.info-item{margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.info-item:last-child{border-bottom:none}.info-label{font-size:.8125rem;color:var(--text-secondary);margin-bottom:.25rem;font-weight:500}.info-value{font-size:.9375rem;color:var(--text-primary);line-height:1.5}.info-loading{text-align:center;padding:2rem;color:var(--text-secondary)}.position-item{margin-bottom:1rem;padding:.75rem;background:var(--bg-secondary);border-radius:6px;border-left:3px solid var(--accent-color)}.position-title{font-size:.9rem;font-weight:600;color:var(--text-primary);margin-bottom:.5rem}.position-dates{font-size:.8125rem;color:var(--text-secondary)}.year-filter-section{margin-bottom:1rem}.year-filter-container{position:relative}.year-input-wrapper{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);cursor:pointer;min-height:38px}.year-pills-inline{display:contents}.year-pill{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:var(--accent-color);color:var(--bg-primary);border-radius:12px;font-size:.875rem;font-weight:500}.year-pill .pill-remove{background:none;border:none;color:var(--bg-primary);cursor:pointer;font-size:1.25rem;line-height:1;padding:0;margin-left:.25rem}.year-pill .pill-remove:hover{color:var(--text-primary)}#year-search{flex:1;min-width:120px;border:none;background:transparent;outline:none;color:var(--text-primary);font-size:.875rem;cursor:pointer}#year-search::placeholder{color:var(--text-tertiary)}.year-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;max-height:200px;overflow-y:auto;z-index:1000;box-shadow:0 4px 6px #0000001a}.year-option{padding:.5rem .75rem;cursor:pointer;transition:background .2s}.year-option:hover{background:var(--button-hover)}.year-option.selected{background:var(--accent-color);color:var(--bg-primary);font-weight:600}.year-option-special{font-weight:600;color:var(--accent-color)}.year-option-clear{color:#f44336}.year-dropdown-divider{height:1px;background:var(--border-color);margin:.5rem 0}.officeholders-list{display:flex;flex-direction:column;gap:.5rem}.officeholder-item{padding:.5rem;border-radius:4px;background:var(--bg-secondary);transition:background .2s}.officeholder-item:hover{background:var(--button-hover)}.officeholder-name{font-weight:500;cursor:pointer;color:var(--accent-color);text-decoration:underline}.officeholder-name:hover{color:var(--node-color)}.officeholder-dates{color:var(--text-tertiary);margin-left:8px;font-size:.875rem}.year-marker{font-weight:700;font-size:.9rem;color:var(--accent-color);padding:.75rem 0 .5rem;margin-top:.5rem;border-top:1px solid var(--border-color)}.year-marker:first-child{margin-top:0;border-top:none;padding-top:0}#wiki-iframe{width:100%;height:100%;border:none;background:var(--bg-primary)}body.dark-mode #wiki-iframe{background:#363636;filter:invert(.85) hue-rotate(180deg) saturate(1.1) brightness(1.05) contrast(.9)}.settings-sidebar{position:fixed;top:0;right:-400px;width:400px;height:100vh;background:var(--bg-primary);border-left:1px solid var(--border-color);box-shadow:-2px 0 10px var(--shadow);z-index:3000;transition:right .3s ease-in-out,background-color .3s,border-color .3s;display:flex;flex-direction:column}.settings-sidebar.open{right:0}.settings-sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--border-color);background:var(--bg-secondary);transition:background-color .3s,border-color .3s}.settings-sidebar-header h3{margin:0;font-size:1.1rem;color:var(--text-primary)}.settings-sidebar-close{background:none;border:none;font-size:2rem;color:var(--text-secondary);cursor:pointer;line-height:1;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s,color .3s}.settings-sidebar-close:hover{background:var(--button-hover)}.settings-sidebar-content{flex:1;overflow-y:auto;padding:1.5rem}.settings-section{margin-bottom:2rem}.settings-section h4{font-size:.9rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);margin-bottom:1rem}.theme-options{display:flex;flex-direction:column;gap:.75rem}.theme-option{display:flex;align-items:center;padding:.75rem;border:2px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .2s}.theme-option:hover{border-color:var(--accent-color);background:var(--bg-secondary)}.theme-option input[type=radio]{margin-right:.75rem;cursor:pointer;accent-color:var(--accent-color)}.theme-label{font-size:.95rem;color:var(--text-primary);display:flex;align-items:center;gap:.5rem}.theme-option input[type=radio]:checked+.theme-label{font-weight:600;color:var(--accent-color)}@media(max-width:768px){header h1{font-size:1.5rem}#controls{padding:1rem}#search-container{min-width:100%}.node text{font-size:10px}}.graph-controls{position:absolute;top:16px;left:16px;display:flex;flex-direction:column;gap:4px;z-index:100}.graph-control-btn{width:36px;height:36px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;padding:0}.graph-control-btn:hover{background:var(--bg-primary);color:var(--accent-color);border-color:var(--accent-color)}.graph-control-btn:active{transform:scale(.95)}.graph-control-btn svg{width:18px;height:18px;stroke-width:2}.graph-control-btn.active{background:var(--accent-color);color:#fff;border-color:var(--accent-color)}.minimap-container{position:absolute;bottom:16px;right:16px;width:180px;height:120px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 2px 8px var(--shadow);overflow:hidden;opacity:.85;transition:opacity .2s;z-index:100}.minimap-container:hover{opacity:1}.minimap{width:100%;height:100%;cursor:pointer}.minimap-bg{fill:var(--bg-secondary)}.minimap-viewport{stroke:var(--accent-color);stroke-width:2;fill:#667eea1a;cursor:move}.minimap-node{pointer-events:none}.minimap-link{stroke:var(--link-color);stroke-width:.5;stroke-opacity:.3;pointer-events:none}body.dark-mode .minimap-bg{fill:#2a2a2a}body.dark-mode .minimap-viewport{fill:#8c9dff26}.breadcrumb-trail{display:flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);font-size:.8rem;overflow-x:auto;white-space:nowrap}.breadcrumb-trail:empty{display:none}.breadcrumb-item{color:var(--text-secondary);cursor:pointer;padding:.2rem .5rem;border-radius:4px;transition:all .15s}.breadcrumb-item:hover{color:var(--accent-color);background:var(--bg-primary)}.breadcrumb-item.current{color:var(--text-primary);font-weight:600;cursor:default}.breadcrumb-item.current:hover{background:transparent}.breadcrumb-separator{color:var(--text-tertiary);font-size:.7rem}.graph-controls:empty,.minimap-container:empty{display:none}.toast-container{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:12px 20px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 24px var(--shadow-strong);font-size:.875rem;color:var(--text-primary);animation:toast-in .3s var(--ease-out);pointer-events:auto}.toast.success{border-left:4px solid var(--success-color)}.toast.error{border-left:4px solid var(--error-text)}.toast.info{border-left:4px solid var(--accent-color)}.toast-icon{width:20px;height:20px;flex-shrink:0}.toast.success .toast-icon{color:var(--success-color)}.toast.error .toast-icon{color:var(--error-text)}.toast.info .toast-icon{color:var(--accent-color)}.toast.leaving{animation:toast-out .2s var(--ease-out) forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-out{to{opacity:0;transform:translateY(-10px) scale(.95)}}
