*{box-sizing:border-box;margin:0;padding:0}:root{--color-app-bg:#f7f8fb;--color-surface:#fff;--color-surface-alt:#f0f2f7;--color-border:#d8dde5;--color-border-strong:#c1c7d0;--color-text-primary:#1c1f26;--color-text-secondary:#4c5568;--color-text-muted:#70798c;--color-accent:#1f77b4;--color-accent-strong:#1558a0;--color-button-bg:#fff;--color-button-border:#d8dde5;--color-button-hover:#eef1f7;--color-button-icon:#5a6375;--color-highlight:#e4ecff;--color-highlight-border:#b6ccff;--color-tooltip-bg:#0f1115eb;--color-tooltip-border:#ffffff1a;--color-tooltip-text:#f7f9ff;--color-tooltip-label:#f7f9ffb8;--color-tooltip-divider:#ffffff1f;--color-scrollbar-track:#0000000d;--color-scrollbar-thumb:#78829666;--color-shadow-elevated:0 8px 24px #0f172a1f;--color-shadow-float:0 6px 18px #0f172a29;--color-slider-track:#d0d5df;--color-slider-thumb:#1f77b4}:root[data-theme=dark]{--color-app-bg:#0f1117;--color-surface:#171a23;--color-surface-alt:#1f232e;--color-border:#2a2f3a;--color-border-strong:#3a4251;--color-text-primary:#f1f4f9;--color-text-secondary:#c5c9d3;--color-text-muted:#969eb2;--color-accent:#4fa3ff;--color-accent-strong:#82c0ff;--color-button-bg:#1f232e;--color-button-border:#303643;--color-button-hover:#262c38;--color-button-icon:#c5c9d3;--color-highlight:#4fa3ff33;--color-highlight-border:#4fa3ff73;--color-tooltip-bg:#10131af0;--color-tooltip-border:#ffffff14;--color-tooltip-text:#eef3ff;--color-tooltip-label:#e8eeffb3;--color-tooltip-divider:#ffffff24;--color-scrollbar-track:#ffffff0a;--color-scrollbar-thumb:#8899b259;--color-shadow-elevated:0 10px 28px #050b147a;--color-shadow-float:0 14px 32px #050b148f;--color-slider-track:#3a4251;--color-slider-thumb:#4fa3ff}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f7f8fb;background:var(--color-app-bg);color:#1c1f26;color:var(--color-text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;overflow:hidden;transition:background .25s ease,color .25s ease}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.network-graph{display:block;height:100%;width:100%}.link{stroke:var(--color-border-strong);stroke-opacity:.35;transition:opacity .3s ease}.node{stroke:var(--color-text-primary);stroke-width:1.5px;cursor:pointer;transition:opacity .3s}.node.cluster{stroke-width:.5px}.node:hover{stroke-width:2.5px}.node-group{cursor:pointer;transition:opacity .3s ease}.pie-slice{transition:opacity .2s}.node-group:hover .pie-slice{opacity:.85}.image-annotation-d3{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;box-shadow:var(--color-shadow-elevated);box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;max-height:600px;max-width:400px;overflow:hidden;width:400px}.image-annotation-d3.collapsed .annotation-body{display:none}.image-annotation-d3 .annotation-header{align-items:center;background:var(--color-surface-alt);border-bottom:2px solid var(--color-border);border-radius:10px 10px 0 0;box-shadow:inset 0 -1px 0 #0000000a;display:flex;flex-shrink:0;justify-content:space-between;padding:10px 14px}.image-annotation-d3 .annotation-title{align-items:center;display:flex;flex-wrap:wrap;gap:6px}.image-annotation-d3 .feature-id{color:var(--color-text-primary);font-size:14px;font-weight:600}.image-annotation-d3 .feature-emotion{background:var(--color-highlight);border-radius:4px;color:var(--color-text-secondary);font-size:12px;padding:2px 6px}.image-annotation-d3 .annotation-actions{display:flex;gap:4px}.image-annotation-d3 .close-button,.image-annotation-d3 .toggle-button{align-items:center;background:none;border:none;border-radius:4px;color:var(--color-text-muted);cursor:pointer;display:flex;font-size:20px;height:24px;justify-content:center;padding:0;transition:background .2s ease,color .2s ease;width:24px}.image-annotation-d3 .close-button:hover,.image-annotation-d3 .toggle-button:hover{background:var(--color-button-hover);color:var(--color-text-primary)}.image-annotation-d3 .annotation-body{background:var(--color-surface);box-sizing:border-box;max-height:540px;overflow-x:hidden;overflow-y:auto;padding:12px;width:100%}.image-annotation-d3 .error-state,.image-annotation-d3 .loading-state{align-items:center;color:var(--color-text-secondary);display:flex;flex-direction:column;justify-content:center;padding:40px 20px;text-align:center}.image-annotation-d3 .spinner{animation:spin .8s linear infinite;border:3px solid #ffffff1a;border-radius:50%;border-top:3px solid var(--color-accent);height:32px;margin-bottom:12px;width:32px}.image-annotation-d3 .image-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(3,1fr);max-width:376px;width:100%}.image-annotation-d3 .image-item{background:var(--color-surface-alt);border-radius:6px;overflow:hidden}.image-annotation-d3 .image-item img{background:var(--color-surface-alt);display:block;height:100px;object-fit:cover;width:100%}.image-annotation-d3 .image-item:hover img{opacity:.9}.image-annotation-d3 .image-info .score{color:var(--color-accent);font-size:11px;font-weight:600}.voronoi-layer path{transition:opacity .2s ease,stroke-width .2s ease,stroke .2s ease,stroke-opacity .2s ease}.image-annotation{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;box-shadow:var(--color-shadow-elevated);display:flex;flex-direction:column;left:0;max-height:600px;position:fixed;top:0;width:400px;will-change:transform;z-index:1000}.image-annotation.collapsed{flex-direction:column;max-height:140px;width:120px}.image-annotation.collapsed .annotation-header{border-radius:8px 8px 0 0;font-size:11px;padding:8px}.image-annotation.collapsed .annotation-title{display:none}.image-annotation.collapsed .annotation-body{align-items:center;display:flex;justify-content:center;overflow:hidden;padding:0}.image-annotation.collapsed .image-grid{display:block}.image-annotation.collapsed .image-item{border-radius:0 0 8px 8px}.image-annotation.collapsed .image-item:not(:first-child){display:none}.image-annotation.collapsed .image-item img{height:100px;width:100%}.image-annotation.collapsed .image-info{display:none}.image-annotation.collapsed .empty-state,.image-annotation.collapsed .error-state,.image-annotation.collapsed .loading-state{font-size:10px;padding:20px 10px}.annotation-header{align-items:center;background:var(--color-surface-alt);border-bottom:1px solid var(--color-border);border-radius:10px 10px 0 0;cursor:move;display:flex;justify-content:space-between;padding:12px 16px}.annotation-title{display:flex;flex:1 1;flex-direction:column;gap:4px}.feature-id{color:var(--color-text-primary);font-size:14px;font-weight:600}.feature-emotion{color:var(--color-text-secondary);font-size:12px}.annotation-actions{display:flex;gap:4px}.close-button,.toggle-button{align-items:center;background:none;border:none;border-radius:4px;color:var(--color-text-muted);cursor:pointer;display:flex;font-size:20px;height:24px;justify-content:center;padding:0;transition:all .2s;width:24px}.close-button:hover,.toggle-button:hover{background:var(--color-button-hover);color:var(--color-text-primary)}.annotation-body{background:var(--color-surface);flex:1 1;overflow-y:auto;padding:12px}.empty-state,.error-state,.loading-state{align-items:center;color:var(--color-text-secondary);display:flex;flex-direction:column;justify-content:center;padding:40px 20px;text-align:center}.empty-state p,.error-state p,.loading-state p{color:var(--color-text-secondary);font-size:13px;margin:0}.spinner{animation:spin .8s linear infinite;border:3px solid #ffffff1a;border-radius:50%;border-top:3px solid var(--color-accent);height:32px;margin-bottom:12px;width:32px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.error-state button{background:var(--color-accent);border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:12px;margin-top:12px;padding:6px 12px}.error-state button:hover{background:var(--color-accent-strong)}.image-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(3,1fr)}.image-item{background:var(--color-surface-alt);border-radius:6px;cursor:pointer;overflow:hidden;transition:transform .2s}.image-item:hover{transform:scale(1.05)}.image-item img{display:block;height:100px;object-fit:cover;width:100%}.image-info{padding:4px 6px;text-align:center}.image-info .score{color:var(--color-accent);font-size:11px;font-weight:600}.annotation-header:active{cursor:grabbing}.settings-button{align-items:center;background:var(--color-button-bg);border:2px solid var(--color-button-border);border-radius:50%;box-shadow:var(--color-shadow-float);color:var(--color-button-icon);cursor:pointer;display:flex;font-size:24px;height:48px;justify-content:center;position:fixed;right:20px;top:20px;transition:transform .2s ease,background .2s ease,color .2s ease,box-shadow .2s ease;width:48px;z-index:1000}.settings-button:hover{background:var(--color-button-hover);color:var(--color-text-primary);transform:rotate(45deg)}.settings-button:hover,.settings-panel{box-shadow:var(--color-shadow-elevated)}.settings-panel{animation:slideIn .2s ease;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;max-height:80vh;min-width:250px;overflow-y:auto;padding:20px;position:fixed;right:20px;top:80px;z-index:1000}.settings-header{align-items:center;border-bottom:2px solid var(--color-border);display:flex;justify-content:space-between;margin-bottom:15px;padding-bottom:12px}.settings-header h3{color:var(--color-text-primary);font-size:16px;margin:0}.close-btn{align-items:center;background:none;border:none;border-radius:6px;color:var(--color-text-muted);cursor:pointer;display:flex;font-size:24px;height:28px;justify-content:center;padding:0;transition:background .2s ease,color .2s ease;width:28px}.close-btn:hover{background:var(--color-button-hover);color:var(--color-text-primary)}.settings-content{display:flex;flex-direction:column;gap:12px}.settings-description{color:var(--color-text-secondary);font-size:13px;margin-bottom:10px}.section-title{border-bottom:1px solid var(--color-border);color:var(--color-text-primary);font-size:14px;font-weight:600;margin:15px 0 10px;padding-bottom:5px}.subsection-title{color:var(--color-text-secondary);font-size:13px;font-weight:600;margin:12px 0 8px}.checkbox-section{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}.checkbox-item{align-items:center;border-radius:6px;cursor:pointer;display:flex;gap:8px;padding:5px 0;transition:background .15s ease;-webkit-user-select:none;user-select:none}.checkbox-item:hover{background:var(--color-button-hover)}.checkbox-item input[type=checkbox]{cursor:pointer;height:18px;width:18px}.checkbox-item span{color:var(--color-text-primary);font-size:14px;font-weight:500}.slider-item{background:var(--color-surface-alt);border-radius:8px;margin:5px 0;padding:10px}.slider-item label{cursor:default;display:flex;flex-direction:column;gap:8px}.slider-item span{color:var(--color-text-secondary);font-size:13px;font-weight:500}.slider-item input[type=range]{-webkit-appearance:none;appearance:none;background:var(--color-slider-track);border-radius:3px;cursor:pointer;height:6px;outline:none}.slider-item input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:var(--color-slider-thumb);border:none;border-radius:50%;cursor:pointer;height:16px;-webkit-transition:background .15s ease;transition:background .15s ease;width:16px}.slider-item input[type=range]::-webkit-slider-thumb:hover{background:var(--color-accent-strong)}.slider-item input[type=range]::-moz-range-thumb{background:var(--color-slider-thumb);border:none;border-radius:50%;cursor:pointer;height:16px;-moz-transition:background .15s ease;transition:background .15s ease;width:16px}.slider-item input[type=range]::-moz-range-thumb:hover{background:var(--color-accent-strong)}.theme-options{display:flex;gap:8px;margin-top:8px}.radio-item{align-items:center;background:var(--color-surface-alt);border:1px solid #0000;border-radius:8px;cursor:pointer;display:flex;gap:6px;padding:8px 12px;transition:border .2s ease,background .2s ease,color .2s ease}.radio-item input[type=radio]{accent-color:var(--color-accent);cursor:pointer}.radio-item span{color:var(--color-text-secondary);font-size:13px;font-weight:500}.radio-item:hover{background:var(--color-button-hover)}.radio-item.active{background:var(--color-highlight);border-color:var(--color-highlight-border)}.radio-item.active span{color:var(--color-text-primary)}.help-button{align-items:center;background:#fff;border:2px solid #ddd;border-radius:50%;box-shadow:0 2px 8px #00000026;color:#666;cursor:pointer;display:flex;font-size:28px;font-weight:700;height:48px;justify-content:center;position:fixed;right:80px;top:20px;transition:all .2s ease;width:48px;z-index:1000}.help-button:hover{background:#f5f5f5;box-shadow:0 4px 12px #0003;color:#333;transform:scale(1.05)}.help-panel{animation:slideUp .2s ease;background:#fff;border:1px solid #ccc;border-radius:8px;box-shadow:0 2px 10px #0000001a;max-height:70vh;max-width:450px;min-width:320px;overflow-y:auto;padding:20px;position:fixed;right:80px;top:80px;z-index:1000}@keyframes slideUp{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.help-header{align-items:center;border-bottom:2px solid #eee;display:flex;justify-content:space-between;margin-bottom:15px;padding-bottom:12px}.help-header h3{color:#333;font-size:18px;font-weight:600;margin:0}.help-panel .close-btn{align-items:center;background:none;border:none;border-radius:4px;color:#999;cursor:pointer;display:flex;font-size:24px;height:28px;justify-content:center;padding:0;width:28px}.help-panel .close-btn:hover{background:#f0f0f0;color:#333}.help-content{color:#444;font-size:14px;line-height:1.6}.help-content p{margin:0 0 12px}.help-content p:last-child{margin-bottom:0}.help-content a{color:#06c;font-weight:500;text-decoration:none}.help-content a:hover{text-decoration:underline}.legend-toggle-bottom{align-items:center;background:var(--color-button-bg);border:2px solid var(--color-button-border);border-radius:10px;box-shadow:var(--color-shadow-float);color:var(--color-button-icon);cursor:pointer;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;font-weight:500;justify-content:center;left:20px;padding:10px 16px;position:fixed;top:20px;transition:all .2s ease;z-index:1000}.legend-toggle-bottom:hover{background:var(--color-button-hover);box-shadow:var(--color-shadow-elevated);color:var(--color-text-primary);transform:translateY(-1px)}.toggle-text{-webkit-user-select:none;user-select:none}.legend-panel{animation:slideIn .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;box-shadow:var(--color-shadow-elevated);left:20px;max-height:calc(100vh - 90px);max-width:360px;padding:0;position:fixed;top:70px;z-index:999}.legend-scroll{display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 130px);overflow-y:auto;padding:20px}@keyframes slideIn{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.legend-title{border-bottom:2px solid var(--color-border);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;margin:0 0 16px;padding-bottom:12px}.legend-section-title,.legend-title{color:var(--color-text-primary);font-weight:600}.legend-section-title{font-size:13px;letter-spacing:.5px;margin:12px 0 8px;text-transform:uppercase}.legend-section-title:first-child{margin-top:0}.legend-items{gap:6px}.legend-grid,.legend-items{display:flex;flex-direction:column}.legend-grid{gap:8px;max-height:none;overflow-y:visible;padding:0}.legend-item{align-items:center;border:1px solid #0000;border-radius:8px;color:var(--color-text-primary);cursor:pointer;display:flex;font-size:13px;gap:10px;padding:8px 10px;transition:background .15s ease,box-shadow .15s ease,border .15s ease}.legend-item:hover{background:var(--color-button-hover)}.legend-item.selected{background:var(--color-highlight);box-shadow:inset 0 0 0 1px var(--color-highlight-border)}.legend-checkbox{-webkit-appearance:none;appearance:none;background:#0000;background:var(--legend-checkbox-bg,#0000);border:2px solid var(--legend-item-color,var(--color-border));border-radius:4px;cursor:pointer;display:grid;flex-shrink:0;height:18px;margin:0;place-items:center;transition:background .15s ease,border-color .15s ease;width:18px}.legend-checkbox:after{background:#fff;border-radius:2px;content:"";height:8px;transform:scale(0);transition:transform .1s ease;width:8px}.legend-checkbox:checked{background:#888;background:var(--legend-item-color,#888)}.legend-checkbox:checked:after{transform:scale(1)}.legend-label{color:var(--color-text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:500}.legend-grid::-webkit-scrollbar{width:6px}.legend-grid::-webkit-scrollbar-track{background:var(--color-scrollbar-track);border-radius:3px}.legend-grid::-webkit-scrollbar-thumb{background:var(--color-scrollbar-thumb);border-radius:3px}.legend-grid::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}@media (max-width:768px){.legend-toggle-bottom{font-size:11px;left:16px;padding:8px 12px;top:16px}.legend-panel{left:16px;max-width:90vw;top:60px}}.tooltip{background:var(--color-tooltip-bg);border:1px solid var(--color-tooltip-border);border-radius:10px;box-shadow:var(--color-shadow-elevated);color:var(--color-tooltip-text);font-size:13px;max-width:280px;padding:12px;pointer-events:none;position:absolute;transition:opacity .2s;z-index:1000}.tooltip-header{border-bottom:1px solid var(--color-tooltip-divider);margin-bottom:8px;padding-bottom:6px}.tooltip-header strong{font-size:14px}.tooltip-body{display:flex;flex-direction:column;gap:4px}.tooltip-row{display:flex;gap:12px;justify-content:space-between}.tooltip-row.small{font-size:12px;padding-left:8px}.tooltip-row .label{color:var(--color-tooltip-label)}.tooltip-row .value{font-weight:500}.tooltip-section{border-top:1px solid var(--color-tooltip-divider);margin-top:8px;padding-top:8px}.tooltip-section strong{display:block;font-size:12px;margin-bottom:4px}.App{background:var(--color-app-bg);height:100vh;overflow:hidden;position:relative;width:100vw}
/*# sourceMappingURL=main.61eb371e.css.map*/