*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;font-size:14px;line-height:1.5;background-color:var(--bg-canvas);color:var(--text-primary);transition:background-color .2s ease,color .2s ease}#app{position:relative;height:100vh;width:100vw;overflow:hidden}.loading-overlay{position:absolute;inset:0;background-color:var(--bg-overlay);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:var(--z-overlay)}.loading-overlay.hidden{display:none}.loading-spinner{width:48px;height:48px;border:3px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;animation:spin .8s cubic-bezier(.5,.15,.5,.85) infinite}.animate-in{animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.pulse{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.loading-text{margin-top:16px;color:var(--text-secondary)}.empty-message{color:var(--text-muted);font-size:13px;text-align:center;padding:24px 16px}button{cursor:pointer;border:none;background:none;font-family:inherit;font-size:inherit;color:inherit}button:disabled{cursor:not-allowed;opacity:.5}input,select{font-family:inherit}a{color:var(--accent-color);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.hidden{display:none!important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-xs{gap:var(--spacing-xs)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.text-accent{color:var(--accent-color)}.text-sm{font-size:12px}.text-xs{font-size:11px}.font-medium{font-weight:500}.font-semibold{font-weight:600}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}button,.icon-btn,.category-btn{user-select:none}svg{display:inline-block;vertical-align:middle}img{max-width:100%;height:auto}.text-success{color:var(--success-color)}.text-warning{color:var(--warning-color)}.text-error{color:var(--error-color)}.bg-success{background-color:var(--success-color)}.bg-warning{background-color:var(--warning-color)}.bg-error{background-color:var(--error-color)}:root{--bg-primary: #ffffff;--bg-secondary: #f5f5f5;--bg-tertiary: #e8e8e8;--bg-canvas: #e0e0e0;--bg-overlay: rgba(255, 255, 255, .9);--bg-hover: rgba(0, 0, 0, .05);--bg-active: rgba(0, 0, 0, .08);--text-primary: #1a1a1a;--text-secondary: #4a4a4a;--text-muted: #8a8a8a;--border-color: #d0d0d0;--border-light: #e5e5e5;--accent-color: #2563eb;--accent-hover: #1d4ed8;--accent-light: rgba(37, 99, 235, .1);--success-color: #16a34a;--warning-color: #ca8a04;--error-color: #dc2626;--selection-color: #3b82f6;--selection-bg: rgba(59, 130, 246, .15);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--transition-fast: .1s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--z-panel: 10;--z-toolbar: 20;--z-floating: 50;--z-overlay: 100;--z-toast: 200;--z-modal: 300;--panel-gap: 12px;--panel-padding: 8px}[data-theme=dark]{--background: #242136;--canvas-background: #0e0721;--panel-color: #3c384c;--tablerow-color: #545163;--divider-color: #545163;--bg-primary: #3c384c;--bg-secondary: #2d2a3c;--bg-tertiary: #242136;--bg-canvas: #0e0721;--bg-overlay: rgba(36, 33, 54, .95);--bg-hover: rgba(255, 255, 255, .08);--bg-active: rgba(255, 255, 255, .12);--text-color: #ffffff;--text-primary: #ffffff;--text-secondary: #b8b5c4;--text-muted: #7a7789;--border-color: #545163;--border-light: #3c384c;--accent: #f89335;--accent2: #fb9e4c;--accent3: #ffb679;--accent-color: #f89335;--accent-hover: #fb9e4c;--accent-light: rgba(248, 147, 53, .15);--accent-text-color: #ffffff;--selection-color: #f89335;--selection-bg: rgba(248, 147, 53, .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 8px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 20px rgba(0, 0, 0, .5);--shadow-panel: 0 4px 16px rgba(0, 0, 0, .3)}[data-theme=light] .icon-moon,:root:not([data-theme]) .icon-moon{display:none}[data-theme=light] .icon-sun,:root:not([data-theme]) .icon-sun{display:block}[data-theme=dark] .icon-sun{display:none}[data-theme=dark] .icon-moon{display:block}html{color-scheme:dark}.viewer-container-fullscreen{position:fixed;inset:0;background-color:var(--bg-canvas);z-index:0}.viewer-container-fullscreen #viewer-canvas{display:block;width:100%;height:100%}.viewer-container-fullscreen .loading-overlay{position:absolute;inset:0;background-color:var(--bg-overlay);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:var(--z-overlay)}#ui-overlays{position:fixed;inset:0;pointer-events:none;z-index:var(--z-floating)}#ui-overlays>*{pointer-events:auto}#ui-overlays>.ui-top-row{position:absolute;top:var(--panel-gap);left:var(--panel-gap);right:var(--panel-gap);display:flex;justify-content:space-between;align-items:flex-start;gap:var(--panel-gap);pointer-events:none}.ui-top-row>*{pointer-events:none}.ui-top-row .floating-panel{min-height:46px;box-sizing:border-box;pointer-events:auto}.ui-top-left{display:flex;flex-direction:column;gap:var(--spacing-sm)}#project-panel.clash-expanded{position:fixed;top:var(--panel-gap);left:var(--panel-gap);bottom:var(--panel-gap);z-index:var(--z-floating)}body.data-manager-open #project-panel.clash-expanded{bottom:calc(45vh + 2 * var(--panel-gap))}#project-panel.files-expanded{max-height:calc(100vh - 2 * var(--panel-gap))}body.data-manager-open #project-panel.files-expanded{max-height:calc(55vh - 2 * var(--panel-gap))}.ui-top-center{position:absolute;left:50%;transform:translate(-50%);display:flex;gap:var(--spacing-sm);align-items:stretch}.ui-top-center>.floating-panel{display:flex;align-items:center}.ui-top-right{display:flex;flex-direction:column;align-items:flex-end;gap:var(--spacing-sm)}#property-panel{position:fixed;top:var(--panel-gap);right:var(--panel-gap);bottom:var(--panel-gap);width:360px;max-width:calc(100vw - 2 * var(--panel-gap));transform:translate(calc(100% + var(--panel-gap)));transition:transform .35s cubic-bezier(.4,0,.2,1);z-index:var(--z-floating);opacity:0}#property-panel.open{transform:translate(0);opacity:1}#property-panel.open~.viewcube-container,.property-panel-open .viewcube-container{right:calc(360px + 2 * var(--panel-gap))}.toast-container{position:fixed;bottom:var(--spacing-lg);left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:var(--z-toast);pointer-events:none}.toast-container>*{pointer-events:auto}@media (max-width: 1200px){#property-panel{width:320px}#project-panel.clash-expanded{width:320px;max-width:320px}}@media (max-width: 768px){#ui-overlays{--panel-gap: 8px}.ui-top-center{flex-direction:column;align-items:center}#property-panel{width:calc(100vw - 2 * var(--panel-gap))}#project-panel.clash-expanded{width:calc(100vw - 2 * var(--panel-gap));max-width:calc(100vw - 2 * var(--panel-gap))}body.data-manager-open #project-panel.clash-expanded{bottom:calc(50vh + 2 * var(--panel-gap))}body.data-manager-open #project-panel.files-expanded{max-height:calc(50vh - 2 * var(--panel-gap))}}.viewer-container-fullscreen.drag-over:after{content:"";position:absolute;inset:0;background-color:#f893351a;border:3px dashed var(--accent-color);pointer-events:none;z-index:var(--z-overlay)}.floating-panel{background-color:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);overflow:hidden;animation:panelFadeIn .3s ease-out;user-select:none}@keyframes panelFadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.floating-panel-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--panel-padding);background-color:var(--bg-primary);border-bottom:1px solid var(--border-light)}.floating-panel-content{padding:var(--panel-padding)}.icon-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--radius-md);background-color:transparent;color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);border:none;padding:0}.icon-btn:hover{background-color:var(--bg-hover);color:var(--accent-color)}.icon-btn:active{background-color:var(--bg-active);transform:scale(.95)}.icon-btn.active{background-color:var(--accent-light);color:var(--accent-color)}.icon-btn-sm{width:28px;height:28px}.icon-btn-sm svg{width:16px;height:16px}.icon-btn-accent{background-color:var(--accent-color);color:var(--accent-text-color)}.icon-btn-accent:hover{background-color:var(--accent-hover);color:var(--accent-text-color)}.icon-btn-row{display:flex;gap:var(--spacing-xs);align-items:center}.panel-divider{width:1px;height:20px;background-color:var(--divider-color);margin:0 var(--spacing-xs)}.expandable-section{overflow:hidden;max-height:0;opacity:0;transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .25s ease-out}.expandable-section.expanded{max-height:500px;opacity:1}.icon-btn:after,.category-btn:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background-color:#fff3;border-radius:50%;transform:translate(-50%,-50%);transition:width .3s,height .3s}.icon-btn:active:after,.category-btn:active:after{width:100%;height:100%}.icon-btn,.category-btn{position:relative;overflow:hidden}.dropdown-btn{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:12px;cursor:pointer;transition:all var(--transition-fast)}.dropdown-btn:hover{background-color:var(--bg-hover);border-color:var(--accent-color)}.dropdown-btn svg{width:16px;height:16px;color:var(--text-muted);transition:transform var(--transition-fast)}.dropdown-btn.open .dropdown-chevron{transform:rotate(180deg)}#levels-panel{position:relative;overflow:visible}#levels-panel .dropdown-btn{min-width:120px}#btn-export-floorplan:disabled{opacity:.3;pointer-events:none}.levels-dropdown{position:absolute;top:calc(100% + 4px);left:var(--panel-padding);min-width:160px;max-height:300px;overflow-y:auto;background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);z-index:var(--z-dropdown, 100);opacity:0;visibility:hidden;transform:translateY(-8px);transition:all var(--transition-fast)}.levels-dropdown.open{opacity:1;visibility:visible;transform:translateY(0)}.levels-dropdown-item{display:block;width:100%;padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:none;color:var(--text-primary);font-size:13px;text-align:left;cursor:pointer;transition:all var(--transition-fast)}.levels-dropdown-item:hover{background-color:var(--bg-hover);color:var(--accent-color)}.levels-dropdown-item.active{background-color:var(--accent-light);color:var(--accent-color);font-weight:500}.levels-dropdown-separator{height:1px;background-color:var(--border-color);margin:var(--spacing-xs) 0}.category-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--radius-md);background-color:transparent;border:none;cursor:pointer;transition:all var(--transition-fast);padding:0}.category-btn:hover{background-color:#ffffff1a}.category-btn img,.category-btn svg{width:20px;height:20px;object-fit:contain;filter:brightness(0);opacity:.5;transition:all var(--transition-fast)}.category-btn.active img,.category-btn.active svg{filter:brightness(0) invert(1);opacity:1}.category-btn:hover img,.category-btn:hover svg{opacity:.8}.category-btn.active:hover img,.category-btn.active:hover svg{opacity:1}.toggle-switch{position:relative;width:44px;height:24px;background-color:var(--bg-tertiary);border-radius:var(--radius-full);cursor:pointer;transition:background-color var(--transition-fast)}.toggle-switch.active{background-color:var(--accent-color)}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background-color:var(--text-primary);border-radius:50%;transition:transform var(--transition-fast)}.toggle-switch.active:after{transform:translate(20px)}.search-input{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast)}.search-input:focus-within{border-color:var(--accent-color)}.search-input input{flex:1;background:transparent;border:none;color:var(--text-primary);font-size:12px;outline:none}.search-input input::placeholder{color:var(--text-muted)}.search-input svg{width:16px;height:16px;color:var(--text-muted)}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 var(--spacing-xs);background-color:var(--accent-color);color:var(--accent-text-color);font-size:11px;font-weight:600;border-radius:var(--radius-full)}.up-row{display:flex;align-items:center;gap:10px;padding:var(--panel-padding)}.up-clash-section{display:flex;flex-direction:column;gap:2px;min-width:120px}.up-clash-bar{height:6px;border-radius:3px;background:var(--bg-secondary, #2d2a3c);overflow:hidden}.up-clash-bar-fill{height:100%;border-radius:3px;background:var(--accent-color, #f89335);transition:width .4s ease;min-width:2px}.up-clash-label{font-size:10px;color:var(--text-muted, #7a7789);white-space:nowrap}.up-account-btn{display:flex;flex-direction:column;align-items:flex-end;gap:0;padding:1px 6px;background:transparent;border:none;border-radius:var(--radius-md, 8px);cursor:pointer;transition:background var(--transition-fast, .1s ease)}.up-account-btn:hover{background:var(--bg-hover, rgba(255, 255, 255, .08))}.up-welcome{font-size:9px;color:var(--accent-color, #f89335);font-weight:500;line-height:1}.up-name{font-size:12px;font-weight:600;color:var(--text-primary, #fff);line-height:1.15;white-space:nowrap}.up-avatar-btn{padding:0;background:transparent;border:none;cursor:pointer;border-radius:50%;transition:opacity var(--transition-fast, .1s ease)}.up-avatar-btn:hover{opacity:.85}.avatar{width:26px;height:26px;border-radius:50%;background-color:var(--accent-color);display:flex;align-items:center;justify-content:center;color:var(--accent-text-color);font-size:14px;font-weight:600;overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}.logo-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.logo-icon .logo-image{width:26px;height:26px;object-fit:contain}.editable-text{background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);padding:var(--spacing-xs) var(--spacing-sm);color:var(--text-primary);font-size:14px;font-weight:500;transition:all var(--transition-fast);cursor:text;max-width:150px}.editable-text:hover{background-color:var(--bg-hover)}.editable-text:focus{outline:none;background-color:var(--bg-secondary);border-color:var(--accent-color)}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--bg-tertiary);color:var(--text-primary);font-size:12px;white-space:nowrap;border-radius:var(--radius-sm);opacity:0;pointer-events:none;transition:opacity var(--transition-fast);z-index:var(--z-tooltip, 1000)}[data-tooltip]:hover:after{opacity:1}#project-panel{min-width:280px;max-width:400px;transition:width .35s cubic-bezier(.4,0,.2,1),max-width .35s cubic-bezier(.4,0,.2,1)}#project-panel.clash-expanded{width:360px;max-width:360px;display:flex;flex-direction:column}#project-panel.files-expanded{display:flex;flex-direction:column;overflow:hidden}.project-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--panel-padding)}.project-name{flex:1;min-width:0}.project-name input{width:100%;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);padding:2px var(--spacing-xs);color:var(--text-primary);font-size:13px;font-weight:500;transition:all var(--transition-fast)}.project-name input:hover{background-color:var(--bg-hover)}.project-name input:focus{outline:none;background-color:var(--bg-secondary);border-color:var(--accent-color)}.project-name input.project-name--locked{color:var(--text-secondary);border-color:transparent;background:transparent;cursor:default}.project-name input.project-name--locked:hover,.project-name input.project-name--locked:focus{background:transparent;border-color:transparent}.project-header-toggle{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;background:transparent;border:none;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);border-radius:var(--radius-sm)}.project-header-toggle:hover{color:var(--text-primary);background-color:var(--bg-hover)}.project-header-toggle .toggle-chevron{transition:transform .25s ease}.project-header-toggle.expanded .toggle-chevron{transform:rotate(90deg)}.project-logo{flex-shrink:0;cursor:pointer;transition:opacity var(--transition-fast)}.project-logo:hover{opacity:.8}.project-buttons-wrapper{max-height:0;opacity:0;overflow:hidden;transition:max-height .3s cubic-bezier(.4,0,.2,1),opacity .2s ease}.project-buttons-wrapper.expanded{max-height:50px;opacity:1}.project-buttons{display:flex;gap:var(--spacing-xs);padding:0 var(--panel-padding) var(--panel-padding);align-items:center}.project-buttons-divider{width:1px;height:20px;background:var(--border-light);margin:0 2px}.project-subpanel{border-top:1px solid var(--border-light);max-height:0;opacity:0;overflow:hidden;transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .25s ease-out,border-color .2s ease}.project-subpanel.expanded{max-height:400px;opacity:1}#clash-subpanel.expanded{flex:1;min-height:0;max-height:none;display:flex;flex-direction:column;overflow:hidden}#files-subpanel.expanded{flex:0 1 auto;min-height:0;max-height:none;display:flex;flex-direction:column;overflow:hidden}.subpanel-content{max-height:300px;overflow-y:auto;padding:var(--spacing-sm);scroll-behavior:smooth}#clash-subpanel .subpanel-content,#files-subpanel .subpanel-content{flex:1;max-height:none;min-height:0;overflow-y:auto}.subpanel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--panel-padding);background-color:var(--bg-secondary)}.subpanel-title{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.subpanel-close{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.subpanel-close:hover{background-color:var(--bg-hover);color:var(--text-primary)}.subpanel-actions{display:flex;align-items:center;gap:var(--spacing-xs)}.subpanel-content{max-height:300px;overflow-y:auto;padding:var(--spacing-sm)}.project-file-list{display:flex;flex-direction:column;gap:2px}.project-file-item{display:grid;grid-template-columns:1fr 90px 24px 24px;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background-color .15s ease}.project-file-item:hover{background-color:var(--bg-hover)}.project-file-item:active{background-color:var(--bg-active)}.project-file-item.selected{background-color:var(--selection-bg);box-shadow:inset 3px 0 0 var(--accent-color)}.project-file-name{font-size:12px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.project-file-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);color:var(--text-muted);background:transparent;border:none;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.project-file-btn:hover{background-color:var(--bg-active);color:var(--text-primary)}.project-file-btn.visibility-off{opacity:.5}.project-file-item.coordinate-outlier{background-color:#dc32321f}.project-file-item.coordinate-outlier:hover{background-color:#dc32322e}.project-file-item.coordinate-outlier .project-file-name{color:#d63333}.project-file-warning{margin-right:4px;font-size:13px}.project-file-item.displaced{background-color:#dca0281f}.project-file-item.displaced:hover{background-color:#dca0282e}.project-file-warning.displacement{color:#d4a020}.displacement-warning{margin-top:8px;padding:6px 8px;background-color:#dca0281f;border:1px solid rgba(220,160,40,.3);border-radius:var(--radius-sm)}.displacement-warning-text{font-size:10px;color:#d4a020;margin-bottom:4px}.displacement-warning.applied{background-color:#64a0501a;border-color:#64a0504d}.displacement-warning.applied .displacement-warning-text{color:#7aaa60;margin-bottom:0}.project-file-warning.displacement.applied{color:#7aaa60}.displacement-correction{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--text-primary)}.displacement-correction strong{font-family:monospace}.displacement-apply-btn{margin-left:auto;padding:2px 10px;font-size:10px;background-color:#dca02840;border:1px solid rgba(220,160,40,.5);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast)}.displacement-apply-btn:hover{background-color:#dca02866}.displacement-dismiss-btn{padding:2px 10px;font-size:10px;background:none;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.displacement-dismiss-btn:hover{background-color:#ffffff14;border-color:#ffffff40}.displacement-undo-btn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:6px;padding:0;font-size:14px;line-height:1;background:none;border:1px solid rgba(100,160,80,.4);border-radius:50%;color:#7aaa60;cursor:pointer;transition:all var(--transition-fast);vertical-align:middle}.displacement-undo-btn:hover{background-color:#64a05033;border-color:#64a05099}.project-file-item.manually-moved{background-color:#64a0dc1a}.project-file-item.manually-moved:hover{background-color:#64a0dc29}.project-file-warning.moved{color:#6098d0}.moved-notice{margin-top:8px;display:flex;align-items:center;justify-content:space-between;padding:5px 8px;background-color:#64a0dc1a;border:1px solid rgba(100,160,220,.25);border-radius:var(--radius-sm)}.moved-notice-text{font-size:10px;color:#6098d0}.moved-reset-btn{padding:2px 10px;font-size:10px;background-color:#64a0dc33;border:1px solid rgba(100,160,220,.4);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast)}.moved-reset-btn:hover{background-color:#64a0dc59}.reset-confirm-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000}.reset-confirm-dialog{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:20px;max-width:340px;width:90%;box-shadow:0 8px 32px #0000004d}.reset-confirm-title{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:10px}.reset-confirm-message{font-size:12px;color:var(--text-secondary);line-height:1.5;margin-bottom:16px}.reset-confirm-message strong{color:var(--text-primary)}.reset-confirm-actions{display:flex;justify-content:flex-end;gap:8px}.reset-confirm-cancel{padding:5px 14px;font-size:12px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast)}.reset-confirm-cancel:hover{background:var(--bg-hover)}.reset-confirm-ok{padding:5px 14px;font-size:12px;background-color:#dc503c33;border:1px solid rgba(220,80,60,.5);border-radius:var(--radius-sm);color:#e06050;cursor:pointer;transition:all var(--transition-fast)}.reset-confirm-ok:hover{background-color:#dc503c59}.project-file-item.expanded{background-color:var(--bg-hover);border-radius:var(--radius-sm) var(--radius-sm) 0 0;margin-bottom:0}.project-file-details{padding:8px 10px 10px;background-color:var(--bg-secondary);border-radius:0 0 var(--radius-sm) var(--radius-sm);margin-bottom:4px}.project-file-detail-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:11px}.project-file-detail-row:last-child{margin-bottom:0}.project-file-detail-label{color:var(--text-muted);font-size:10px;min-width:28px;flex-shrink:0}.project-file-detail-value{color:var(--text-secondary);font-size:11px}.project-file-detail-input{width:60px;padding:3px 5px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);font-size:11px;text-align:right}.project-file-detail-input:focus{outline:none;border-color:var(--accent-color)}.project-file-detail-unit{color:var(--text-muted);font-size:10px}.project-discipline-select{font-size:10px;padding:2px 4px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;width:100%;min-width:0}.project-discipline-select:hover{border-color:var(--accent-color)}.project-discipline-select:focus{outline:none;border-color:var(--accent-color)}.project-clash-controls{display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm);border-bottom:1px solid var(--border-light)}.project-clash-btn{display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs);flex:1;padding:var(--spacing-sm);border-radius:var(--radius-md);font-size:12px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.project-clash-btn-primary{background-color:var(--accent-color);color:var(--accent-text-color)}.project-clash-btn-primary:hover:not(:disabled){background-color:var(--accent-hover)}.project-clash-btn-primary:disabled{opacity:.5;cursor:not-allowed}.project-clash-btn-secondary{background-color:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color)}.project-clash-btn-secondary:hover{background-color:var(--bg-hover)}.project-clash-progress{padding:var(--spacing-sm)}.project-clash-progress-bar{height:4px;background-color:var(--bg-tertiary);border-radius:2px;overflow:hidden}.project-clash-progress-fill{height:100%;background-color:var(--accent-color);border-radius:2px;transition:width .3s ease}.project-clash-progress-text{margin-top:var(--spacing-xs);font-size:11px;color:var(--text-muted);text-align:center}.project-clash-stats{display:flex;justify-content:center;gap:var(--spacing-lg);padding:var(--spacing-sm)}.project-clash-stat{display:flex;flex-direction:column;align-items:center}.project-clash-stat-value{font-size:20px;font-weight:600;color:var(--accent-color)}.project-clash-stat-label{font-size:10px;color:var(--text-muted);text-transform:uppercase}#clash-stats{flex-shrink:0;display:flex;flex-direction:column;padding:0}.clash-approval-bar{display:flex;align-items:center;gap:8px;padding:6px var(--spacing-sm) 2px}.clash-approval-label{font-size:11px;font-weight:500;color:var(--text-secondary);width:60px;flex-shrink:0}.clash-approval-fill{background-color:#4b6}.clash-filter-bar{display:flex;align-items:center;gap:6px;padding:4px var(--spacing-sm) 6px}.clash-filter-search{flex:1;min-width:0;font-size:11px;padding:3px 6px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary)}.clash-filter-search::placeholder{color:var(--text-muted)}.clash-filter-construction,.clash-filter-mep{font-size:10px;padding:3px 4px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary)}.project-clash-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.project-clash-group{border-radius:var(--radius-md);background-color:var(--bg-secondary);overflow:hidden}.project-clash-group-header{display:flex;align-items:center;padding:var(--spacing-sm);cursor:pointer;transition:background-color var(--transition-fast)}.project-clash-group-header:hover{background-color:var(--bg-hover)}.clash-group-check-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;border-radius:50%;border:2px solid var(--text-muted);background:transparent;color:transparent;cursor:pointer;margin-right:var(--spacing-sm);padding:0;transition:all var(--transition-fast)}.clash-group-check-btn:hover{border-color:var(--text-secondary);color:var(--text-muted)}.clash-group-check-btn.checked{border-color:#4b6;background-color:#4b6;color:#fff}.clash-group-check-btn.checked:hover{border-color:#3aa558;background-color:#3aa558}.clash-group-checked .project-clash-group-header{background-color:#44bb661a}.clash-group-checked .project-clash-group-header:hover{background-color:#44bb6626}.project-clash-group-icon{flex-shrink:0;width:18px;height:18px;margin-right:var(--spacing-sm);color:var(--warning-color)}.project-clash-group-info{flex:1;min-width:0}.project-clash-group-label{font-size:12px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-clash-group-meta{font-size:10px;color:var(--text-muted)}.project-clash-group-expand{width:20px;height:20px;color:var(--text-muted);transition:transform var(--transition-fast)}.project-clash-group.expanded .project-clash-group-expand{transform:rotate(180deg)}.project-clash-group-details{display:none;border-top:1px solid var(--border-light);padding:var(--spacing-xs) var(--spacing-sm)}.project-clash-group.expanded .project-clash-group-details{display:block;max-height:250px;overflow-y:auto}.project-empty-state{padding:var(--spacing-lg);text-align:center;color:var(--text-muted);font-size:13px}.project-drop-zone{padding:var(--spacing-lg);border:2px dashed var(--border-color);border-radius:var(--radius-md);text-align:center;color:var(--text-muted);font-size:13px;cursor:pointer;transition:all var(--transition-fast)}.project-drop-zone:hover{border-color:var(--accent-color);background-color:var(--bg-hover)}.project-drop-zone.drag-over{border-color:var(--accent-color);background-color:var(--accent-light)}.project-drop-zone svg{width:32px;height:32px;margin-bottom:var(--spacing-sm);color:var(--text-muted)}.project-drop-zone span{display:block}.clash-penetration-item{margin-left:8px;border-left:2px solid var(--accent-color);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background-color:#ffffff05}.clash-penetration-item.selected{background-color:var(--selection-bg)}.clash-penetration-header{display:flex;align-items:center;padding:4px 8px;cursor:pointer;gap:8px;transition:background-color var(--transition-fast)}.clash-penetration-header:hover{background-color:var(--bg-hover)}.clash-penetration-icon{flex-shrink:0;width:14px;height:14px;color:var(--accent-color)}.clash-penetration-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.clash-penetration-label{font-size:11px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clash-penetration-meta{font-size:10px;color:var(--text-muted)}.clash-penetration-expand{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:transform var(--transition-fast),background-color var(--transition-fast)}.clash-penetration-expand:hover{background-color:var(--bg-active);color:var(--text-primary)}.clash-penetration-item.expanded .clash-penetration-expand{transform:rotate(180deg)}.clash-penetration-details{display:none;padding-left:16px;padding-bottom:2px}.clash-penetration-item.expanded .clash-penetration-details{display:block}.clash-penetration-clash{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;font-size:11px;cursor:pointer;border-radius:var(--radius-sm);transition:background-color var(--transition-fast)}.clash-penetration-clash:hover{background-color:var(--bg-hover)}.clash-penetration-clash.selected{background-color:var(--selection-bg);box-shadow:inset 2px 0 0 var(--accent-color)}.clash-penetration-clash-label{color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.clash-penetration-clash-volume{color:var(--text-muted);font-size:10px;flex-shrink:0;margin-left:8px}.clash-ungrouped-item.clash-mep-item{margin-left:8px;border-left:2px solid var(--accent-color);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background-color:#ffffff05}.clash-mep-item{display:flex;align-items:center;padding:4px 8px;gap:8px;cursor:pointer;border-radius:var(--radius-sm);transition:background-color var(--transition-fast)}.clash-mep-item:hover{background-color:var(--bg-hover)}.clash-mep-item.selected{background-color:var(--selection-bg);box-shadow:inset 3px 0 0 var(--accent-color)}.clash-mep-icon{flex-shrink:0;width:14px;height:14px;color:var(--warning-color)}.clash-mep-label{flex:1;min-width:0;font-size:11px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clash-mep-volume{flex-shrink:0;font-size:10px;color:var(--text-muted)}.clash-ungroup-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:opacity .15s ease,color .15s ease,background-color .15s ease}.clash-penetration-clash:hover .clash-ungroup-btn{opacity:1}.clash-ungroup-btn:hover{color:#fa4;background-color:#ffaa441a}.clash-dismiss-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:opacity .15s ease,color .15s ease,background-color .15s ease}.clash-mep-item:hover .clash-dismiss-btn{opacity:1}.clash-dismiss-btn:hover{color:#f44;background-color:#ff44441a}.clash-dismissed-inline{opacity:.4}.clash-dismissed-inline .clash-mep-label,.clash-dismissed-inline .clash-penetration-clash-label{text-decoration:line-through}.clash-restore-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:opacity .15s ease,color .15s ease,background-color .15s ease}.clash-mep-item:hover .clash-restore-btn,.clash-penetration-clash:hover .clash-restore-btn{opacity:1}.clash-restore-btn:hover{color:#4b6;background-color:#44bb661a}.clash-group-add-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;border-radius:50%;border:2px solid var(--text-muted);background:transparent;color:var(--text-muted);cursor:pointer;margin-right:var(--spacing-sm);padding:0;transition:all var(--transition-fast)}.clash-group-add-btn:hover{border-color:var(--text-secondary);color:var(--text-primary)}.clash-group-add-btn.active{border-color:var(--accent-color);background-color:var(--accent-color);color:#fff}.clash-manual-prompt{display:flex;align-items:center;gap:var(--spacing-sm);padding:6px 8px;margin-bottom:4px;background-color:#44bb6614;border:1px solid rgba(68,187,102,.2);border-radius:var(--radius-sm);font-size:11px}.clash-manual-prompt-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary)}.clash-manual-prompt-btn{flex-shrink:0;padding:2px 8px;border-radius:var(--radius-sm);border:none;background:#4b6;color:#fff;font-size:10px;font-weight:500;cursor:pointer;transition:background-color var(--transition-fast)}.clash-manual-prompt-btn:hover{background:#3aa558}.overview-section{padding:0 var(--spacing-sm) var(--spacing-sm)}.overview-section+.overview-section{padding-top:var(--spacing-xs);border-top:1px solid var(--border-light)}.overview-section-header{font-size:12px;font-weight:600;color:var(--text-secondary);padding:var(--spacing-sm) 0 var(--spacing-xs)}.overview-row{display:flex;align-items:center;gap:6px;padding:3px 0}.overview-row-label{width:100px;flex-shrink:0;font-size:12px;color:var(--text-primary)}.overview-progress-track{position:relative;flex:1;height:18px;background-color:var(--bg-tertiary);border-radius:3px;overflow:hidden}.overview-progress-fill{height:100%;background-color:var(--accent-color);border-radius:3px;transition:width .3s ease}.overview-bar-count{position:absolute;left:6px;top:0;bottom:0;display:flex;align-items:center;font-size:11px;font-weight:500;color:var(--text-primary);font-variant-numeric:tabular-nums;z-index:1;pointer-events:none}.rating-fire .overview-progress-fill{background-color:#e74c3c}.rating-smoke .overview-progress-fill{background-color:#95a5a6}.rating-acoustic .overview-progress-fill{background-color:#3498db}.rating-none .overview-progress-fill{background-color:var(--text-muted);opacity:.4}.overview-edit-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:opacity .15s ease,color .15s ease,background-color .15s ease}.overview-row:hover .overview-edit-btn{opacity:1}.overview-edit-btn:hover{color:var(--accent-color);background-color:var(--bg-hover)}.overview-edit-popup{max-height:300px;overflow-y:auto;margin:2px 0 6px;padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm)}.overview-popup-group{margin-bottom:var(--spacing-xs)}.overview-popup-group:last-child{margin-bottom:0}.overview-popup-group-header{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:600;color:var(--text-secondary);padding:4px 0 2px;border-bottom:1px solid var(--border-light);margin-bottom:2px}.overview-popup-subgroup{display:flex;align-items:center;gap:8px;padding:3px 0}.overview-popup-subgroup-label{flex:1;min-width:0;font-size:11px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overview-popup-rating{font-size:10px;color:var(--text-muted);font-weight:400}.overview-popup-subgroup-count{flex-shrink:0;font-size:10px;color:var(--text-muted);font-variant-numeric:tabular-nums}.overview-popup-toggle{position:relative;display:inline-block;width:28px;height:16px;flex-shrink:0}.overview-popup-toggle input{opacity:0;width:0;height:0}.overview-popup-toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:var(--bg-tertiary);border-radius:8px;transition:background-color .2s ease}.overview-popup-toggle-slider:before{content:"";position:absolute;height:12px;width:12px;left:2px;bottom:2px;background-color:var(--text-muted);border-radius:50%;transition:transform .2s ease,background-color .2s ease}.overview-popup-toggle input:checked+.overview-popup-toggle-slider{background-color:var(--accent-color)}.overview-popup-toggle input:checked+.overview-popup-toggle-slider:before{transform:translate(12px);background-color:#fff}.overview-rating-add-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;background:transparent;border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:color .15s,border-color .15s}.overview-rating-add-btn:hover{color:var(--accent-color);border-color:var(--accent-color)}.overview-rating-add-btn.has-value{color:#4b6;border-color:#4b6}.overview-rating-add-btn.has-value:hover{color:#3aa558;border-color:#3aa558}.overview-rating-input-panel{padding:6px 8px;margin:2px 0 4px 28px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm)}.rating-input-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.rating-input-row label{font-size:11px;width:55px;flex-shrink:0;color:var(--text-secondary)}.rating-input-row select,.rating-input-row input{flex:1;font-size:11px;padding:2px 4px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary)}.rating-input-actions{display:flex;gap:6px;margin-top:6px;justify-content:flex-end}.rating-save-btn,.rating-cancel-btn{font-size:11px;padding:2px 10px;border:1px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;background:var(--bg-secondary);color:var(--text-primary)}.rating-save-btn:hover{background:var(--accent-color);color:#fff;border-color:var(--accent-color)}.rating-cancel-btn:hover{background:var(--bg-hover)}.rating-save-btn:disabled{opacity:.5;cursor:not-allowed}.overview-loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:var(--spacing-sm) 0;font-size:11px;color:var(--text-muted)}.overview-loading-spinner{width:14px;height:14px;border:2px solid var(--bg-tertiary);border-top-color:var(--accent-color);border-radius:50%;animation:overview-spin .8s linear infinite}@keyframes overview-spin{to{transform:rotate(360deg)}}#property-panel{display:flex;flex-direction:column;background-color:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);overflow:hidden;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.05)}.property-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:6px var(--panel-padding);background-color:var(--bg-primary)}.property-header-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);background-color:transparent;color:var(--text-secondary)}.property-header-info{flex:1;min-width:0}.property-header-type{font-size:14px;font-weight:600;color:var(--text-primary)}.property-header-subtitle{font-size:12px;color:var(--text-muted)}.property-header-close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.property-header-close:hover{background-color:var(--bg-hover);color:var(--text-primary)}.property-subheader{display:flex;flex-direction:column;gap:1px;padding:4px var(--panel-padding);background-color:var(--bg-secondary);font-size:12px;color:var(--text-secondary)}.property-info-row{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.property-info-row:empty{display:none}#property-type-row{color:var(--text-primary);font-weight:500}.property-subtype-row{color:var(--text-secondary);font-size:11px}.property-filename-row{color:var(--text-muted);font-size:11px;opacity:.8}.property-actions{display:flex;gap:var(--spacing-xs);padding:4px var(--panel-padding)}.property-action-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);background-color:var(--bg-secondary);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.property-action-btn:hover{background-color:var(--bg-hover);color:var(--accent-color)}.property-action-btn.active{background-color:var(--accent-light);color:var(--accent-color)}.property-tabs{display:flex;gap:var(--spacing-xs);padding:4px var(--panel-padding);overflow-x:auto}.property-tab{display:flex;align-items:center;gap:var(--spacing-xs);padding:4px var(--spacing-md);border-radius:var(--radius-md);background-color:transparent;color:var(--text-secondary);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;transition:all var(--transition-fast)}.property-tab:hover{background-color:var(--bg-hover);color:var(--text-primary)}.property-tab.active{background-color:var(--accent-light);color:var(--accent-color)}.property-tab .badge{font-size:10px;min-width:16px;height:16px}.property-column-headers{display:flex;padding:0 var(--spacing-sm);border-bottom:1px solid var(--border-light)}.property-column-header{display:flex;align-items:center;gap:4px;padding:4px var(--spacing-md);font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.property-column-name{width:45%;flex-shrink:0}.property-column-value,.property-column-label{flex:1}.property-column-search-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;background:transparent;border:none;padding:0}.property-column-search-btn:hover{color:var(--text-primary);background-color:var(--bg-hover)}.property-column-search-btn.active{color:var(--accent-color)}.property-column-search-input{flex:1;background:transparent;border:none;border-bottom:1px solid var(--accent-color);color:var(--text-primary);font-size:12px;outline:none;padding:2px 4px;min-width:0}.property-column-search-input::placeholder{color:var(--text-muted)}.property-content{flex:1;overflow-y:auto;padding:4px}.property-group{margin-bottom:6px;border-radius:var(--radius-md);overflow:hidden}.property-group-header{display:flex;align-items:center;padding:4px var(--spacing-md);background-color:transparent;cursor:pointer;user-select:none;transition:background-color var(--transition-fast)}.property-group-header:hover{background-color:#ffffff08}.property-group-title{flex:1;font-size:12px;font-weight:600;color:var(--text-secondary)}.property-group-toggle{width:16px;height:16px;color:var(--text-muted);transition:transform .25s cubic-bezier(.4,0,.2,1),color .15s ease}.property-group-header:hover .property-group-toggle{color:var(--accent-color)}.property-group-content{background-color:transparent;max-height:500px;opacity:1;overflow:hidden;transition:max-height .3s cubic-bezier(.4,0,.2,1),opacity .2s ease,padding .2s ease}.property-group.collapsed .property-group-content{max-height:0;opacity:0;padding-top:0;padding-bottom:0}.property-table{display:table;width:100%;border-collapse:collapse}.property-row{display:table-row;transition:background-color .15s ease}.property-row:hover{background-color:#ffffff05}.property-row:hover .property-name{color:var(--text-primary)}.property-row:not(:last-child){border-bottom:none}.property-name,.property-value{display:table-cell;padding:2px var(--spacing-md);font-size:13px;vertical-align:top}.property-name{width:45%;color:var(--text-secondary);word-break:break-word}.property-value{color:var(--text-primary);word-break:break-word}.property-clash-info{display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-md);background-color:var(--bg-secondary);border-radius:var(--radius-md);margin-bottom:var(--spacing-md)}.property-clash-type{display:flex;align-items:center;gap:var(--spacing-sm)}.property-clash-type-icon{width:24px;height:24px;color:var(--error-color)}.property-clash-type-label{font-size:13px;font-weight:500;color:var(--text-primary)}.property-clash-volume{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background-color:var(--bg-tertiary);border-radius:var(--radius-sm)}.property-clash-volume-label{font-size:12px;color:var(--text-muted)}.property-clash-volume-value{font-size:14px;font-weight:600;color:var(--accent-color)}.property-position{display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm);background-color:var(--bg-tertiary);border-radius:var(--radius-sm)}.property-position-coord{display:flex;flex-direction:column;align-items:center;flex:1}.property-position-label{font-size:10px;color:var(--text-muted);text-transform:uppercase}.property-position-value{font-size:12px;font-weight:500;color:var(--text-primary);font-family:monospace}.property-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:var(--spacing-xl);text-align:center;color:var(--text-muted);animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.property-empty svg{width:48px;height:48px;margin-bottom:var(--spacing-md);opacity:.5;animation:gentlePulse 2s ease-in-out infinite}@keyframes gentlePulse{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.05);opacity:.7}}.property-empty-text{font-size:14px}.property-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:var(--spacing-xl)}.property-loading-spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite}.property-loading-text{margin-top:var(--spacing-md);font-size:13px;color:var(--text-muted)}.property-multi-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:var(--spacing-xl);text-align:center}.property-multi-count{font-size:32px;font-weight:600;color:var(--accent-color);margin-bottom:var(--spacing-sm)}.property-multi-text{font-size:14px;color:var(--text-secondary)}.property-content::-webkit-scrollbar{width:6px}.property-content::-webkit-scrollbar-track{background:transparent}.property-content::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.property-content::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.ob-param-editable{cursor:pointer;transition:background-color .15s ease}.ob-param-editable:hover{background-color:var(--bg-hover)}.ob-params-section .property-value,.ob-clash-params-section .property-value{display:flex;align-items:center;gap:var(--spacing-xs)}.ob-value-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background-color:#4caf50;margin-right:6px;flex-shrink:0;vertical-align:middle}.ob-param-field{display:flex;align-items:center;background-color:var(--bg-secondary);border-radius:var(--radius-sm);padding:1px 8px;min-height:20px;flex:1}.ob-param-field-dropdown{cursor:pointer}.ob-param-field-dropdown .ob-param-chevron{margin-left:auto;flex-shrink:0;color:var(--text-muted)}.ob-param-empty{color:var(--text-muted);font-style:italic}.ob-param-input,.ob-param-select{width:100%;padding:2px 6px;font-size:13px;font-family:inherit;color:var(--text-primary);background-color:var(--bg-primary);border:1px solid var(--accent-color);border-radius:var(--radius-sm);outline:none}.ob-param-input:focus,.ob-param-select:focus{box-shadow:0 0 0 2px #f8933533}.ob-param-select{cursor:pointer}.ob-params-section .property-group-title{color:var(--accent-color)}.panel{display:flex;flex-direction:column;width:350px;min-width:250px;max-width:500px;background-color:var(--bg-primary);border-color:var(--border-color);z-index:var(--z-panel);transition:width var(--transition-normal),min-width var(--transition-normal)}.panel-left{border-right:1px solid var(--border-color)}.panel-right{border-left:1px solid var(--border-color)}.panel.collapsed{width:0;min-width:0;overflow:hidden}.panel.collapsed .panel-content,.panel.collapsed .panel-header h2,.panel.collapsed .panel-header span{opacity:0}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);border-bottom:1px solid var(--border-light);flex-shrink:0}.panel-title{font-size:14px;font-weight:600;color:var(--text-primary)}.panel-toggle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);color:var(--text-muted);transition:all var(--transition-fast)}.panel-toggle:hover{background-color:var(--bg-hover);color:var(--text-primary)}.panel-left .panel-toggle svg{transform:rotate(0)}.panel-left.collapsed .panel-toggle svg{transform:rotate(180deg)}.panel-right .panel-toggle svg{transform:rotate(0)}.panel-right.collapsed .panel-toggle svg{transform:rotate(180deg)}.panel-content{display:flex;flex-direction:column;flex:1;min-height:0;overflow-x:hidden}.file-list{padding:var(--spacing-sm)}.file-item{display:flex;align-items:center;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast)}.file-item:hover{background-color:var(--bg-hover)}.file-item.selected{background-color:var(--selection-bg)}.file-item-icon{flex-shrink:0;width:20px;height:20px;margin-right:var(--spacing-sm);color:var(--text-muted)}.file-item-name{flex:1;font-size:13px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.discipline-select{font-size:11px;padding:2px 4px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;max-width:90px;margin-right:var(--spacing-xs)}.discipline-select:hover{border-color:var(--accent-color)}.discipline-select:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px rgba(var(--accent-color-rgb),.2)}.file-item-actions{display:flex;gap:var(--spacing-xs);opacity:0;transition:opacity var(--transition-fast)}.file-item:hover .file-item-actions{opacity:1}.file-item-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);color:var(--text-muted);transition:all var(--transition-fast)}.file-item-btn:hover{background-color:var(--bg-active);color:var(--text-primary)}.file-item-btn.visibility-off{color:var(--text-muted);opacity:.5}.properties-content{padding:var(--spacing-sm)}.property-group{margin-bottom:var(--spacing-md)}.property-group-header{display:flex;align-items:center;padding:var(--spacing-sm) var(--spacing-md);background-color:var(--bg-secondary);border-radius:var(--radius-sm);cursor:pointer;user-select:none}.property-group-header:hover{background-color:var(--bg-tertiary)}.property-group-title{flex:1;font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.property-group-toggle{color:var(--text-muted);transition:transform var(--transition-fast)}.property-group.collapsed .property-group-toggle{transform:rotate(-90deg)}.property-group-content{padding:var(--spacing-sm) 0}.property-group.collapsed .property-group-content{display:none}.property-row{display:flex;padding:var(--spacing-xs) var(--spacing-md);font-size:13px}.property-row:hover{background-color:var(--bg-hover)}.property-name{flex:0 0 45%;color:var(--text-secondary);word-break:break-word}.property-value{flex:1;color:var(--text-primary);word-break:break-word}.multi-selection-info{padding:var(--spacing-md);text-align:center;color:var(--text-secondary);font-size:13px}.multi-selection-count{font-weight:600;color:var(--accent-color)}.toast-container{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:var(--z-toast)}.toast{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);animation:slideIn .3s ease}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-icon{flex-shrink:0}.toast-message{flex:1;font-size:13px;color:var(--text-primary)}.toast-close{flex-shrink:0;color:var(--text-muted)}.toast-close:hover{color:var(--text-primary)}.toast.success .toast-icon{color:var(--success-color)}.toast.warning .toast-icon{color:var(--warning-color)}.toast.error .toast-icon{color:var(--error-color)}.panel-section{display:flex;flex-direction:column;border-bottom:1px solid var(--border-light)}.panel-section:last-of-type{border-bottom:none;flex:1;min-height:0}.panel-section.collapsed .panel-section-content{display:none}.panel-section-toggle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);color:var(--text-muted);transition:all var(--transition-fast)}.panel-section-toggle:hover{background-color:var(--bg-hover);color:var(--text-primary)}.panel-section.collapsed .panel-section-toggle svg{transform:rotate(-90deg)}.panel-section-content{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.clash-controls{display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md)}.clash-btn{display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs);flex:1;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:13px;font-weight:500;transition:all var(--transition-fast)}.clash-btn-primary{background-color:var(--accent-color);color:#fff}.clash-btn-primary:hover:not(:disabled){background-color:var(--accent-hover)}.clash-btn-primary:disabled{opacity:.5;cursor:not-allowed}.clash-btn-secondary{background-color:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color)}.clash-btn-secondary:hover{background-color:var(--bg-tertiary)}.clash-progress{padding:var(--spacing-sm) var(--spacing-md)}.clash-progress-track{height:4px;background-color:var(--bg-tertiary);border-radius:2px;overflow:hidden}.clash-progress-bar{height:100%;background-color:var(--accent-color);border-radius:2px;transition:width .3s ease}.clash-progress-text{margin-top:var(--spacing-xs);font-size:12px;color:var(--text-muted);text-align:center}.clash-stats{display:flex;justify-content:center;gap:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-md)}.clash-stat{display:flex;flex-direction:column;align-items:center}.clash-stat-value{font-size:24px;font-weight:600;color:var(--accent-color)}.clash-stat-label{font-size:11px;color:var(--text-muted);text-transform:uppercase}.clash-results{flex:1;min-height:0;padding:var(--spacing-sm);overflow-y:auto}.clash-item{margin-bottom:var(--spacing-xs);border-radius:var(--radius-md);background-color:var(--bg-secondary);overflow:hidden}.clash-item.selected{background-color:var(--selection-bg);border:1px solid var(--accent-color)}.clash-item-header{display:flex;align-items:center;padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:background-color var(--transition-fast)}.clash-item-header:hover{background-color:var(--bg-hover)}.clash-item-icon{flex-shrink:0;width:20px;height:20px;margin-right:var(--spacing-sm);color:var(--error-color)}.clash-item-info{flex:1;min-width:0}.clash-item-label{display:block;font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clash-item-meta{display:block;font-size:11px;color:var(--text-muted)}.clash-item-expand{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--text-muted);transition:transform var(--transition-fast)}.clash-item.expanded .clash-item-expand{transform:rotate(180deg)}.clash-item-details{display:none;padding:var(--spacing-xs) var(--spacing-md) var(--spacing-sm);border-top:1px solid var(--border-light)}.clash-item.expanded .clash-item-details{display:block}.clash-detail-item{display:flex;justify-content:space-between;padding:var(--spacing-xs) var(--spacing-sm);font-size:12px;border-radius:var(--radius-sm);cursor:pointer}.clash-detail-item:hover{background-color:var(--bg-hover)}.clash-detail-category{color:var(--text-secondary)}.clash-detail-volume{color:var(--text-muted);font-family:monospace}.detecting-message,.error-message{padding:var(--spacing-md);text-align:center;font-size:13px}.detecting-message{color:var(--text-muted)}.error-message{color:var(--error-color)}.clash-group{margin-bottom:var(--spacing-xs);border-radius:var(--radius-md);background-color:var(--bg-secondary);overflow:hidden}.clash-group-header{display:flex;align-items:center;padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:background-color var(--transition-fast)}.clash-group-header:hover{background-color:var(--bg-hover)}.clash-group-icon{flex-shrink:0;width:20px;height:20px;margin-right:var(--spacing-sm);color:var(--warning-color)}.clash-group-info{flex:1;min-width:0}.clash-group-label{display:block;font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clash-group-meta{display:block;font-size:11px;color:var(--text-muted)}.clash-group-expand{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--text-muted);transition:transform .25s cubic-bezier(.4,0,.2,1)}.clash-group.expanded .clash-group-expand{transform:rotate(180deg)}.clash-group-details{border-top:1px solid var(--border-light);padding:var(--spacing-xs) var(--spacing-sm);max-height:0;opacity:0;overflow:hidden;transition:max-height .3s cubic-bezier(.4,0,.2,1),opacity .2s ease,padding .2s ease}.clash-group.expanded .clash-group-details{max-height:300px;opacity:1}.clash-mep-item{display:flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);margin-left:var(--spacing-md);font-size:12px;border-radius:var(--radius-sm);cursor:pointer;border:1px solid transparent;transition:background-color .15s ease,transform .15s ease,border-color .15s ease}.clash-mep-item:hover{background-color:var(--bg-hover);transform:translate(2px)}.clash-mep-item:active{transform:translate(0) scale(.99)}.clash-mep-item.selected{background-color:var(--selection-bg);border-color:var(--accent-color);box-shadow:inset 3px 0 0 var(--accent-color)}.clash-mep-icon{flex-shrink:0;width:16px;height:16px;margin-right:var(--spacing-xs);color:var(--error-color)}.clash-mep-label{flex:1;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clash-mep-volume{flex-shrink:0;color:var(--text-muted);font-family:monospace;font-size:11px;margin-left:var(--spacing-sm)}.clash-merge-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:16px;padding:0 4px;margin-right:4px;font-size:10px;font-weight:600;color:var(--accent-color);background:color-mix(in srgb,var(--accent-color) 15%,transparent);border:1px solid color-mix(in srgb,var(--accent-color) 30%,transparent);border-radius:8px;cursor:pointer;flex-shrink:0}.clash-merge-badge:hover{background:color-mix(in srgb,var(--accent-color) 25%,transparent)}.clash-item-actions{display:flex;align-items:center;gap:2px;flex-shrink:0;margin-left:auto}.clash-split-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:2px;border-radius:var(--radius-sm);display:flex;align-items:center}.clash-split-btn:hover{color:var(--accent-color);background:var(--bg-hover)}.clash-consolidated{border-left:2px solid color-mix(in srgb,var(--accent-color) 40%,transparent)}.clash-merged-sources{margin-left:calc(var(--spacing-md) + 8px);padding:2px 0;border-left:1px dashed var(--border-color)}.clash-merged-source{display:flex;align-items:center;gap:6px;padding:2px var(--spacing-sm);font-size:11px;color:var(--text-muted);opacity:.7}.clash-merged-source-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clash-merged-source-cat{font-size:10px;color:var(--text-muted);flex-shrink:0}@media (max-width: 1024px){.panel{width:300px}}@media (max-width: 768px){.panel{position:absolute;top:0;bottom:0;width:350px;box-shadow:var(--shadow-lg)}.panel-left{left:0}.panel-right{right:0}.panel.collapsed{transform:translate(-100%)}.panel-right.collapsed{transform:translate(100%)}}.viewcube-container{position:absolute;top:calc(var(--panel-gap) + 46px + var(--panel-gap));right:var(--panel-gap);width:120px;height:120px;z-index:100;pointer-events:auto;background:transparent;overflow:hidden;transition:right .35s cubic-bezier(.4,0,.2,1)}#viewcube-canvas{width:100%;height:100%;display:block;cursor:pointer}#viewcube-canvas:hover{cursor:pointer}#data-manager-panel{position:fixed;left:var(--panel-gap);right:var(--panel-gap);bottom:var(--panel-gap);height:45vh;min-height:300px;max-height:60vh;background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:flex;z-index:var(--z-floating);overflow:hidden;transform:translateY(calc(100% + var(--panel-gap)));opacity:0;visibility:hidden;transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .35s cubic-bezier(.4,0,.2,1),visibility .35s}#data-manager-panel.open{transform:translateY(0);opacity:1;visibility:visible}body.data-manager-open #property-panel{bottom:calc(45vh + 2 * var(--panel-gap))}.dm-selection-column{width:240px;min-width:200px;background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden}.dm-selection-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);border-bottom:1px solid var(--border-color)}.dm-selection-header-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.dm-selection-header-icon img{width:20px;height:20px;object-fit:contain}.dm-selection-header-title{flex:1;font-size:14px;font-weight:600;color:var(--text-primary)}.dm-refresh-btn{width:28px;height:28px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:background var(--transition-fast),color var(--transition-fast)}.dm-refresh-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.dm-categories-list{flex:1;overflow-y:auto;padding:var(--spacing-sm)}.dm-category-item{margin-bottom:var(--spacing-xs);border-radius:var(--radius-md);overflow:hidden;background:var(--bg-primary)}.dm-category-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:background var(--transition-fast);user-select:none}.dm-category-header:hover{background:var(--bg-hover)}.dm-category-chevron{width:16px;height:16px;color:var(--text-secondary);transition:transform var(--transition-normal);flex-shrink:0}.dm-category-item.expanded .dm-category-chevron{transform:rotate(90deg)}.dm-category-direct .dm-category-header{cursor:pointer}.dm-category-direct .dm-category-header:hover{background:var(--bg-hover)}.dm-category-direct .dm-category-chevron{display:none}.dm-category-item.active .dm-category-header{background:var(--accent-light)}.dm-category-item.active .dm-category-title{color:var(--accent-color)}.dm-category-item.active .dm-category-icon svg{stroke:var(--accent-color)}.dm-category-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dm-category-icon img{width:18px;height:18px;object-fit:contain}.dm-category-title{flex:1;font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dm-category-count{font-size:11px;color:var(--text-muted);background:var(--bg-tertiary);padding:2px 6px;border-radius:var(--radius-full)}.dm-category-content{display:none;padding:0 var(--spacing-sm) var(--spacing-sm)}.dm-category-item.expanded .dm-category-content{display:block}.dm-subcategory-list{display:flex;flex-direction:column;gap:2px}.dm-subcategory-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast);font-size:12px;color:var(--text-secondary)}.dm-subcategory-item:hover{background:var(--bg-hover);color:var(--text-primary)}.dm-subcategory-item.active{background:var(--accent-light);color:var(--accent-color)}.dm-subcategory-bullet{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.5}.dm-subcategory-item.active .dm-subcategory-bullet{background:var(--accent-color);opacity:1}.dm-subcategory-with-actions{justify-content:flex-start}.dm-subcategory-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-select-all-btn{padding:1px 6px;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.3px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;opacity:0;transition:opacity var(--transition-fast),background var(--transition-fast);flex-shrink:0}.dm-subcategory-item:hover .dm-select-all-btn{opacity:1}.dm-select-all-btn:hover{background:var(--accent-light);color:var(--accent-color);border-color:var(--accent-color)}.dm-linked-files-list{display:flex;flex-direction:column;gap:2px}.dm-linked-file-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast);font-size:12px;color:var(--text-secondary)}.dm-linked-file-item:hover{background:var(--bg-hover);color:var(--text-primary)}.dm-linked-file-item .dm-file-icon{width:14px;height:14px;color:var(--text-muted)}.dm-empty-state,.dm-coming-soon{font-size:11px;color:var(--text-muted);font-style:italic;padding:var(--spacing-xs) var(--spacing-sm)}.dm-data-viewer{flex:1;display:flex;flex-direction:column;overflow:hidden}.dm-data-header{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);border-bottom:1px solid var(--border-color)}.dm-data-title-section{flex:1;display:flex;align-items:baseline;gap:var(--spacing-sm)}.dm-data-title{font-size:16px;font-weight:600;color:var(--text-primary)}.dm-data-count{font-size:13px;color:var(--text-secondary)}.dm-close-btn{width:28px;height:28px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:background var(--transition-fast),color var(--transition-fast)}.dm-close-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.dm-filter-row{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.dm-filter-input-wrapper{position:relative;flex:1;max-width:300px}.dm-filter-input-wrapper svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--text-muted);pointer-events:none}.dm-filter-input{width:100%;padding:6px 10px 6px 32px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);font-size:12px}.dm-filter-input:focus{outline:none;border-color:var(--accent-color)}.dm-filter-input::placeholder{color:var(--text-muted)}.dm-group-by{display:flex;align-items:center;gap:var(--spacing-sm);font-size:12px;color:var(--text-secondary)}.dm-group-by-label{white-space:nowrap}.dm-group-by-select{padding:4px 8px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-primary);font-size:12px;cursor:pointer}.dm-group-by-select:focus{outline:none;border-color:var(--accent-color)}.dm-columns-container{flex:1;display:flex;gap:1px;background:var(--border-color);overflow-x:auto;padding:var(--spacing-md);background:var(--bg-tertiary)}.dm-column-panel{min-width:200px;width:200px;background:var(--bg-primary);border-radius:var(--radius-md);display:flex;flex-direction:column;overflow:hidden;flex-shrink:0}.dm-column-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.dm-column-title{flex:1;font-size:12px;font-weight:600;color:var(--text-primary)}.dm-column-close{width:20px;height:20px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:background var(--transition-fast),color var(--transition-fast)}.dm-column-close:hover{background:var(--bg-hover);color:var(--text-primary)}.dm-column-search{padding:var(--spacing-sm);border-bottom:1px solid var(--border-color)}.dm-column-search input{width:100%;padding:4px 8px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);font-size:11px}.dm-column-search input:focus{outline:none;border-color:var(--accent-color)}.dm-column-search input::placeholder{color:var(--text-muted)}.dm-column-content{flex:1;overflow-y:auto;padding:var(--spacing-xs)}.dm-column-row{padding:var(--spacing-xs) var(--spacing-sm);font-size:11px;color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.dm-column-row:hover{background:var(--bg-hover);color:var(--text-primary)}.dm-column-row.selected{background:var(--accent-light);color:var(--accent-color)}.dm-add-column-btn{min-width:40px;width:40px;height:100%;min-height:200px;border:2px dashed var(--border-color);border-radius:var(--radius-md);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast);flex-shrink:0}.dm-add-column-btn:hover{border-color:var(--accent-color);color:var(--accent-color);background:var(--accent-light)}.dm-add-column-btn svg{width:24px;height:24px}@media (max-width: 1200px){.dm-selection-column{width:200px;min-width:180px}.dm-column-panel{min-width:180px;width:180px}}@media (max-width: 768px){#data-manager-panel{height:50vh;flex-direction:column}.dm-selection-column{width:100%;max-height:150px;border-right:none;border-bottom:1px solid var(--border-color)}body.data-manager-open #property-panel{bottom:calc(50vh + 2 * var(--panel-gap))}}.virtual-scroll-container{flex:1;min-height:0;overflow:auto;overflow-anchor:none}.virtual-scroll-spacer-top,.virtual-scroll-spacer-bottom{pointer-events:none;overflow-anchor:none}.virtual-scroll-rows{position:relative;overflow-anchor:none}.virtual-scroll-row{display:flex;align-items:center;border-bottom:1px solid var(--border-color);cursor:pointer;transition:background var(--transition-fast)}.virtual-scroll-row:hover{background:var(--bg-hover)}.virtual-scroll-row.selected{background:var(--accent-light)}.dm-merged-source-row{opacity:.55;cursor:default;background:color-mix(in srgb,var(--bg-secondary) 40%,transparent);border-left:3px solid color-mix(in srgb,var(--accent-color) 30%,transparent)}.dm-merged-source-row:hover{background:color-mix(in srgb,var(--bg-secondary) 60%,transparent)}.dm-merged-source-cell{pointer-events:none}.dm-merged-arrow{color:var(--accent-color);font-size:14px;margin-right:4px}.dm-consolidated-source-row{opacity:.65;cursor:pointer;background:color-mix(in srgb,var(--bg-secondary) 30%,transparent);border-left:3px solid color-mix(in srgb,var(--accent-color) 25%,transparent)}.dm-consolidated-source-row:hover{opacity:.85;background:color-mix(in srgb,var(--bg-secondary) 50%,transparent)}.dm-consolidated-toggle{display:inline-flex;align-items:center;gap:4px;cursor:pointer;color:var(--text-secondary);padding:2px 4px;border-radius:3px}.dm-consolidated-toggle:hover{color:var(--accent-color);background:color-mix(in srgb,var(--accent-color) 10%,transparent)}.dm-consolidated-count{font-size:11px;font-weight:600;color:var(--accent-color)}.dm-cell{flex:0 0 auto;min-width:60px;padding:0 var(--spacing-sm);font-size:11px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;height:100%;border-right:1px solid var(--border-color);box-sizing:border-box}.dm-cell:last-child{border-right:1px solid var(--border-color)}.dm-cell-value{flex:1;overflow:hidden;text-overflow:ellipsis}.dm-cell-editable{position:relative;cursor:text}.dm-cell-editable:hover{background:var(--bg-tertiary)}.dm-cell-edit-icon{opacity:0;margin-left:4px;font-size:10px;color:var(--text-muted);transition:opacity var(--transition-fast)}.dm-cell-editable:hover .dm-cell-edit-icon{opacity:1}.dm-cell.editing{padding:0;background:var(--bg-primary)}.dm-cell-input{width:100%;height:100%;padding:0 var(--spacing-sm);border:2px solid var(--accent-color);border-radius:0;background:var(--bg-primary);color:var(--text-primary);font-size:11px;outline:none}.dm-cell-input:focus{border-color:var(--accent-color)}.dm-cell-select{cursor:pointer}.dm-cell-dropdown .dm-cell-value:after{content:"▼";font-size:8px;margin-left:4px;color:var(--text-muted)}.dm-cell-checkbox{display:flex;align-items:center;justify-content:center;cursor:pointer}.dm-checkbox{width:14px;height:14px;cursor:pointer;accent-color:var(--accent-color)}.dm-cell-planes-toggle{display:flex;align-items:center;justify-content:center}.dm-planes-toggle-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);padding:0}.dm-planes-toggle-btn:hover{background-color:var(--bg-active);color:var(--text-primary)}.dm-planes-toggle-btn.active{color:var(--accent-color);background-color:rgba(var(--accent-color-rgb, 59, 130, 246),.15)}.dm-cell-number{text-align:right;font-variant-numeric:tabular-nums}.dm-cell-number .dm-cell-value{font-family:Consolas,Monaco,monospace}.dm-cell-number-input{text-align:right;font-variant-numeric:tabular-nums;font-family:Consolas,Monaco,monospace}.dm-cell-number-input::-webkit-outer-spin-button,.dm-cell-number-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.dm-cell-number-input[type=number]{-moz-appearance:textfield}.dm-table-header{height:32px;background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.dm-table-header .dm-cell{font-weight:600;color:var(--text-primary);cursor:default}.dm-table-header .dm-cell:hover{background:var(--bg-hover)}.dm-table-header .dm-cell{position:relative;user-select:none}.dm-resize-handle{position:absolute;right:0;top:0;bottom:0;width:6px;cursor:col-resize;background:transparent;z-index:2}.dm-resize-handle:hover,.dm-resize-handle.resizing{background:var(--accent-color)}body.dm-resizing{cursor:col-resize!important;user-select:none}body.dm-resizing *{cursor:col-resize!important}.dm-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--text-secondary)}.dm-loading-spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.dm-loading-text{margin-top:var(--spacing-sm);font-size:12px}.dm-loading-progress{width:200px;height:4px;background:var(--bg-tertiary);border-radius:var(--radius-full);margin-top:var(--spacing-sm);overflow:hidden}.dm-loading-progress-bar{height:100%;background:var(--accent-color);transition:width .3s ease}.dm-empty-data{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--text-muted);font-size:13px;text-align:center}.dm-empty-data svg{width:48px;height:48px;margin-bottom:var(--spacing-md);opacity:.5}.dm-data-table{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.dm-data-table-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.dm-table-scroll-wrapper{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.dm-table-header-wrapper{flex-shrink:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.dm-table-header-wrapper::-webkit-scrollbar{display:none}.dm-table-header{display:flex;align-items:center;min-width:max-content;width:fit-content}.virtual-scroll-rows{min-width:max-content;width:fit-content}.virtual-scroll-row{display:flex;min-width:max-content;width:fit-content}.virtual-scroll-spacer-top,.virtual-scroll-spacer-bottom{min-width:0}.dm-cell[data-column]{position:relative}.virtual-scroll-row.highlighted{animation:highlight-pulse 1s ease-out}@keyframes highlight-pulse{0%{background:var(--accent-color)}to{background:transparent}}.dm-clash-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:0 6px;background:var(--accent-color);color:#fff;font-size:10px;font-weight:600;border-radius:var(--radius-full)}.dm-group-header-row{background:var(--bg-secondary);cursor:pointer;user-select:none;border-bottom:1px solid var(--border-color)}.dm-group-header-row:hover{background:var(--bg-hover)}.dm-group-header-content{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-sm);padding:0 var(--spacing-md);height:100%;width:100%}.dm-group-chevron{width:16px;height:16px;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.dm-group-label{flex:1;font-size:12px;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-group-count-badge{background:var(--accent-color);color:#fff;font-size:10px;font-weight:600;border-radius:var(--radius-full);min-width:22px;height:18px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.dm-group-header-cell{font-weight:600;color:var(--text-primary);gap:4px}.dm-group-header-cell .dm-cell-value{font-weight:600}.dm-group-row{background:var(--bg-tertiary);font-weight:500}.dm-group-row:hover{background:var(--bg-hover)}.dm-group-expand{width:20px;display:flex;align-items:center;justify-content:center;cursor:pointer}.dm-group-expand svg{width:12px;height:12px;transition:transform var(--transition-fast)}.dm-group-row.expanded .dm-group-expand svg{transform:rotate(90deg)}.dm-completeness-indicator{width:16px;height:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.dm-completeness-indicator.complete{background:#4b6}.dm-completeness-indicator.incomplete{border:2px solid var(--text-muted);background:transparent}.dm-header-cell{cursor:pointer}.dm-header-label{flex:1;overflow:hidden;text-overflow:ellipsis}.dm-sort-indicator{font-size:9px;color:var(--accent-color);margin-left:2px;flex-shrink:0}.dm-sort-indicator.active{opacity:1}.dm-sort-indicator-hidden{opacity:0;transition:opacity var(--transition-fast)}.dm-header-cell:hover .dm-sort-indicator-hidden{opacity:.3}.dm-header-sorted{background:rgba(var(--accent-color-rgb, 59, 130, 246),.06)}.dm-filter-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;color:var(--text-muted);opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast);flex-shrink:0;border-radius:var(--radius-sm)}.dm-header-cell:hover .dm-filter-icon{opacity:.5}.dm-filter-icon:hover{opacity:1!important;color:var(--accent-color);background:var(--bg-hover)}.dm-filter-icon.active{opacity:1!important;color:var(--accent-color)}.dm-filter-icon-svg{pointer-events:none}.dm-filter-dropdown{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:180px;max-width:280px;overflow:hidden}.dm-filter-dropdown-content{max-height:300px;overflow-y:auto;padding:var(--spacing-xs)}.dm-filter-option{display:flex;align-items:center;gap:var(--spacing-sm);padding:4px var(--spacing-sm);font-size:12px;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dm-filter-option:hover{background:var(--bg-hover);color:var(--text-primary)}.dm-filter-option input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent-color);flex-shrink:0}.dm-filter-option span{overflow:hidden;text-overflow:ellipsis}.dm-filter-select-all{border-bottom:1px solid var(--border-color);margin-bottom:2px;padding-bottom:6px;font-weight:600}.dm-filter-dropdown-actions{padding:var(--spacing-sm);border-top:1px solid var(--border-color);display:flex;justify-content:flex-end}.dm-filter-apply-btn{padding:4px 16px;font-size:12px;font-weight:500;border:none;border-radius:var(--radius-sm);background:var(--accent-color);color:#fff;cursor:pointer;transition:background var(--transition-fast)}.dm-filter-apply-btn:hover{opacity:.9}.dm-clear-filters-btn{padding:4px 10px;font-size:11px;font-weight:500;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast)}.dm-clear-filters-btn:hover{background:var(--bg-hover);color:var(--accent-color);border-color:var(--accent-color)}.dm-clash-exclude-toggle{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);border-radius:50%;flex-shrink:0;transition:color var(--transition-fast)}.dm-clash-exclude-toggle:hover{color:var(--text-primary)}.dm-clash-exclude-toggle.excluded{color:var(--error-color, #ef4444)}.dm-clash-exclude-toggle.excluded:hover{color:var(--error-color, #ef4444);opacity:.8}.dm-group-header-row.clash-excluded{opacity:.55}.dm-group-header-row.clash-excluded:hover{opacity:.75}.login-overlay{position:fixed;inset:0;z-index:var(--z-modal, 300);display:flex;align-items:center;justify-content:center;background:var(--bg-canvas, #0e0721);opacity:0;transition:opacity .3s ease}.login-overlay--visible{opacity:1}.login-overlay--hidden{opacity:0;pointer-events:none}.login-card{width:100%;max-width:380px;padding:40px 32px;background:var(--bg-primary, #3c384c);border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-lg, 0 10px 20px rgba(0, 0, 0, .5));transform:translateY(20px);transition:transform .3s ease}.login-overlay--visible .login-card{transform:translateY(0)}.login-logo{text-align:center;margin-bottom:32px}.login-logo-img{width:56px;height:56px;margin-bottom:12px;opacity:.9}.login-title{font-size:22px;font-weight:600;color:var(--text-primary, #fff);margin:0 0 4px}.login-subtitle{font-size:13px;color:var(--text-muted, #7a7789);margin:0}.login-form{display:flex;flex-direction:column;gap:16px}.login-field{display:flex;flex-direction:column;gap:6px}.login-field label{font-size:12px;font-weight:500;color:var(--text-secondary, #b8b5c4);text-transform:uppercase;letter-spacing:.05em}.login-field input{padding:10px 12px;font-size:14px;color:var(--text-primary, #fff);background:var(--bg-secondary, #2d2a3c);border:1px solid var(--border-color, #545163);border-radius:var(--radius-md, 8px);outline:none;transition:border-color var(--transition-fast, .1s ease)}.login-field input::placeholder{color:var(--text-muted, #7a7789)}.login-field input:focus{border-color:var(--accent-color, #f89335)}.login-error{min-height:18px;font-size:13px;color:var(--error-color, #dc2626);text-align:center}.login-submit{display:flex;align-items:center;justify-content:center;gap:8px;padding:11px 0;font-size:14px;font-weight:600;color:var(--accent-text-color, #fff);background:var(--accent-color, #f89335);border:none;border-radius:var(--radius-md, 8px);cursor:pointer;transition:background var(--transition-fast, .1s ease),opacity var(--transition-fast, .1s ease)}.login-submit:hover:not(:disabled){background:var(--accent-hover, #fb9e4c)}.login-submit:disabled{opacity:.7;cursor:not-allowed}.login-submit-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:login-spin .6s linear infinite}@keyframes login-spin{to{transform:rotate(360deg)}}.obp-picker-overlay,.obp-error-overlay{position:fixed;inset:0;z-index:var(--z-modal, 300);display:flex;align-items:center;justify-content:center;background:var(--bg-canvas, #0e0721);opacity:0;transition:opacity .3s ease}.obp-picker-overlay--visible,.obp-error-overlay--visible{opacity:1}.obp-picker-overlay--hidden,.obp-error-overlay--hidden{opacity:0;pointer-events:none}.obp-picker-card{width:100%;max-width:480px;padding:36px 32px 28px;background:var(--bg-primary, #3c384c);border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-lg, 0 10px 20px rgba(0, 0, 0, .5));transform:translateY(20px);transition:transform .3s ease}.obp-picker-overlay--visible .obp-picker-card{transform:translateY(0)}.obp-picker-header{text-align:center;margin-bottom:24px}.obp-picker-logo{width:48px;height:48px;margin-bottom:10px;opacity:.9}.obp-picker-title{font-size:20px;font-weight:600;color:var(--text-primary, #fff);margin:0 0 4px}.obp-picker-subtitle{font-size:13px;color:var(--text-muted, #7a7789);margin:0}.obp-project-details{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:6px;flex-wrap:wrap}.obp-project-detail{font-size:12px;color:var(--text-secondary, #b8b5c4)}.obp-project-detail-sep{font-size:12px;color:var(--text-muted, #7a7789)}.obp-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;margin-bottom:20px}.obp-empty-state-icon{color:var(--text-muted, #7a7789);opacity:.5;margin-bottom:16px}.obp-empty-state-text{font-size:13px;color:var(--text-muted, #7a7789);text-align:center;line-height:1.6;margin:0}.obp-file-list{max-height:300px;overflow-y:auto;margin-bottom:20px;border:1px solid var(--border-color, #545163);border-radius:var(--radius-md, 8px)}.obp-file-row{display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;border-bottom:1px solid var(--border-color, #545163);transition:background var(--transition-fast, .1s ease)}.obp-file-row:last-child{border-bottom:none}.obp-file-row:hover{background:var(--bg-secondary, #2d2a3c)}.obp-file-row--selected{background:var(--bg-tertiary, #3c384c);outline:2px solid var(--accent-color, #f89335);outline-offset:-2px;border-radius:2px}.obp-file-icon{flex-shrink:0;color:var(--text-muted, #7a7789)}.obp-file-row--selected .obp-file-icon{color:var(--accent-color, #f89335)}.obp-file-info{flex:1;min-width:0}.obp-file-name{display:block;font-size:14px;font-weight:500;color:var(--text-primary, #fff);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obp-file-meta{display:flex;align-items:center;gap:8px;margin-top:3px}.obp-file-date{font-size:11px;color:var(--text-muted, #7a7789)}.obp-badge{display:inline-block;padding:1px 8px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-radius:10px}.obp-badge--published{color:#fff;background:var(--success-color, #22c55e)}.obp-badge--draft{color:var(--text-secondary, #b8b5c4);background:var(--bg-secondary, #2d2a3c);border:1px solid var(--border-color, #545163)}.obp-picker-actions{display:flex;flex-direction:column;gap:10px}.obp-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:11px 0;font-size:14px;font-weight:600;border:none;border-radius:var(--radius-md, 8px);cursor:pointer;transition:background var(--transition-fast, .1s ease),opacity var(--transition-fast, .1s ease)}.obp-btn--primary{color:var(--accent-text-color, #fff);background:var(--accent-color, #f89335)}.obp-btn--primary:hover:not(:disabled){background:var(--accent-hover, #fb9e4c)}.obp-btn--primary:disabled{opacity:.5;cursor:not-allowed}.obp-btn--secondary{color:var(--text-secondary, #b8b5c4);background:transparent;border:1px solid var(--border-color, #545163)}.obp-btn--secondary:hover:not(:disabled){background:var(--bg-secondary, #2d2a3c);color:var(--text-primary, #fff)}.obp-btn--secondary:disabled{opacity:.5;cursor:not-allowed}.obp-btn-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:obp-spin .6s linear infinite}@keyframes obp-spin{to{transform:rotate(360deg)}}.obp-error-card{width:100%;max-width:400px;padding:40px 32px;background:var(--bg-primary, #3c384c);border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-lg, 0 10px 20px rgba(0, 0, 0, .5));text-align:center;transform:translateY(20px);transition:transform .3s ease}.obp-error-overlay--visible .obp-error-card{transform:translateY(0)}.obp-error-icon{color:var(--error-color, #dc2626);margin-bottom:16px}.obp-error-title{font-size:18px;font-weight:600;color:var(--text-primary, #fff);margin:0 0 8px}.obp-error-message{font-size:13px;color:var(--text-muted, #7a7789);margin:0;line-height:1.6}
