:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-panel: #21262d;--surface-dark: #010409;--surface-1: var(--bg-primary);--surface-2: var(--bg-secondary);--surface-3: var(--bg-panel);--surface-primary: var(--bg-panel);--background: var(--surface-dark);--surface: var(--surface-1);--surface-variant: var(--surface-2);--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--text-disabled: #484f58;--on-surface: var(--text-primary);--on-surface-variant: var(--text-secondary);--on-primary: #ffffff;--accent-blue: #0696d7;--accent-orange: #ff8c00;--accent-green: #5cb85c;--accent-red: #d9534f;--primary: var(--accent-blue);--primary-hover: #0578b8;--primary-text: #ffffff;--success: var(--accent-green);--warning: var(--accent-orange);--error: var(--accent-red);--accent-hover: #0578b8;--success-hover: #4a9d4a;--warning-hover: #e07800;--error-hover: #c9443f;--success-bg: rgba(92, 184, 92, .15);--warning-bg: rgba(255, 140, 0, .15);--error-bg: rgba(217, 83, 79, .15);--accent-color: var(--accent-blue);--success-color: var(--success);--warning-color: var(--warning);--error-color: var(--error);--border: #30363d;--border-hover: #484f58;--border-color: var(--border);--outline: #30363d;--outline-variant: #21262d;--entity-point-default: #2196F3;--entity-point-selected: #FFC107;--entity-point-highlighted: #FF9800;--entity-point-construction: #9E9E9E;--entity-line-default: #4CAF50;--entity-line-selected: #FFC107;--entity-line-highlighted: #FF9800;--entity-line-construction: #9E9E9E;--entity-plane-default: #9C27B0;--entity-plane-selected: #FFC107;--entity-plane-highlighted: #FF9800;--entity-plane-construction: #9E9E9E;--entity-circle-default: #FF5722;--entity-circle-selected: #FFC107;--entity-circle-highlighted: #FF9800;--entity-circle-construction: #9E9E9E;--constraint-satisfied: #4CAF50;--constraint-warning: #FF9800;--constraint-violated: #F44336;--constraint-conflicting: #9C27B0;--constraint-redundant: #9E9E9E;--constraint-undefined: #2196F3;--color-satisfied: var(--constraint-satisfied);--color-warning: var(--constraint-warning);--color-violated: var(--constraint-violated);--color-world-geometry: #2196F3;--color-image-guides: #FF5722;--color-construction: #9E9E9E;--color-selection: #FFC107;--state-active: #FFC107;--state-inactive: #757575;--state-processing: #FF9800;--state-error: #F44336;--state-success: #4CAF50;--workspace-image: #2196F3;--workspace-world: #4CAF50;--workspace-split: #9C27B0;--feedback-subtle: .1;--feedback-moderate: .3;--feedback-strong: .6;--feedback-intense: .9;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--sidebar-left-width: 180px;--sidebar-right-width: 250px;--top-toolbar-height: 56px;--status-bar-height: 24px;--content-height:calc(100vh - 80px);--border-radius: 3px;--border-radius-sm: 2px;--input-height: 32px;--context-menu-bg: var(--surface-3);--context-menu-border: var(--border);--context-menu-shadow: 0 4px 12px rgba(0, 0, 0, .3);--context-menu-item-hover: var(--surface-2);--panel-bg: var(--bg-panel)}.entity-list-popup{display:flex;flex-direction:column;height:100%;padding:8px}.entity-list-header{display:flex;justify-content:flex-end;padding:8px 0 12px;border-bottom:1px solid var(--border);margin-bottom:8px}.btn-delete-all{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--border-radius);color:var(--text-secondary);font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-delete-all:hover{background:var(--error);border-color:var(--error);color:#fff}.btn-delete-all svg{font-size:14px}.entity-list{flex:1;overflow-y:auto;border:1px solid var(--border);border-radius:var(--border-radius);background:var(--surface-1)}.entity-item{padding:8px 12px;border-bottom:1px solid var(--border);cursor:pointer;transition:background-color .15s ease}.entity-item:hover{background:var(--surface-2)}.entity-item.active{background:var(--primary);color:var(--primary-text)}.entity-item:last-child{border-bottom:none}.entity-header{display:flex;justify-content:space-between;align-items:center}.entity-info{flex:1;min-width:0}.entity-name{display:flex;align-items:center;gap:6px;font-weight:500;font-size:13px}.entity-color-indicator{width:12px;height:12px;border-radius:50%;border:1px solid var(--border);flex-shrink:0}.entity-display-info{font-size:11px;color:var(--text-muted);margin-top:2px}.entity-actions{display:flex;gap:4px;align-items:center}.entity-actions button{background:none;border:none;padding:4px;border-radius:var(--border-radius);cursor:pointer;opacity:.7;font-size:12px;transition:opacity .15s ease,background-color .15s ease}.entity-actions button:hover{opacity:1;background:var(--surface-3)}.btn-toggle-visibility.hidden{opacity:.4}.btn-delete:hover{color:#fff;background:#c0392b;transform:translateY(-1px);box-shadow:0 2px 8px #d9534f4d}.entity-additional-info{margin-top:6px;padding-left:18px}.info-line{font-size:11px;color:var(--text-muted);margin-bottom:2px}.empty-state{display:flex;align-items:center;justify-content:center;height:100px;padding:var(--spacing-xl);text-align:center;color:var(--text-muted);font-style:italic}.lines-manager{display:flex;flex-direction:column;gap:8px}.lines-manager__header{display:flex;justify-content:flex-end;padding-bottom:8px;border-bottom:1px solid var(--border)}.lines-manager__empty{display:flex;align-items:center;justify-content:center;height:60px;color:var(--text-muted);font-style:italic}.constraint-details{margin-top:6px}.constraint-status{display:flex;align-items:center;gap:8px;margin-bottom:4px}.status-badge{font-size:10px;padding:2px 6px;border-radius:10px;color:#fff;font-weight:700;text-transform:uppercase}.residual-value{font-size:10px;color:var(--text-muted)}.constraint-parameters{margin-top:4px}.parameter-item{display:flex;justify-content:space-between;font-size:10px;margin-bottom:2px}.parameter-name{color:var(--text-muted)}.parameter-value{font-weight:500}.btn-toggle-driving.driving{background:var(--accent-blue)!important;color:#fff}.btn-toggle-driving.construction{background:var(--surface-3)!important}.constraint-badge{font-size:10px;padding:2px 4px;background:var(--surface-3);border-radius:3px;margin-right:4px;display:inline-block}.line-details{margin-top:4px}.definition-type{font-size:11px;color:var(--text-muted);font-style:italic}.image-point-details{margin-top:4px}.image-info,.coordinates{font-size:10px;color:var(--text-muted);margin-bottom:2px}.entity-management-panel{margin-top:12px;background:var(--surface-2);border-radius:var(--border-radius);border:1px solid var(--border);flex-shrink:0}.entity-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px}.entity-button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--border-radius);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;font-size:11px}.entity-button:hover{background:var(--surface-3);border-color:var(--border-hover);transform:translateY(-1px)}.context-menu{background:var(--context-menu-bg);border:1px solid var(--context-menu-border);border-radius:var(--border-radius);box-shadow:var(--context-menu-shadow);min-width:160px;padding:4px 0;font-size:13px;z-index:10000}.context-menu-item{display:flex;align-items:center;width:100%;padding:8px 12px;background:none;border:none;color:var(--text-primary);cursor:pointer;text-align:left;font-size:inherit;font-family:inherit;transition:background-color .15s ease}.context-menu-item:hover:not(.disabled){background-color:var(--context-menu-item-hover)}.context-menu-item.disabled{color:var(--text-muted);cursor:not-allowed}.context-menu-icon{margin-right:8px;width:16px;display:flex;justify-content:center}.context-menu-label{flex:1}.context-menu-separator{height:1px;background:var(--border);margin:4px 8px}.world-point-edit-content{padding:16px;max-height:400px;overflow-y:auto}.edit-section{margin-bottom:24px}.edit-section h4{margin:0 0 12px;font-size:14px;color:var(--text-primary);border-bottom:1px solid var(--border);padding-bottom:4px}.form-row{display:flex;align-items:center;margin-bottom:12px}.form-row label{flex:0 0 80px;font-size:13px;color:var(--text-secondary)}.form-input{flex:1;height:var(--input-height);padding:0 8px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--border-radius);color:var(--text-primary);font-size:13px}.form-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #0696d733}.color-input{width:60px;height:var(--input-height);padding:2px;cursor:pointer}.image-points-list{max-height:120px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--border-radius);background:var(--surface-1)}.image-point-item{padding:6px 10px;border-bottom:1px solid var(--border)}.image-point-item:last-child{border-bottom:none}.image-point-header{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--text-secondary);margin-bottom:4px}.image-point-info{display:flex;align-items:center;gap:6px;min-width:0}.image-point-actions{display:flex;gap:6px}.image-point-actions button{padding:1px 6px;font-size:11px}.image-point-chip{display:inline-flex;align-items:center;gap:6px;padding:1px 6px;border-radius:999px;background:var(--surface-2);color:var(--text-primary);font-size:11px;line-height:1.2;white-space:nowrap}.image-point-chip svg{font-size:10px;color:var(--text-muted)}.image-point-meta{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--text-secondary)}.image-point-meta span{white-space:nowrap}.image-point-meta span:last-child{color:var(--text-muted)}.no-image-points{padding:16px;text-align:center;color:var(--text-muted);font-style:italic;font-size:12px}.status-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.status-item{display:flex;flex-direction:column;gap:4px}.status-item label{font-size:12px;color:var(--text-secondary)}.status-item span{font-size:11px;color:var(--text-primary);font-family:monospace}.danger-zone{background:rgba(217,83,79,.1);border:1px solid rgba(217,83,79,.3);border-radius:var(--border-radius);padding:var(--spacing-md)}.danger-zone h4{color:var(--accent-red)!important;border-bottom-color:#d9534f4d!important}.btn-danger{background:var(--accent-red);color:#fff;border:none;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-size:13px;font-weight:500;transition:all .2s ease}.btn-danger:hover{opacity:.9;background:#c9302c;transform:translateY(-1px)}.context-menu-hint{font-size:14px;color:var(--text-muted);padding:4px 6px;cursor:pointer;transition:color .15s ease;-webkit-user-select:none;user-select:none}.context-menu-hint:hover{color:var(--text-secondary)}.entity-button:active{transform:translateY(0)}.button-icon{font-size:16px;margin-bottom:2px}.button-label{font-weight:500;color:var(--text-primary)}.entity-status-bar{display:flex;gap:4px;align-items:center}.entity-status-item{display:flex;align-items:center;gap:4px;padding:2px 8px;background:transparent;border:1px solid transparent;border-radius:4px;color:var(--text-secondary);font-size:11px;cursor:pointer;transition:all .15s ease}.entity-status-item:hover{background:var(--surface-2);border-color:var(--border);color:var(--text-primary)}.entity-status-item:active{background:var(--surface-3)}.entity-status-label{font-weight:500}.entity-status-count{color:var(--text-primary);font-weight:600}.entity-status-selected{color:var(--primary);font-weight:600}.entity-status-item.optimize-btn{color:var(--primary);border-color:var(--primary);opacity:.8}.entity-status-item.optimize-btn:hover{opacity:1;background:rgba(74,158,255,.1)}.mouse-position{color:var(--text-muted);font-size:11px;font-family:monospace;padding:0 8px}.button-count{font-size:10px;color:var(--text-muted);background:var(--surface-3);padding:2px 6px;border-radius:10px;min-width:16px;text-align:center}.btn-clear-project{color:var(--text-muted)!important;transition:color .15s ease,background-color .15s ease}.btn-clear-project:hover{color:var(--error)!important;background-color:#d9534f1a!important}.tooltip-wrapper{position:relative;display:inline-block}.tooltip-delightful{position:absolute;z-index:1000;padding:8px 12px;background:var(--surface-dark);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--border-radius);font-size:12px;white-space:nowrap;box-shadow:0 4px 12px #0000004d;pointer-events:none;animation:tooltipFadeIn .2s ease-out}.tooltip-top{bottom:100%;left:50%;margin-bottom:5px;animation:tooltipFadeInTop .2s ease-out}.tooltip-bottom{top:100%;left:50%;margin-top:5px;animation:tooltipFadeInBottom .2s ease-out}.tooltip-left{right:100%;top:50%;margin-right:5px;animation:tooltipFadeInLeft .2s ease-out}.tooltip-right{left:100%;top:50%;margin-left:5px;animation:tooltipFadeInRight .2s ease-out}@keyframes tooltipFadeInTop{0%{opacity:0;transform:translate(-50%) translateY(5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes tooltipFadeInBottom{0%{opacity:0;transform:translate(-50%) translateY(-5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes tooltipFadeInLeft{0%{opacity:0;transform:translateY(-50%) translate(5px)}to{opacity:1;transform:translateY(-50%) translate(0)}}@keyframes tooltipFadeInRight{0%{opacity:0;transform:translateY(-50%) translate(-5px)}to{opacity:1;transform:translateY(-50%) translate(0)}}--button-height: 32px; * {box-sizing:border-box}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;background:var(--bg-primary);color:var(--text-primary);overflow:hidden;width:100vw;height:100vh;max-width:100vw;max-height:100vh}.app-layout{display:flex;flex-direction:column;height:100vh;width:100vw;max-height:100vh;max-width:100vw;background:var(--bg-primary);overflow:hidden}.top-toolbar{height:var(--top-toolbar-height);background:var(--bg-secondary);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 16px;gap:16px;flex-shrink:0}.content-area{display:flex;flex:1;min-height:0;overflow:visible}.sidebar-left{width:var(--sidebar-left-width);background:var(--bg-panel);border-right:1px solid #666;flex-shrink:0;overflow:visible;position:relative;display:flex;flex-direction:column}.viewer-area{flex:1;background:var(--bg-secondary);position:relative;overflow:hidden}.sidebar-right{width:fit-content;background:var(--bg-panel);border-left:1px solid #666;flex-shrink:0;overflow:hidden;display:flex;flex-direction:column;height:var(--content-height)}.sidebar-right>*{flex-shrink:0}.sidebar-right>.world-point-panel{flex:1;min-height:0}.status-bar{height:var(--status-bar-height);background:var(--bg-panel);border-top:1px solid #666;display:flex;align-items:center;padding:0 var(--spacing-md);gap:var(--spacing-lg);font-size:12px;color:var(--text-secondary);flex-shrink:0;overflow:visible}.status-bar__toggle{margin-left:auto;display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);color:var(--text-muted);font-size:11px;letter-spacing:.6px;text-transform:uppercase;cursor:pointer;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}.status-bar__toggle:hover{color:var(--text-primary);border-color:#ffffff29}.status-bar__toggle:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.status-bar__toggle[data-active=true]{background:var(--accent-blue);border-color:var(--accent-blue);color:#0b0b0b}.status-bar__toggle[data-active=true]:hover{filter:brightness(1.05)}.status-bar__toggle-indicator{width:24px;height:12px;border-radius:999px;background:rgba(255,255,255,.25);position:relative;transition:background .2s ease}.status-bar__toggle-indicator:after{content:"";position:absolute;top:1px;left:1px;width:10px;height:10px;border-radius:50%;background:var(--bg-panel);transition:transform .2s ease,background .2s ease}.status-bar__toggle[data-active=true] .status-bar__toggle-indicator{background:rgba(255,255,255,.5)}.status-bar__toggle[data-active=true] .status-bar__toggle-indicator:after{transform:translate(12px);background:var(--bg-panel-contrast, #111)}.status-bar__toggle-label{font-weight:500;color:inherit}.status-bar__toggle-state{font-weight:700;letter-spacing:1px}.scale-slider-footer{width:80px;height:4px;background:#666;border-radius:2px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0}.scale-slider-footer::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;background:var(--accent-blue);border-radius:50%;cursor:pointer}.scale-slider-footer::-moz-range-thumb{width:12px;height:12px;background:var(--accent-blue);border-radius:50%;cursor:pointer;border:none}.zoom-controls-footer{display:flex;align-items:center;gap:var(--spacing-xs);position:relative}.zoom-dropdown-container{position:relative}.zoom-dropdown-btn{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);width:20px;height:20px;border-radius:var(--border-radius);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .2s ease}.zoom-dropdown-btn:hover{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.zoom-dropup{position:absolute;bottom:100%;right:0;background:var(--bg-panel);border:1px solid #666;border-radius:var(--border-radius);box-shadow:0 2px 8px #0000004d;z-index:1000;margin-bottom:4px;min-width:120px}.zoom-dropup button{display:block;width:100%;background:transparent;border:none;color:var(--text-primary);padding:var(--spacing-xs) var(--spacing-sm);text-align:left;cursor:pointer;font-size:11px;transition:background .2s ease}.zoom-dropup button:hover{background:var(--accent-blue);color:#fff}.zoom-dropup button:first-child{border-radius:var(--border-radius) var(--border-radius) 0 0}.zoom-dropup button:last-child{border-radius:0 0 var(--border-radius) var(--border-radius)}.toolbar-section{display:flex;align-items:center;gap:var(--spacing-sm)}.zoom-controls{align-items:center;position:absolute;bottom:var(--spacing-md);right:var(--spacing-md);background:var(--bg-panel);border:1px solid #666;border-radius:var(--border-radius);padding:var(--spacing-sm);display:flex;flex-direction:column;gap:var(--spacing-sm);box-shadow:0 2px 8px #0000004d;z-index:10}.zoom-slider{width:120px;height:4px;background:#666;border-radius:2px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:var(--accent-blue);border-radius:50%;cursor:pointer;transition:all .2s ease}.zoom-slider::-webkit-slider-thumb:hover{background:#0896d7;transform:scale(1.1)}.zoom-slider::-moz-range-thumb{width:16px;height:16px;background:var(--accent-blue);border-radius:50%;cursor:pointer;border:none;transition:all .2s ease}.zoom-slider::-moz-range-thumb:hover{background:#0896d7;transform:scale(1.1)}.zoom-info{background:var(--bg-secondary);color:var(--text-secondary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);font-size:.85em;font-family:monospace;border:1px solid #666;min-width:50px;text-align:center}.btn-tool{background:transparent;border:1px solid #666;color:var(--text-secondary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);cursor:pointer;font-size:12px;transition:all .3s cubic-bezier(.34,1.56,.64,1);position:relative;overflow:hidden}.btn-tool:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle,var(--accent-blue) 0%,transparent 70%);transition:all .6s ease;transform:translate(-50%,-50%);opacity:0}.btn-tool:hover{background:var(--bg-secondary);border-color:var(--accent-blue);color:var(--text-primary);transform:translateY(-2px) scale(1.05);box-shadow:0 4px 12px #0696d74d}.btn-tool:hover:before{width:100px;height:100px;opacity:.1}.btn-tool:active{transform:translateY(0) scale(.98);transition:all .1s ease}.toolbar-toggle{display:flex;align-items:center;gap:var(--spacing-xs);font-size:12px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}.toolbar-toggle input[type=checkbox]{margin:0}.constraint-toolbar{flex:1;display:flex;align-items:center;gap:var(--spacing-lg)}.toolbar-label{color:var(--text-secondary);font-size:12px;font-weight:500;margin-right:var(--spacing-sm)}.constraint-buttons{display:flex;gap:var(--spacing-xs)}.constraint-btn{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid transparent;border-radius:var(--border-radius);background:transparent;cursor:pointer;transition:all .3s cubic-bezier(.34,1.56,.64,1);min-width:60px;position:relative;overflow:hidden}.constraint-btn:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .6s ease}.constraint-btn.enabled{border-color:var(--accent-blue);background:rgba(6,150,215,.1);color:var(--text-primary);transform:scale(1)}.constraint-btn.enabled:hover{background:rgba(6,150,215,.2);border-color:var(--accent-orange);transform:translateY(-3px) scale(1.05);box-shadow:0 6px 20px #0696d766}.constraint-btn.enabled:hover:after{left:100%}.constraint-btn.enabled:active{transform:translateY(-1px) scale(1.02)}.constraint-btn.disabled{opacity:.4;cursor:not-allowed;color:var(--text-muted)}.constraint-btn.just-clicked{animation:constraintActivate .6s ease-out}@keyframes constraintActivate{0%{transform:scale(1);box-shadow:0 0 #0696d7b3}50%{transform:scale(1.1);box-shadow:0 0 0 10px #0696d700}to{transform:scale(1);box-shadow:0 0 #0696d700}}.constraint-icon{font-size:16px;margin-bottom:2px;width:16px;text-align:center}.constraint-label{font-size:10px;text-transform:uppercase;font-weight:500}.selection-info{color:var(--text-secondary);font-size:12px;padding:var(--spacing-xs) var(--spacing-sm);background:rgba(255,255,255,.05);border-radius:var(--border-radius);border:1px solid rgba(255,255,255,.1)}.no-constraints-message{color:var(--text-muted);font-size:12px;font-style:italic}.image-toolbar{padding:var(--spacing-md);flex:1;min-height:0;display:flex;flex-direction:column;overflow:visible}.image-toolbar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);flex-shrink:0}.image-toolbar-header h3{margin:0;color:var(--text-primary);font-size:16px}.btn-add-image{width:32px;height:32px;background:var(--accent-blue);border:none;border-radius:var(--border-radius);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;font-size:16px}.btn-add-image:hover{background:var(--accent-orange)}.constraint-creation-status{background:rgba(6,150,215,.1);border:1px solid var(--accent-blue);border-radius:var(--border-radius);padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.constraint-type-badge{background:var(--accent-blue);color:#fff;padding:2px 8px;border-radius:12px;font-size:10px;font-weight:700;display:inline-block;margin-bottom:var(--spacing-xs)}.navigation-hint{font-size:11px;color:var(--text-muted);font-style:italic}.image-list{display:flex;flex-direction:column;gap:var(--spacing-md);flex:1;min-height:0;overflow-y:auto;overflow-x:visible;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.image-list::-webkit-scrollbar{width:6px}.image-list::-webkit-scrollbar-track{background:transparent}.image-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.image-list::-webkit-scrollbar-thumb:hover{background:var(--accent-blue)}.image-nav-item{display:flex;flex-direction:column;position:relative;border-radius:var(--border-radius);overflow:visible;border:2px solid transparent;transition:border-color .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1),background .3s cubic-bezier(.4,0,.2,1);background:var(--bg-secondary);margin-top:8px;padding-left:0}.image-nav-item:first-child{margin-top:20px}.image-nav-item:hover{border-color:#0696d780;box-shadow:0 2px 12px #0696d726}.image-nav-item.active{border-color:var(--accent-blue);box-shadow:0 4px 16px #0696d766;background:linear-gradient(135deg,var(--bg-secondary) 0%,rgba(6,150,215,.05) 100%)}.image-nav-item.active:hover{box-shadow:0 6px 20px #0696d780}.image-nav-item.constraint-mode{border-color:var(--accent-orange)}.image-nav-item.constraint-mode.active{border-color:var(--accent-blue);box-shadow:0 4px 16px #0696d766}.image-top-bar{position:absolute;top:-14px;left:0;right:0;z-index:1000;padding:2px 8px;display:flex;align-items:center;justify-content:space-between;gap:8px}.image-top-bar .image-name{color:#fff;font-size:13px;font-weight:600;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;text-shadow:-1px -1px 2px rgba(0,0,0,.9),1px -1px 2px rgba(0,0,0,.9),-1px 1px 2px rgba(0,0,0,.9),1px 1px 2px rgba(0,0,0,.9),0 0 8px rgba(0,0,0,.8),0 0 4px rgba(0,0,0,1)}.image-top-actions{display:flex;gap:4px;align-items:center}.btn-image-top-action{width:18px;height:18px;border:none;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.btn-image-top-action:hover{background:var(--accent-blue);transform:scale(1.1);box-shadow:0 2px 6px #0696d766}.btn-image-top-action:last-child:hover{background:#dc3545}.image-drag-handle-top{width:18px;height:18px;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;cursor:grab;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.image-drag-handle-top:hover{background:var(--accent-blue);transform:scale(1.1);box-shadow:0 2px 6px #0696d766}.image-drag-handle-top:active{cursor:grabbing}.image-thumbnail{width:100%;height:100px;position:relative;cursor:pointer;overflow:visible;flex-shrink:0;background:var(--bg-tertiary);border-radius:4px;display:flex;align-items:center;justify-content:center}.image-thumbnail img{width:100%;height:100%;object-fit:contain;background:var(--bg-secondary);border-radius:4px;overflow:hidden}.thumbnail-resize-handle{position:absolute;bottom:-2px;left:0;right:0;height:8px;background:linear-gradient(to bottom,transparent,rgba(6,150,215,.3));cursor:ns-resize;z-index:100;pointer-events:all;transition:background .2s ease}.thumbnail-resize-handle:hover{background:linear-gradient(to bottom,transparent,rgba(6,150,215,.6))}.image-info-right{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:flex-end;gap:8px;z-index:100;background:rgba(0,0,0,.85);padding:8px;border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);max-width:60px;opacity:1;transition:all .2s ease;pointer-events:all}.image-info-right.collapsed{max-width:32px;padding:4px;background:rgba(0,0,0,.5)}.btn-collapse-panel,.btn-expand-panel{width:28px;height:28px;padding:4px;background:rgba(255,255,255,.1);border:none;border-radius:4px;color:#fff;font-size:16px;cursor:pointer;transition:all .2s ease}.btn-collapse-panel:hover,.btn-expand-panel:hover{background:var(--accent-blue)}.image-info-right .image-stats{display:flex;flex-direction:column;gap:4px;font-size:10px;color:#fff}.image-info-right .stat-item{display:flex;align-items:center;gap:4px;white-space:nowrap}.image-info-right .stat-icon{font-size:8px}.image-info-right .image-actions{display:flex;flex-direction:column;gap:4px}.image-info-right .btn-image-action{width:28px;height:28px;padding:4px;font-size:12px}.constraint-mode-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(255,140,0,.8);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-size:10px;text-align:center;opacity:0;transition:opacity .2s ease}.image-nav-item:hover .constraint-mode-overlay{opacity:1}.selected-points-indicator{background:rgba(255,255,255,.9);color:var(--accent-orange);padding:2px 6px;border-radius:8px;font-weight:700;margin-bottom:4px}.switch-hint{font-size:9px}.selected-wp-indicator{position:absolute;top:4px;left:4px;background:var(--accent-green);color:#fff;border-radius:10px;padding:2px 6px;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;min-width:16px;height:16px;box-shadow:0 2px 4px #0006;z-index:1000}.selected-wp-count{line-height:1}.lines-overlay,.vanishing-lines-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:5;overflow:visible}.wp-locations-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.wp-location-dot{position:absolute;width:14px;height:14px;border-radius:50%;border:1px solid white;box-shadow:0 1px 3px #00000080;transform:translate(-50%,-50%);z-index:11;cursor:pointer;pointer-events:auto;box-sizing:border-box}.wp-location-dot.selected{width:18px;height:18px;border:3px solid var(--accent-green);box-shadow:0 0 0 1px #fff,0 2px 6px #0009;animation:pulse-wp-dot 2s ease-in-out infinite;box-sizing:border-box}.wp-location-dot.globally-hovered{width:14px;height:14px;border:2px solid #ffc107;box-shadow:0 0 0 1px #fff,0 2px 8px #ffc10799;z-index:10;cursor:pointer;box-sizing:border-box}.wp-location-dot:hover{cursor:pointer;transform:translate(-50%,-50%) scale(1.2)}@keyframes pulse-wp-dot{0%,to{transform:translate(-50%,-50%) scale(1);opacity:1}50%{transform:translate(-50%,-50%) scale(1.2);opacity:.8}}.point-creation-effect{position:absolute;pointer-events:none;z-index:100}.creation-ripple{position:absolute;border:2px solid var(--accent-green);border-radius:50%;animation:rippleExpand .8s ease-out}.creation-sparkle{position:absolute;width:6px;height:6px;background:var(--accent-green);border-radius:50%;animation:sparkleOut 1s ease-out}@keyframes rippleExpand{0%{transform:translate(-50%,-50%) scale(0);opacity:1}to{transform:translate(-50%,-50%) scale(8);opacity:0}}@keyframes sparkleOut{0%{transform:translate(-50%,-50%) scale(0) rotate(0);opacity:1}50%{transform:translate(-50%,-50%) scale(1.5) rotate(180deg);opacity:.8}to{transform:translate(-50%,-50%) scale(0) rotate(360deg);opacity:0}}.world-point-hover{animation:pointGlow .3s ease-out}@keyframes pointGlow{0%{filter:drop-shadow(0 0 0px var(--accent-blue))}to{filter:drop-shadow(0 0 8px var(--accent-blue))}}.image-info{flex:1;padding:var(--spacing-sm);display:flex;flex-direction:column;justify-content:space-between}.image-name{color:var(--text-primary);font-weight:500;font-size:13px;margin-bottom:4px;cursor:pointer}.image-name-input{background:var(--bg-primary);border:1px solid var(--accent-blue);color:var(--text-primary);padding:2px 4px;border-radius:2px;font-size:13px;width:100%}.image-stats{display:flex;flex-direction:column;gap:2px}.stat-item{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted)}.stat-item.selected{color:var(--accent-blue);font-weight:700}.stat-icon{font-size:10px}.image-actions{display:flex;gap:var(--spacing-xs);margin-top:var(--spacing-xs)}.btn-image-action{background:transparent;border:1px solid #666;color:var(--text-muted);width:24px;height:24px;border-radius:var(--border-radius);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:12px}.btn-image-action:hover{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.empty-images-state,.timeline-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--text-muted);text-align:center;animation:fadeInEmpty .8s ease-out}.empty-icon{font-size:64px;margin-bottom:var(--spacing-md);opacity:.6;animation:gentleBob 4s ease-in-out infinite;filter:drop-shadow(0 4px 8px rgba(0,0,0,.1))}.empty-text{font-size:18px;margin-bottom:var(--spacing-sm);font-weight:500;animation:slideInText 1s ease-out .3s both}.empty-hint{font-size:14px;opacity:.8;animation:slideInText 1s ease-out .6s both;max-width:300px;line-height:1.4}.empty-cta{margin-top:var(--spacing-lg);animation:slideInText 1s ease-out .9s both}.empty-cta button{background:var(--accent-blue);color:#fff;border:none;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--border-radius);cursor:pointer;font-size:14px;font-weight:500;transition:all .3s ease;box-shadow:0 4px 12px #0696d74d}.empty-cta button:hover{background:var(--accent-orange);transform:translateY(-2px);box-shadow:0 6px 20px #ff8c0066}@keyframes fadeInEmpty{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes gentleBob{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-5px) rotate(1deg)}75%{transform:translateY(-2px) rotate(-1deg)}}@keyframes slideInText{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes subtlePulse{0%,to{box-shadow:0 0 #0696d766}50%{box-shadow:0 0 0 8px #0696d700}}.empty-state-illustration{color:var(--text-muted);margin-bottom:var(--spacing-lg);animation:gentleBob 4s ease-in-out infinite;filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}.empty-icon-svg{color:var(--text-muted);margin-bottom:var(--spacing-md);animation:gentleBob 4s ease-in-out infinite;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.empty-state-tip{margin-top:var(--spacing-md);font-size:13px;color:var(--text-muted);font-style:italic;opacity:.8}.btn-pulse{animation:subtlePulse 2s ease-in-out infinite}.btn-pulse:hover{animation:none}.constraint-instructions{background:rgba(255,140,0,.1);border:1px solid var(--accent-orange);border-radius:var(--border-radius);padding:var(--spacing-md);margin-top:var(--spacing-md)}.constraint-instructions h4{margin:0 0 var(--spacing-sm) 0;color:var(--accent-orange);font-size:14px}.constraint-instructions ul{margin:0;padding-left:var(--spacing-md);color:var(--text-secondary)}.constraint-instructions li{font-size:12px;margin-bottom:4px}.property-panel{background:var(--bg-panel);border-bottom:1px solid #666;flex-shrink:0}.property-panel-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);border-bottom:1px solid #666}.property-panel-header h3{margin:0;color:var(--text-primary);font-size:16px}.btn-clear-constraint{background:transparent;border:1px solid #666;color:var(--text-muted);width:24px;height:24px;border-radius:var(--border-radius);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.btn-clear-constraint:hover{background:var(--accent-red);border-color:var(--accent-red);color:#fff}.property-panel-content{max-height:300px;overflow-y:auto}.parameter-form{padding:var(--spacing-md)}.selected-points-preview,.selected-lines-preview{margin-bottom:var(--spacing-md);font-size:12px;color:var(--text-secondary);background:rgba(6,150,215,.1);border:1px solid var(--accent-blue);border-radius:var(--border-radius);padding:var(--spacing-sm);display:flex;flex-direction:column;gap:var(--spacing-xs)}.constraint-description{margin-bottom:var(--spacing-md);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:var(--border-radius);padding:var(--spacing-sm);color:var(--text-secondary);font-size:12px;font-style:italic}.form-field{margin-bottom:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-xs)}.form-field label{display:block;margin-bottom:var(--spacing-xs);font-size:12px;color:var(--text-secondary);font-weight:500}.form-field input{width:100%;height:var(--input-height);background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);border-radius:var(--border-radius);padding:0 var(--spacing-sm);font-size:13px}.form-field input:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 2px #0696d733}.coordinate-inputs{margin-bottom:var(--spacing-md);display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--spacing-sm)}.form-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid rgba(255,255,255,.1)}.btn-primary{background:var(--accent-blue);color:#fff;border:none;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--border-radius);font-weight:500;cursor:pointer;transition:all .2s ease;min-width:100px;height:32px;font-size:13px}.btn-primary:hover:not(:disabled){background:var(--accent-orange);transform:translateY(-1px);box-shadow:0 2px 8px #ff8c004d}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.constraint-timeline{flex:1;overflow-y:auto}.timeline-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);border-bottom:1px solid #666}.timeline-header h3{margin:0;color:var(--text-primary);font-size:16px}.constraint-count{font-size:12px;color:var(--text-muted)}.timeline-items{padding:var(--spacing-md)}.timeline-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);border-radius:var(--border-radius);margin-bottom:var(--spacing-xs);background:var(--bg-secondary);border:1px solid #666;transition:all .2s ease;cursor:pointer}.timeline-item:hover{background:var(--bg-panel);border-color:var(--accent-blue);box-shadow:0 2px 8px #0696d733}.timeline-item.disabled{opacity:.6}.timeline-item.disabled:hover{background:var(--bg-secondary);border-color:#666;box-shadow:none}.timeline-item.hovered{background:var(--bg-panel);border-color:var(--accent-orange);box-shadow:0 2px 8px #ff8c004d}.timeline-item-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--accent-blue);border-radius:50%;color:#fff;font-size:12px;transition:background-color .2s ease;flex-shrink:0}.timeline-item:hover .timeline-item-icon{background:var(--accent-orange)}.timeline-item-content{flex:1;min-width:0}.timeline-item-title{font-weight:500;color:var(--text-primary);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-item-details{color:var(--text-muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-item-actions{display:flex;gap:var(--spacing-xs);opacity:0;transition:opacity .2s ease}.timeline-item-actions.visible{opacity:1}.timeline-item-actions button{width:24px;height:24px;border:none;background:transparent;cursor:pointer;border-radius:var(--border-radius);display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;font-size:12px}.timeline-item-actions button:hover{background:rgba(255,255,255,.1)}.btn-toggle.enabled{color:var(--accent-green)}.btn-toggle.disabled{color:var(--accent-red)}.image-viewer-container{width:100%;height:100%;position:relative;overflow:hidden;min-width:0;min-height:0;max-width:100%;max-height:100%;flex:1}.image-viewer{width:100%;height:100%;background:var(--bg-secondary);position:relative;overflow:hidden}.image-viewer canvas{position:absolute;top:0;left:0;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;transition:background-color .2s ease}.image-viewer-info{position:absolute;bottom:8px;left:8px;background:rgba(0,0,0,.7);color:#fff;padding:6px 10px;border-radius:4px;font-size:11px;font-family:monospace;pointer-events:none;z-index:10}.image-viewer-info div{margin-bottom:2px}.image-viewer-info div:last-child{margin-bottom:0;opacity:.8;font-size:10px}.image-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-muted);font-style:italic;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);animation:float 3s ease-in-out infinite}.image-loading .loading-icon{font-size:32px;animation:rotate3d 2s ease-in-out infinite}.image-loading .loading-text{font-size:16px;animation:typewriter 2s steps(20) infinite}@keyframes float{0%,to{transform:translate(-50%,-50%) translateY(0)}50%{transform:translate(-50%,-50%) translateY(-10px)}}@keyframes rotate3d{0%{transform:rotateY(0) scale(1)}50%{transform:rotateY(180deg) scale(1.1)}to{transform:rotateY(360deg) scale(1)}}@keyframes typewriter{0%,to{opacity:1}50%{opacity:.3}}.no-image-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);text-align:center}.no-image-state h3{margin:0 0 var(--spacing-sm) 0;color:var(--text-secondary)}.no-image-state p{margin:0;font-size:14px}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;color:var(--text-muted);animation:fadeInUp .6s ease-out}.loading-spinner{width:48px;height:48px;border:3px solid var(--bg-secondary);border-top:3px solid var(--accent-blue);border-radius:50%;animation:spin 1.2s cubic-bezier(.68,-.55,.265,1.55) infinite;margin-bottom:var(--spacing-lg)}.loading-message{font-size:18px;font-weight:500;margin-bottom:var(--spacing-sm);animation:pulseText 2s ease-in-out infinite}.loading-tips{font-size:14px;color:var(--text-secondary);text-align:center;max-width:400px;animation:slideInTip 3s ease-in-out infinite}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulseText{0%,to{opacity:1}50%{opacity:.6}}@keyframes slideInTip{0%,90%,to{opacity:.7}20%,70%{opacity:1}}@keyframes spin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.1)}to{transform:rotate(360deg) scale(1)}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:#666;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#888}@keyframes selection-pulse{0%{box-shadow:0 0 #0696d7b3}70%{box-shadow:0 0 0 10px #0696d700}to{box-shadow:0 0 #0696d700}}.success-celebration{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:9999}.confetti-burst{position:absolute;width:10px;height:10px;background:var(--accent-blue);animation:confetti-fall 3s ease-out forwards}.confetti-burst:nth-child(2n){background:var(--accent-orange)}.confetti-burst:nth-child(3n){background:var(--accent-green)}.confetti-burst:nth-child(4n){background:var(--accent-red)}@keyframes confetti-fall{0%{transform:translateY(-100vh) rotate(0) scale(1);opacity:1}to{transform:translateY(100vh) rotate(720deg) scale(0);opacity:0}}.achievement-toast{position:fixed;top:20px;right:20px;background:linear-gradient(135deg,var(--accent-green),var(--accent-blue));color:#fff;padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--border-radius);box-shadow:0 8px 32px #0000004d;animation:achievementSlideIn .8s cubic-bezier(.68,-.55,.265,1.55);z-index:1000;min-width:300px}.achievement-content{display:flex;align-items:center;gap:var(--spacing-md)}.achievement-icon{font-size:32px;animation:bounce 1s ease-in-out 3}.achievement-text{flex:1}.achievement-title{font-size:16px;font-weight:700;margin-bottom:4px}.achievement-desc{font-size:14px;opacity:.9}@keyframes achievementSlideIn{0%{transform:translate(100%) scale(.8);opacity:0}to{transform:translate(0) scale(1);opacity:1}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0) scale(1)}40%{transform:translateY(-10px) scale(1.1)}60%{transform:translateY(-5px) scale(1.05)}}.world-point-panel{background:var(--bg-panel);border-radius:var(--border-radius);margin-bottom:var(--spacing-md);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0}.world-point-panel .panel-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);background:var(--bg-secondary);border-bottom:1px solid #555}.world-point-panel .panel-header h3{margin:0;font-size:16px;color:var(--text-primary)}.world-point-panel .point-count{background:var(--accent-blue);color:#fff;padding:2px 8px;border-radius:12px;font-size:12px;font-weight:700}.world-point-list{flex:1;overflow-y:auto;min-height:0}.world-point-item{border-bottom:1px solid #555;border-radius:var(--border-radius);margin:2px 0;transition:all .3s cubic-bezier(.4,0,.2,1);cursor:pointer;position:relative;overflow:hidden}.world-point-item:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(6,150,215,.1),transparent);transition:left .6s ease}.world-point-item:hover{background:var(--bg-secondary);transform:translate(6px) scale(1.02);box-shadow:0 4px 16px #0696d733}.world-point-item:hover:before{left:100%}.world-point-item.just-created{animation:itemSlideIn .6s cubic-bezier(.68,-.55,.265,1.55)}@keyframes itemSlideIn{0%{opacity:0;transform:translate(-100%) scale(.8)}50%{transform:translate(10px) scale(1.05)}to{opacity:1;transform:translate(0) scale(1)}}.world-point-item.selected{background:linear-gradient(135deg,rgba(6,150,215,.15) 0%,rgba(6,150,215,.25) 100%);border-left:4px solid var(--accent-blue);transform:translate(4px);box-shadow:0 4px 12px #0696d74d,inset 0 1px #0696d733;border-bottom-color:#0696d74d}.world-point-item.selected:hover{background:linear-gradient(135deg,rgba(6,150,215,.2) 0%,rgba(6,150,215,.3) 100%);box-shadow:0 6px 16px #0696d766,inset 0 1px #0696d74d;transform:translate(4px)}.world-point-item.broken{border-left:3px solid var(--accent-red)}.wp-item-main{display:flex;align-items:center;padding:var(--spacing-sm) var(--spacing-md)}.wp-item-content{display:flex;align-items:center;gap:var(--spacing-sm);flex:1;cursor:pointer;min-width:0}.wp-color-dot{width:12px;height:12px;border-radius:50%;border:1px solid #333}.wp-name{font-weight:500;color:var(--text-primary);font-size:14px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wp-name-input{background:var(--bg-secondary);border:1px solid var(--accent-blue);border-radius:var(--border-radius);color:var(--text-primary);padding:2px 6px;font-size:14px;width:120px}.wp-info{display:flex;align-items:center;gap:var(--spacing-xs);margin-left:auto;font-size:12px;color:var(--text-muted);flex-wrap:wrap;justify-content:flex-end}.image-count,.constraint-count{display:flex;align-items:center;gap:3px;font-size:11px;color:var(--text-muted);white-space:nowrap}.image-count .count-icon,.constraint-count .count-icon{font-size:10px;opacity:.8}.broken-indicator{color:var(--accent-red);font-size:14px}.wp-item-actions{display:flex;gap:var(--spacing-xs);opacity:0;transition:opacity .2s ease}.wp-item-actions.visible{opacity:1}.wp-item-actions button{width:24px;height:24px;border:none;background:transparent;cursor:pointer;border-radius:var(--border-radius);display:flex;align-items:center;justify-content:center;transition:background .2s ease}.wp-item-actions button:hover{background:rgba(255,255,255,.1)}.wp-item-actions button.disabled{opacity:.3;cursor:not-allowed}.wp-item-actions button.disabled:hover{background:transparent}.btn-constraints{color:var(--accent-blue)}.wp-constraints{background:var(--bg-secondary);padding:var(--spacing-sm) var(--spacing-md);border-top:1px solid #555}.wp-constraint-item{display:flex;align-items:center;gap:var(--spacing-xs);padding:2px 0;font-size:12px;color:var(--text-secondary)}.wp-constraint-item.disabled{opacity:.6}.constraint-name{flex:1}.disabled-indicator{color:var(--accent-red)}.world-point-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--text-muted);text-align:center}.world-point-empty .empty-icon{font-size:32px;margin-bottom:var(--spacing-sm)}.world-point-empty .empty-text{font-weight:500;margin-bottom:var(--spacing-xs);color:var(--text-secondary)}.world-point-empty .empty-hint{font-size:12px}.placement-mode-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);background:var(--accent-orange);color:#fff;font-weight:500;font-size:14px}.placement-info{display:flex;align-items:center;gap:var(--spacing-xs)}.placement-icon{font-size:24px;flex-shrink:0}.btn-cancel-placement{background:rgba(255,255,255,.2);border:none;color:#fff;width:24px;height:24px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease}.btn-cancel-placement:hover{background:rgba(255,255,255,.3)}.missing-points-notice{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background:rgba(255,140,0,.1);border-left:3px solid var(--accent-orange);font-size:12px;color:var(--accent-orange);flex-wrap:wrap}.btn-quick-place{background:var(--accent-orange);color:#fff;border:none;padding:4px 8px;border-radius:var(--border-radius);font-size:11px;cursor:pointer;margin-left:auto;transition:background .2s ease;flex-shrink:0}.btn-quick-place:hover{background:#e67e22}.notice-icon{font-size:14px}.world-point-item.missing-from-image{border-left:3px solid var(--accent-orange);background:rgba(255,140,0,.05)}.world-point-item.in-placement-mode{background:rgba(255,140,0,.2);border-left:3px solid var(--accent-orange)}.world-point-item.globally-hovered{background:rgba(255,193,7,.1);border-left:3px solid #ffc107;box-shadow:0 2px 8px #ffc1074d;transform:translate(3px)}.missing-indicator{color:var(--accent-orange);font-size:14px}.placement-indicator{color:var(--accent-orange);font-size:14px;animation:pulse-placement 1.5s ease-in-out infinite}@keyframes pulse-placement{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}.btn-place{color:var(--accent-orange);background:rgba(255,140,0,.1)}.btn-place:hover{background:rgba(255,140,0,.2)}.placement-mode-overlay{position:absolute;top:20px;left:50%;transform:translate(-50%);z-index:1000;pointer-events:none}.placement-instructions{background:rgba(255,140,0,.95);color:#fff;padding:var(--spacing-md);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000004d;display:flex;align-items:center;gap:var(--spacing-md);max-width:400px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.placement-text{flex:1}.placement-text strong{display:block;font-size:16px;margin-bottom:var(--spacing-xs)}.placement-hint{font-size:14px;opacity:.9;margin-bottom:2px}.placement-escape{font-size:12px;opacity:.7}@media (max-width: 1400px){:root{--sidebar-right-width: 320px}}@media (max-width: 1200px){:root{--sidebar-left-width: 180px;--sidebar-right-width: 280px}}@media (max-width: 1000px){:root{--sidebar-left-width: 160px;--sidebar-right-width: 260px}}@media (max-width: 900px){:root{--sidebar-left-width: 140px;--sidebar-right-width: 240px}.constraint-btn{min-width:50px}.constraint-label{display:none}}.property-panel.active{border-color:var(--accent-blue);box-shadow:0 2px 8px #0696d733}.constraint-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.preview-label{text-transform:uppercase;font-weight:500;font-size:12px;color:var(--text-secondary);flex:1}.point-names{color:var(--text-primary);font-size:13px;font-weight:500}.point-name{display:flex;align-items:center;gap:var(--spacing-xs);font-size:13px;font-weight:500;color:var(--text-primary);margin-bottom:2px}.separator{color:var(--text-secondary);margin:0 4px}.line-pairs{display:flex;flex-direction:column;gap:var(--spacing-xs)}.line-item{display:flex;gap:var(--spacing-sm);align-items:center}.line-label{font-size:11px;color:var(--text-muted);min-width:50px}.line-points{color:var(--accent-blue);font-weight:500;display:flex;gap:var(--spacing-md)}.form-field input[type=number]{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);height:32px;font-size:13px;transition:all .2s ease}.form-field input[type=number]:focus{outline:none;border-color:var(--accent-blue);background:var(--bg-primary)}.form-field input[type=number]::placeholder{color:var(--text-muted);font-style:italic;font-size:12px}.btn-secondary{background:transparent;color:var(--text-secondary);border:1px solid #666;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--border-radius);font-weight:500;cursor:pointer;transition:all .2s ease;min-width:80px;height:32px;font-size:13px}.btn-secondary:hover{border-color:var(--text-primary);color:var(--text-primary);background:rgba(255,255,255,.05)}.selection-hints{margin-top:var(--spacing-md);padding:var(--spacing-sm);background:rgba(255,255,255,.03);border-radius:var(--border-radius);text-align:left}.hint-item{font-size:11px;color:var(--text-secondary);margin-bottom:4px}@keyframes pulse-selection{0%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}to{transform:scale(1);opacity:1}}.selection-ring{animation:pulse-selection 2s infinite}.constraint-glyphs-overlay{pointer-events:none}.constraint-glyph{width:24px;height:24px;display:flex;align-items:center;justify-content:center;position:relative;transition:all .2s ease}.glyph-background{position:absolute;width:100%;height:100%;background:var(--accent-blue);border-radius:50%;border:2px solid white;opacity:.9}.constraint-glyph.hovered .glyph-background{background:var(--accent-orange);transform:scale(1.2);box-shadow:0 2px 8px #ff8c0080}.constraint-glyph.disabled .glyph-background{background:var(--text-muted);opacity:.5}.glyph-icon{position:relative;z-index:1;color:#fff;font-size:12px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.5)}.glyph-connection{opacity:.5}.constraint-glyph.hovered .glyph-connection{opacity:1}.constraint-visualization{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}.distance-line{stroke:var(--accent-blue);stroke-width:2;stroke-dasharray:5 5;opacity:.6}.distance-line.hovered{stroke:var(--accent-orange);stroke-width:3;opacity:1}.distance-label{fill:var(--accent-blue);font-size:12px;font-weight:700;text-anchor:middle}.angle-arc{fill:none;stroke:var(--accent-blue);stroke-width:2;opacity:.6}.angle-arc.hovered{stroke:var(--accent-orange);stroke-width:3;opacity:1}.coordinate-system-panel{background:var(--bg-panel);border:1px solid #666;border-radius:var(--border-radius);margin-bottom:var(--spacing-md)}.coordinate-system-panel .panel-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);border-bottom:1px solid rgba(255,255,255,.1)}.coordinate-system-panel .panel-header h3{margin:0;color:var(--text-primary);font-size:16px}.optimization-status{font-size:11px;padding:4px 8px;border-radius:12px;font-weight:500;text-transform:uppercase}.optimization-status.not_run{background:rgba(153,153,153,.2);color:var(--text-muted)}.optimization-status.running{background:rgba(255,140,0,.2);color:var(--accent-orange);animation:pulse 2s infinite}.optimization-status.converged{background:rgba(92,184,92,.2);color:var(--accent-green)}.optimization-status.failed{background:rgba(217,83,79,.2);color:var(--accent-red)}.coordinate-system-panel .panel-content{padding:var(--spacing-md)}.coordinate-system-panel .section{margin-bottom:var(--spacing-lg)}.coordinate-system-panel .section:last-child{margin-bottom:0}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md)}.section-header h4{margin:0;color:var(--text-primary);font-size:14px;font-weight:500}.origin-indicator,.ground-plane-indicator{font-size:12px;color:var(--accent-green);font-weight:500}.help-text{color:var(--text-secondary);font-size:12px;margin-bottom:var(--spacing-md);line-height:1.4}.point-selector{display:flex;flex-direction:column;gap:var(--spacing-xs)}.point-option{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background:var(--bg-secondary);border:1px solid #666;border-radius:var(--border-radius);cursor:pointer;transition:all .2s ease;color:var(--text-primary)}.point-option:hover{background:var(--bg-panel);border-color:var(--accent-blue)}.point-color{width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,.3);flex-shrink:0}.point-images{margin-left:auto;font-size:11px;color:var(--text-muted)}.origin-info{background:rgba(92,184,92,.1);border:1px solid var(--accent-green);border-radius:var(--border-radius);padding:var(--spacing-md)}.origin-details{margin-bottom:var(--spacing-md)}.detail-item{display:flex;justify-content:space-between;margin-bottom:var(--spacing-xs)}.detail-item .label{color:var(--text-secondary);font-size:12px}.detail-item .value{color:var(--text-primary);font-size:12px;font-weight:500}.btn-change{background:transparent;border:1px solid var(--accent-green);color:var(--accent-green);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);cursor:pointer;font-size:12px;transition:all .2s ease}.btn-change:hover{background:var(--accent-green);color:#fff}.scale-controls{display:flex;flex-direction:column;gap:var(--spacing-md)}.scale-presets{display:flex;gap:var(--spacing-xs)}.scale-presets button{flex:1;background:var(--bg-secondary);border:1px solid #666;color:var(--text-secondary);padding:var(--spacing-xs);border-radius:var(--border-radius);cursor:pointer;font-size:11px;transition:all .2s ease}.scale-presets button:hover{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}.ground-plane-setup{display:flex;flex-direction:column;gap:var(--spacing-md)}.selected-points{display:flex;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.ground-point-slot{flex:1;padding:var(--spacing-sm);border-radius:var(--border-radius);text-align:center;font-size:12px;font-weight:500}.ground-point-slot.empty{background:var(--bg-secondary);border:1px dashed #666;color:var(--text-muted)}.ground-point-slot.filled{background:rgba(6,150,215,.2);border:1px solid var(--accent-blue);color:var(--accent-blue)}.point-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.point-grid-item{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-secondary);border:1px solid #666;border-radius:var(--border-radius);cursor:pointer;transition:all .2s ease;color:var(--text-primary);font-size:11px}.point-grid-item:hover:not(:disabled){background:var(--bg-panel);border-color:var(--accent-blue)}.point-grid-item.selected{background:rgba(6,150,215,.2);border-color:var(--accent-blue);color:var(--accent-blue)}.point-grid-item.origin{background:rgba(92,184,92,.2);border-color:var(--accent-green);color:var(--accent-green)}.point-grid-item:disabled{opacity:.5;cursor:not-allowed}.btn-define-ground{background:var(--accent-blue);color:#fff;border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-weight:500;transition:all .2s ease}.btn-define-ground:hover:not(:disabled){background:var(--accent-orange)}.btn-define-ground:disabled{opacity:.5;cursor:not-allowed}.ground-plane-info{background:rgba(92,184,92,.1);border:1px solid var(--accent-green);border-radius:var(--border-radius);padding:var(--spacing-md)}.ground-points{margin-bottom:var(--spacing-md)}.ground-point{display:flex;justify-content:space-between;margin-bottom:var(--spacing-xs)}.ground-point .label{color:var(--text-secondary);font-size:12px}.ground-point .value{color:var(--text-primary);font-size:12px;font-weight:500}.optimization-controls{display:flex;flex-direction:row;gap:var(--spacing-sm)}.optimization-info{background:rgba(255,255,255,.05);border-radius:var(--border-radius);padding:var(--spacing-sm)}.info-item{display:flex;justify-content:space-between;margin-bottom:var(--spacing-xs)}.info-item:last-child{margin-bottom:0}.info-item .label{color:var(--text-secondary);font-size:12px}.info-item .value{color:var(--text-primary);font-size:12px;font-weight:500}.btn-optimize{display:flex;align-items:center;gap:6px;padding:6px 14px;background:var(--accent-orange);border:none;border-radius:4px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.btn-optimize:hover:not(:disabled){background:var(--accent-orange);transform:translateY(-1px);box-shadow:0 2px 8px #ff8c004d}.btn-optimize:disabled{opacity:.5;cursor:not-allowed}.optimization-status-group{display:flex;align-items:center;gap:8px}.optimization-status-indicator{white-space:nowrap;font-weight:500}.btn-help{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:16px;transition:all .15s ease;margin-left:8px}.btn-help:hover{background:var(--bg-panel);color:var(--text-primary);border-color:var(--border-hover)}.file-menu-container{position:relative}.btn-file-menu{display:flex;align-items:center;gap:6px;background:transparent;color:var(--text-secondary);border:1px solid var(--border);padding:6px 14px;border-radius:4px;cursor:pointer;font-weight:500;font-size:13px;transition:all .15s ease}.btn-file-menu:hover{background:var(--bg-panel);color:var(--text-primary)}.btn-file-menu:active{transform:scale(.97);transition:transform .05s ease}.btn-file-menu .chevron{font-size:10px;opacity:.6;margin-left:2px}.file-menu-dropdown{position:absolute;top:calc(100% + 4px);left:0;min-width:260px;background:var(--surface-3);border:1px solid var(--border);border-radius:var(--border-radius);box-shadow:0 4px 16px #0000004d;z-index:10001;padding:4px 0}.file-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;background:transparent;border:none;color:var(--text-primary);font-size:13px;cursor:pointer;transition:background .15s ease;text-align:left}.file-menu-item:hover:not(:disabled){background:var(--surface-2)}.file-menu-item:active:not(:disabled){background:var(--surface-1);transform:scale(.99)}.file-menu-item:disabled{opacity:.5;cursor:not-allowed}.file-menu-item svg{width:14px;opacity:.8}.file-menu-item .shortcut{margin-left:auto;font-size:11px;opacity:.5}.file-menu-item-danger{color:var(--error)}.file-menu-item-danger:hover:not(:disabled){background:var(--error-bg)}.file-menu-divider{height:1px;background:var(--border);margin:4px 0}.file-menu-save-as-form{display:flex;align-items:center;gap:6px;padding:6px 12px}.file-menu-save-as-form input{flex:1;padding:6px 8px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--border-radius);color:var(--text-primary);font-size:13px}.file-menu-save-as-form input:focus{outline:none;border-color:var(--accent-blue)}.file-menu-save-as-form button{padding:6px 10px;background:var(--accent-blue);border:none;border-radius:var(--border-radius);color:#fff;cursor:pointer}.file-menu-save-as-form button:hover:not(:disabled){background:var(--primary-hover)}.file-menu-save-as-form button:disabled{opacity:.5;cursor:not-allowed}.btn-stop{background:var(--accent-red, #dc3545);color:#fff;border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-weight:500;font-size:14px;transition:all .2s ease}.btn-stop:hover:not(:disabled){background:#c82333;transform:translateY(-1px);box-shadow:0 2px 8px #dc35454d}.btn-stop:disabled{opacity:.5;cursor:not-allowed}.btn-settings{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-weight:500;font-size:14px;transition:all .2s ease}.btn-settings:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent-blue)}.btn-settings:disabled{opacity:.5;cursor:not-allowed}.optimization-settings{margin-top:var(--spacing-md);padding:var(--spacing-md);background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius)}.optimization-settings h4{margin:0 0 var(--spacing-sm) 0;font-size:13px;color:var(--text-secondary);border-bottom:1px solid var(--border-color);padding-bottom:var(--spacing-xs)}.optimization-settings .setting-row{margin-bottom:var(--spacing-sm)}.optimization-settings .setting-row label{display:flex;align-items:center;gap:var(--spacing-sm);font-size:12px;color:var(--text-primary)}.optimization-settings .setting-row label span{min-width:100px}.optimization-settings .setting-row input[type=number]{width:80px;padding:4px 8px;border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--bg-primary);color:var(--text-primary);font-size:12px}.optimization-settings .checkbox-label{flex-direction:row-reverse;justify-content:flex-end}.optimization-settings .settings-actions{margin-top:var(--spacing-sm);padding-top:var(--spacing-sm);border-top:1px solid var(--border-color)}.optimization-settings .btn-reset{padding:4px 12px;font-size:11px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--border-radius);color:var(--text-secondary);cursor:pointer}.optimization-settings .btn-reset:hover{background:var(--bg-primary);color:var(--text-primary)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.entity-optimization-info{margin-top:var(--spacing-md)}.entity-optimization-info h4{margin:0 0 var(--spacing-sm) 0;font-size:13px;color:var(--text-secondary);font-weight:500}.entity-section{margin-bottom:var(--spacing-md)}.entity-section h5{margin:0 0 var(--spacing-xs) 0;font-size:12px;color:var(--text-muted);font-weight:500}.entity-table{width:100%;border-collapse:collapse;font-size:12px}.entity-table th{text-align:left;padding:4px 8px;background:var(--surface-2);border-bottom:1px solid var(--border);font-weight:500;color:var(--text-secondary);white-space:nowrap}.entity-table td{padding:4px 8px;border-bottom:1px solid var(--border);vertical-align:middle}.entity-table tr:hover{background:var(--surface-2)}.entity-table tr.selected{background:var(--primary);color:var(--primary-text)}.entity-table tr.selected:hover{background:var(--primary-hover)}.entity-table .color-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle;border:1px solid var(--border)}.entity-table .points-cell{color:var(--text-secondary);font-size:11px}.entity-table .dir-cell{text-align:center;font-weight:500}.entity-table .length-cell,.entity-table .residual-cell{text-align:right;font-family:monospace;font-size:11px}.entity-table .actions-cell{text-align:right;white-space:nowrap}.entity-table .btn-icon{background:none;border:none;padding:2px 5px;cursor:pointer;color:var(--text-secondary);border-radius:4px;opacity:.6;transition:opacity .15s,background-color .15s;font-size:11px}.entity-table .btn-icon:hover{opacity:1;background:var(--surface-3)}.entity-table .btn-danger-icon:hover{background:var(--error);color:#fff}.constraint-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.constraint-editor-modal{background:var(--bg-panel);border:1px solid #666;border-radius:var(--border-radius);min-width:500px;max-width:700px;max-height:80vh;overflow:hidden;box-shadow:0 8px 32px #00000080;animation:modalSlideIn .3s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.constraint-editor-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);border-bottom:1px solid rgba(255,255,255,.1);background:var(--bg-secondary)}.constraint-editor-modal .modal-header h3{margin:0;color:var(--text-primary);font-size:16px;font-weight:500}.modal-controls{display:flex;align-items:center;gap:var(--spacing-md)}.enable-toggle{display:flex;align-items:center;gap:var(--spacing-xs);cursor:pointer;color:var(--text-secondary);font-size:14px}.enable-toggle input[type=checkbox]{accent-color:var(--accent-blue)}.constraint-editor-modal .modal-content{padding:var(--spacing-md);max-height:60vh;overflow-y:auto}.constraint-edit-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.form-section{border:1px solid rgba(255,255,255,.1);border-radius:var(--border-radius);padding:var(--spacing-md);background:rgba(255,255,255,.02)}.form-section h4{margin:0 0 var(--spacing-md) 0;color:var(--text-primary);font-size:14px;font-weight:500;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:var(--spacing-xs)}.point-assignment,.corner-assignment{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md)}.corner-assignment{grid-template-columns:1fr 1fr}.line-points .point-field{flex:1}.point-field{display:flex;flex-direction:column;gap:var(--spacing-xs)}.point-field label{font-size:12px;color:var(--text-secondary);font-weight:500}.point-field select{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);height:32px;font-size:13px}.point-field select:focus{outline:none;border-color:var(--accent-blue);background:var(--bg-primary)}.unsupported-constraint{text-align:center;padding:var(--spacing-xl);color:var(--text-secondary)}.unsupported-constraint p{margin-bottom:var(--spacing-sm);line-height:1.4}.modal-actions{align-items:center;padding:var(--spacing-md);border-top:1px solid rgba(255,255,255,.1);background:var(--bg-secondary);display:flex;gap:12px;justify-content:flex-end}.action-group{display:flex;gap:var(--spacing-sm)}.btn-delete{background:var(--accent-red);color:#fff;border:none;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-weight:500;transition:all .2s ease}.constraint-editor-modal .modal-content::-webkit-scrollbar{width:6px}.constraint-editor-modal .modal-content::-webkit-scrollbar-track{background:var(--bg-secondary)}.constraint-editor-modal .modal-content::-webkit-scrollbar-thumb{background:#666;border-radius:3px}.constraint-editor-modal .modal-content::-webkit-scrollbar-thumb:hover{background:var(--accent-blue)}.zoom-buttons{display:flex;align-items:center;gap:var(--spacing-xs)}.zoom-btn{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);width:32px;height:32px;border-radius:var(--border-radius);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s ease}.zoom-btn:hover{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.zoom-level{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);font-size:11px;font-weight:500;min-width:50px;text-align:center}.zoom-actions{display:flex;flex-direction:column;gap:var(--spacing-xs)}.zoom-action-btn{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);cursor:pointer;font-size:11px;transition:all .2s ease;white-space:nowrap}.zoom-action-btn:hover:not(:disabled){background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.zoom-action-btn:disabled{opacity:.5;cursor:not-allowed}.point-search-filter{background:var(--bg-panel);border:1px solid #666;border-radius:var(--border-radius);margin-bottom:var(--spacing-md);overflow:hidden}.search-section{padding:var(--spacing-md);border-bottom:1px solid rgba(255,255,255,.1)}.search-input-container{position:relative;margin-bottom:var(--spacing-sm)}.search-input{width:100%;background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);padding:var(--spacing-xs) var(--spacing-lg) var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);font-size:13px;transition:all .2s ease}.search-input:focus{outline:none;border-color:var(--accent-blue);background:var(--bg-primary)}.search-input::placeholder{color:var(--text-muted);font-style:italic}.search-icon{position:absolute;right:var(--spacing-sm);top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:12px;pointer-events:none}.search-stats{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--text-secondary)}.clear-filters-btn{background:transparent;border:1px solid var(--accent-orange);color:var(--accent-orange);padding:2px 6px;border-radius:8px;cursor:pointer;font-size:10px;transition:all .2s ease}.clear-filters-btn:hover{background:var(--accent-orange);color:#fff}.filter-section{padding:var(--spacing-md);border-bottom:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.02)}.filter-row{display:flex;gap:var(--spacing-lg);margin-bottom:var(--spacing-sm)}.filter-row:last-child{margin-bottom:0}.filter-checkbox{display:flex;align-items:center;gap:var(--spacing-xs);cursor:pointer;font-size:12px;color:var(--text-secondary)}.filter-checkbox input[type=checkbox]{accent-color:var(--accent-blue)}.filter-select{display:flex;align-items:center;gap:var(--spacing-xs);font-size:12px;color:var(--text-secondary)}.filter-select select{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);padding:2px 6px;border-radius:var(--border-radius);font-size:11px}.sort-section{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:rgba(255,255,255,.02);border-bottom:1px solid rgba(255,255,255,.1)}.sort-control{display:flex;align-items:center;gap:var(--spacing-xs);font-size:12px;color:var(--text-secondary)}.sort-control select{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);padding:2px 6px;border-radius:var(--border-radius);font-size:11px}.sort-order-btn{background:var(--bg-secondary);border:1px solid #666;color:var(--text-primary);width:24px;height:24px;border-radius:var(--border-radius);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s ease}.sort-order-btn:hover{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.sort-order-btn.asc{color:var(--accent-green)}.sort-order-btn.desc{color:var(--accent-orange)}.points-list{max-height:400px;overflow-y:auto}.point-item{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid rgba(255,255,255,.05);cursor:pointer;transition:all .2s ease}.point-item:hover{background:rgba(255,255,255,.05)}.point-item:last-child{border-bottom:none}.point-main{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-xs)}.point-info{flex:1}.origin-badge,.locked-badge{font-size:10px}.point-details{display:flex;gap:var(--spacing-sm);font-size:11px;color:var(--text-muted)}.detail-item.missing{color:var(--accent-orange);font-weight:500}.point-coords{font-size:10px;color:var(--text-secondary);font-family:monospace;margin-bottom:var(--spacing-xs);padding-left:calc(12px + var(--spacing-sm))}.point-tags{display:flex;gap:var(--spacing-xs);padding-left:calc(12px + var(--spacing-sm))}.tag{background:rgba(6,150,215,.2);color:var(--accent-blue);padding:1px 4px;border-radius:6px;font-size:9px;font-weight:500}.no-results{padding:var(--spacing-xl);text-align:center;color:var(--text-muted)}.no-results-icon{font-size:24px;margin-bottom:var(--spacing-sm);opacity:.5}.no-results-text{font-size:13px;margin-bottom:var(--spacing-md)}.clear-search-btn{background:var(--accent-blue);color:#fff;border:none;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-size:12px;transition:all .2s ease}.clear-search-btn:hover{background:var(--accent-orange)}.points-list::-webkit-scrollbar{width:6px}.points-list::-webkit-scrollbar-track{background:var(--bg-secondary)}.points-list::-webkit-scrollbar-thumb{background:#666;border-radius:3px}.points-list::-webkit-scrollbar-thumb:hover{background:var(--accent-blue)}.empty-state-content{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.empty-state-content h3{margin:0 0 var(--spacing-sm) 0;color:var(--text-secondary);font-size:18px}.empty-state-content p{margin:0 0 var(--spacing-md) 0;color:var(--text-muted);font-size:14px;text-align:center}.empty-state-content .btn-primary{padding:var(--spacing-sm) var(--spacing-lg);font-size:14px}.floating-window-overlay{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;pointer-events:none!important;z-index:999999!important;transform:translateZ(0)!important;contain:none!important}.floating-window{position:fixed!important;background:var(--bg-panel)!important;border:1px solid var(--border)!important;border-radius:6px!important;box-shadow:0 8px 32px #0006!important;display:flex!important;flex-direction:column!important;pointer-events:auto!important;overflow:hidden!important;-webkit-backdrop-filter:blur(8px)!important;backdrop-filter:blur(8px)!important;transition:box-shadow .2s ease!important;transform:translateZ(0)!important;contain:none!important;margin:0!important;padding:0!important;inset:auto!important}.floating-window:hover{box-shadow:0 12px 40px #00000080}.floating-window.dragging{box-shadow:0 16px 48px #0009;transform:rotate(.5deg)}.floating-window-header{background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:var(--spacing-sm) var(--spacing-md);display:flex;align-items:center;justify-content:space-between;cursor:grab;-webkit-user-select:none;user-select:none;min-height:40px}.floating-window-header:active,.floating-window.dragging .floating-window-header{cursor:grabbing}.floating-window-title{margin:0;font-size:14px;font-weight:600;color:var(--text-primary);flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.floating-window-close{background:none;border:none;color:var(--text-muted);font-size:16px;cursor:pointer;padding:4px 8px;border-radius:var(--border-radius);transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:28px;height:28px}.floating-window-close:hover{background:var(--accent-red);color:#fff}.floating-window-content{flex:1;padding:var(--spacing-md);overflow:auto;min-height:0}.floating-window-footer{border-top:1px solid var(--border);padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-secondary)}.floating-window-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end}.floating-window-actions .btn-primary,.floating-window-actions .btn-secondary{min-width:80px;height:var(--button-height);font-size:13px}@media (max-width: 768px){.floating-window{max-width:95vw!important;max-height:90vh!important}.floating-window.edit-line-window{max-height:none!important;height:auto!important}.floating-window-content{padding:var(--spacing-sm)}.floating-window-actions{flex-direction:column-reverse;gap:var(--spacing-xs)}.floating-window-actions .btn-primary,.floating-window-actions .btn-secondary{width:100%;min-width:auto}}.edit-line-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.property-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.property-section h4{margin:0;font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--border)}.property-field{display:flex;flex-direction:column;gap:var(--spacing-xs)}.property-field label{font-size:12px;font-weight:500;color:var(--text-secondary)}.property-field input[type=text],.property-field select{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--border-radius);padding:var(--spacing-xs) var(--spacing-sm);color:var(--text-primary);font-size:13px;height:var(--input-height)}.property-field input[type=text]:focus,.property-field select:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 2px #0696d733}.checkbox-field{flex-direction:row!important;align-items:center;gap:var(--spacing-sm)!important}.checkbox-field label{display:flex;align-items:center;gap:var(--spacing-xs);font-size:13px;cursor:pointer}.checkbox-field input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-blue)}.color-selection{display:flex;flex-direction:column;gap:var(--spacing-sm)}.color-presets{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--spacing-xs)}.color-preset{width:32px;height:32px;border:2px solid transparent;border-radius:4px;cursor:pointer;transition:all .2s ease;background:var(--bg-secondary)}.color-preset:hover{transform:scale(1.1);border-color:var(--text-muted)}.color-preset.selected{border-color:var(--accent-blue);transform:scale(1.1);box-shadow:0 0 0 2px #0696d74d}.custom-color{display:flex;align-items:center;gap:var(--spacing-sm)}.custom-color input[type=color]{width:40px;height:32px;border:1px solid var(--border);border-radius:var(--border-radius);cursor:pointer;background:none}.color-value{font-family:Courier New,monospace;font-size:12px;color:var(--text-muted);background:var(--bg-secondary);padding:4px 8px;border-radius:var(--border-radius);border:1px solid var(--border)}.info-field{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-xs);background:var(--bg-secondary);border-radius:var(--border-radius);border:1px solid var(--border)}.info-field label{font-size:12px;font-weight:500;color:var(--text-muted)}.info-field span{font-size:12px;color:var(--text-primary)}.line-id{font-family:Courier New,monospace;font-size:10px!important;color:var(--text-muted)!important}.danger-warning{margin:var(--spacing-sm) 0 0 0;font-size:11px;color:var(--text-muted);font-style:italic}.line-preview{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background:var(--bg-secondary);border-radius:var(--border-radius);border:1px solid var(--border)}.preview-line{width:40px;height:3px;border-radius:2px;transition:all .2s ease}.sidebar-resize-handle{position:absolute;z-index:10;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.sidebar-resize-handle:before{content:"";position:absolute;background:var(--border);transition:all .3s ease}.sidebar-resize-handle:after{content:"â‹®â‹®";font-size:14px;color:var(--text-muted);opacity:0;transition:all .3s ease;pointer-events:none;transform:rotate(90deg);letter-spacing:-2px}.sidebar-resize-handle:hover:before{background:var(--accent-blue);box-shadow:0 0 8px #0696d766}.sidebar-resize-handle:hover:after{opacity:1;color:var(--accent-blue)}.sidebar-resize-handle:active:before{background:var(--accent-orange);box-shadow:0 0 12px #ff8c0099}.sidebar-resize-handle:active:after{color:var(--accent-orange)}.sidebar-resize-handle-right{top:0;right:-2px;width:8px;height:100%;cursor:ew-resize}.sidebar-resize-handle-right:before{width:2px;height:100%;right:2px}.resize-hint-panel{position:absolute;top:50%;right:12px;transform:translateY(-50%);background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-size:11px;color:var(--text-secondary);pointer-events:none;opacity:0;transition:all .3s ease;box-shadow:0 2px 8px #0003;z-index:15}.sidebar-left:hover .resize-hint-panel{opacity:1}.height-control{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--border-radius);padding:var(--spacing-sm);margin-top:var(--spacing-xs);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.height-control label{display:block;font-size:11px;color:var(--text-secondary);margin-bottom:var(--spacing-xs);font-weight:500}.height-slider{width:100%;height:4px;background:var(--bg-primary);border-radius:2px;outline:none;-webkit-appearance:none;cursor:pointer}.height-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:var(--accent-blue);border-radius:50%;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0003}.height-slider::-webkit-slider-thumb:hover{background:var(--accent-orange);transform:scale(1.1);box-shadow:0 4px 8px #0000004d}.height-slider::-moz-range-thumb{width:16px;height:16px;background:var(--accent-blue);border-radius:50%;cursor:pointer;border:none;transition:all .2s ease;box-shadow:0 2px 4px #0003}.height-slider::-moz-range-thumb:hover{background:var(--accent-orange);transform:scale(1.1);box-shadow:0 4px 8px #0000004d}.image-nav-item.dragging{opacity:.5;transform:rotate(2deg) scale(.95);z-index:100;cursor:grabbing;box-shadow:0 8px 24px #0006}.image-nav-item.drag-over{border-color:var(--accent-orange);background:rgba(255,140,0,.1);transform:scale(1.02);box-shadow:0 6px 20px #ff8c004d,0 0 0 2px #ff8c0066}.image-nav-item.drag-over:before{content:"";position:absolute;top:-4px;left:0;right:0;height:4px;background:var(--accent-orange);border-radius:2px;box-shadow:0 0 8px #ff8c0099}.image-nav-item[draggable=true]{cursor:grab}.image-nav-item[draggable=true]:active{cursor:grabbing}.image-info-right .image-drag-area{position:relative;width:28px;height:28px;background:rgba(255,255,255,.1);border-radius:4px;cursor:grab;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.image-info-right .image-drag-area:hover{background:var(--accent-blue)}.image-info-right .image-drag-area:active{cursor:grabbing;background:var(--accent-orange)}.image-info-right .drag-handle{width:16px;height:16px;display:flex;align-items:center;justify-content:center;opacity:.8;transition:all .3s ease}.image-info-right .image-drag-area:hover .drag-handle{opacity:1}.image-info-right .drag-dots{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr 1fr;gap:2px;width:8px;height:12px}.drag-dots span{width:3px;height:3px;background:var(--text-muted);border-radius:50%;transition:all .3s ease;animation:dragPulse 3s infinite ease-in-out;animation-delay:calc(var(--dot-index, 0) * .1s)}@keyframes dragPulse{0%,80%,to{opacity:.6;transform:scale(1)}40%{opacity:1;transform:scale(1.2)}}.image-info-right .image-drag-area:hover .drag-dots span{background:white;box-shadow:0 0 4px #ffffff80}.image-nav-item.dragging .image-info-right .image-drag-area{background:var(--accent-orange)}.image-nav-item.dragging .drag-dots span{background:white;box-shadow:0 0 8px #fffc;transform:scale(1.2)}.image-select-button{position:relative;width:24px;height:24px;border-radius:50%;border:2px solid rgba(255,255,255,.9);background:rgba(0,0,0,.7);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);flex-shrink:0;margin-right:-8px}.image-select-button:hover{background:rgba(0,0,0,.9);border-color:var(--accent-blue);transform:scale(1.2);box-shadow:0 2px 8px #0696d780}.image-select-button.selected{background:var(--accent-blue);border-color:#fff;color:#fff;font-weight:700;box-shadow:0 0 0 2px #0696d74d}.image-select-button.selected:hover{background:var(--accent-blue);transform:scale(1.15);box-shadow:0 0 0 2px #0696d780,0 2px 8px #0696d780}.world-point-item[draggable=true]{cursor:grab}.world-point-item[draggable=true]:active{cursor:grabbing}.world-point-item.dragging{opacity:.5;transform:scale(.95);transition:all .2s ease}.image-viewer canvas[data-drop-target=true]{background-color:#0696d71a;box-shadow:inset 0 0 0 2px #0696d74d}.toolbar-project-name{display:flex;align-items:center;margin-right:8px}.project-name-display{display:flex;align-items:center;gap:8px;padding:6px 12px;background:transparent;border:1px solid transparent;border-radius:4px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.project-name-display:hover{background:rgba(255,255,255,.1);border-color:#fff3}.project-name-display .edit-icon{font-size:10px;opacity:0;transition:opacity .15s ease}.project-name-display:hover .edit-icon{opacity:.6}.project-name-form{display:flex;align-items:center;gap:4px}.project-name-input{padding:6px 10px;background:#1a1a1a;border:1px solid #0066cc;border-radius:4px;color:#fff;font-size:14px;font-weight:500;width:200px}.project-name-input:focus{outline:none;border-color:#08f;box-shadow:0 0 0 2px #0066cc4d}.btn-small{padding:4px 8px!important;font-size:12px!important}.btn-home{margin-right:8px}.save-as-form{display:flex;align-items:center;gap:4px}.save-as-input{padding:6px 10px;background:#1a1a1a;border:1px solid #0066cc;border-radius:4px;color:#fff;font-size:13px;font-family:inherit;width:180px}.save-as-input:focus{outline:none;border-color:#08f;box-shadow:0 0 0 2px #0066cc4d}.btn-optimize:hover{background:var(--warning-hover)}.btn-optimize:active{transform:scale(.97);transition:transform .05s ease}.btn-optimize svg{font-size:14px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:10000}.modal-content{background:#2a2a2a;border-radius:8px;padding:24px;min-width:400px;max-width:500px;box-shadow:0 4px 20px #00000080}.modal-content h2{margin:0 0 16px;color:#fff;font-size:18px}.modal-input{width:100%;padding:12px;border:1px solid #444;border-radius:4px;background:#1a1a1a;color:#fff;font-size:14px;margin-bottom:16px;box-sizing:border-box}.modal-input:focus{outline:none;border-color:#4a9eff}.modal-actions .btn-secondary{padding:8px 16px;border:1px solid #444;border-radius:4px;background:transparent;color:#888;cursor:pointer}.modal-actions .btn-primary{padding:8px 16px;border:none;border-radius:4px;background:#4a9eff;color:#fff;cursor:pointer}.modal-actions .btn-primary:disabled{background:#333;color:#666;cursor:not-allowed}.btn-save-inline{display:flex;align-items:center;justify-content:center;width:28px;height:28px;margin-left:4px;background:transparent;border:1px solid transparent;border-radius:4px;color:#ffffff4d;cursor:default;transition:all .15s ease}.btn-save-inline:disabled{opacity:1}.btn-save-inline--dirty{background:rgba(74,222,128,.2);border-color:#4ade8066;color:#4ade80;cursor:pointer}.btn-save-inline--dirty:hover{background:rgba(74,222,128,.3);border-color:#4ade8099}.app-branding{display:flex;align-items:center;gap:10px}.app-branding--clickable{background:none;border:none;cursor:pointer;padding:6px 12px;border-radius:6px;transition:background-color .15s ease}.app-branding--clickable:hover{background:var(--bg-panel)}.app-branding__icon{flex-shrink:0}.app-branding__name{font-weight:600;color:var(--text-primary);letter-spacing:-.5px}.coord-clear-btn{position:absolute;right:2px;bottom:3px;background:rgba(0,0,0,.6);border:none;color:#999;cursor:pointer;font-size:14px;line-height:1;padding:2px 5px;border-radius:3px;transition:all .15s ease}.coord-clear-btn:hover{background:rgba(255,100,100,.8);color:#fff}.field-clear-btn{background:var(--surface-3, #3a3a3a);border:1px solid var(--border, #555);color:var(--text-secondary, #999);cursor:pointer;font-size:10px;padding:4px 6px;border-radius:3px;transition:all .15s ease;display:flex;align-items:center;justify-content:center}.field-clear-btn:hover{background:rgba(255,100,100,.3);border-color:#ff646480;color:#f66}.no-spinners::-webkit-outer-spin-button,.no-spinners::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.no-spinners[type=number]{-moz-appearance:textfield}.btn-help-labels{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:14px;transition:all .15s ease;margin-left:8px}.btn-help-labels:hover{background:var(--bg-panel);color:var(--text-primary);border-color:var(--border-hover)}.btn-help-labels.active{background:rgba(100,160,255,.15);color:#64a0ff;border-color:#64a0ff66}.btn-help-labels.active:hover{background:rgba(100,160,255,.25)}@keyframes popIn{0%{opacity:0;transform:scale(.5) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes exitConfirm{0%{opacity:1;transform:scale(1) translateY(0) rotate(0)}to{opacity:0;transform:scale(1.5) translateY(-30px) rotate(15deg)}}@keyframes exitCancel{0%{opacity:1;transform:scale(1) translateY(0) rotate(0)}to{opacity:0;transform:scale(.3) translateY(20px) rotate(-10deg)}}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}@keyframes pulseGlow{0%,to{box-shadow:0 0 20px #dc354566}50%{box-shadow:0 0 30px #dc354599}}.confirm-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:10000;opacity:0;transition:opacity .15s ease;pointer-events:none}.confirm-overlay.visible{opacity:1;pointer-events:auto}.confirm-overlay.exit-confirm,.confirm-overlay.exit-cancel{opacity:0;transition:opacity .25s ease;pointer-events:auto}.confirm-popover{background:linear-gradient(135deg,#2d2d2d 0%,#262626 100%);border:2px solid rgba(255,255,255,.15);border-radius:16px;padding:8px;box-shadow:0 12px 40px #000000b3,0 0 0 1px #ffffff14,inset 0 1px #ffffff26}.confirm-popover.visible{animation:popIn .35s cubic-bezier(.34,1.56,.64,1) both}.confirm-popover.exit-confirm{animation:exitConfirm .3s cubic-bezier(.68,-.55,.27,1.55) both!important}.confirm-popover.exit-cancel{animation:exitCancel .25s cubic-bezier(.55,.085,.68,.53) both!important}.confirm-message{color:#e0e0e0;font-size:13px;text-align:center;padding:4px 8px 8px;max-width:200px}.confirm-buttons{display:flex;gap:6px}.confirm-buttons button{width:44px;height:44px;border-radius:12px;cursor:pointer;font-size:18px;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;border:none}.confirm-buttons button:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(255,255,255,.3);transform:translate(-50%,-50%);transition:width .5s,height .5s}.confirm-buttons button:active:before{width:100px;height:100px}.confirm-buttons .btn-icon{font-size:20px;line-height:1;position:relative;z-index:1}.confirm-buttons .btn-cancel{background:rgba(255,255,255,.08);color:#e0e0e0;box-shadow:0 2px 8px #0000004d,inset 0 1px #ffffff1a}.confirm-buttons .btn-cancel:hover{background:rgba(255,255,255,.15);color:#fff;transform:translateY(-2px) scale(1.05);box-shadow:0 6px 16px #0006,inset 0 1px #fff3}.confirm-buttons .btn-confirm{color:#fff;box-shadow:0 4px 12px #0000004d,inset 0 1px #fff3}.confirm-buttons .btn-confirm.danger{background:linear-gradient(135deg,#ff4757 0%,#dc3545 100%)}.confirm-buttons .btn-confirm.danger:hover{background:linear-gradient(135deg,#ff3547 0%,#c82333 100%);transform:translateY(-3px) scale(1.08);box-shadow:0 8px 20px #dc354580,inset 0 1px #ffffff4d;animation:pulseGlow 1.5s infinite}.confirm-buttons .btn-confirm.primary{background:linear-gradient(135deg,#0ea5e9 0%,#0696d7 100%)}.confirm-buttons .btn-confirm.primary:hover{background:linear-gradient(135deg,#0284c7 0%,#0582bd 100%);transform:translateY(-3px) scale(1.08);box-shadow:0 8px 20px #0696d780,inset 0 1px #ffffff4d}.confirm-buttons button:active{transform:scale(.92)!important}.confirm-buttons .btn-confirm:hover:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);animation:shimmer 2s infinite}.line-creation-tool{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:16px;margin:8px 0;box-shadow:0 2px 8px #0000001a}.tool-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}.tool-header h4{margin:0;color:var(--text-primary);font-size:14px;font-weight:600}.btn-cancel{width:24px;height:24px;border:none;background:var(--surface-3);border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all .2s ease}.btn-cancel:hover{background:var(--danger);color:#fff}.tool-content{display:flex;flex-direction:column;gap:12px}.tool-message{padding:8px 12px;background:var(--primary-light);border-left:3px solid var(--primary);border-radius:4px;font-size:12px;color:var(--text-primary);font-weight:500}.tool-options{display:flex;flex-direction:column;gap:8px}.option-group{display:flex;flex-direction:column;gap:6px}.option-group>span{font-size:12px;font-weight:600;color:var(--text-secondary)}.radio-group{display:flex;gap:16px}.radio-group label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-primary);cursor:pointer}.radio-group input[type=radio]{margin:0}.selection-status{background:var(--surface-1);padding:8px 12px;border-radius:4px;border:1px solid var(--border)}.selected-points{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.point-tag{background:var(--primary);color:var(--primary-text);padding:2px 6px;border-radius:12px;font-size:10px;font-weight:600}.tool-actions{display:flex;gap:8px;justify-content:flex-end}.btn-create{padding:6px 12px;background:var(--primary);color:var(--primary-text);border:none;border-radius:4px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-create:hover:not(:disabled){background:var(--primary-dark)}.btn-create:disabled{background:var(--surface-3);color:var(--text-muted);cursor:not-allowed}.tool-help{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.help-text{font-size:11px;color:var(--text-muted);line-height:1.4}.help-text ul{margin:0;padding-left:16px}.help-text li{margin-bottom:2px}.creation-tools-panel{display:flex;flex-direction:column;gap:12px;background:var(--surface-1);padding:12px;border-radius:8px;border:1px solid var(--border);transition:width .2s ease,padding .2s ease;width:fit-content}.creation-tools-panel.collapsed{padding:8px;gap:8px}.tools-header{display:flex;flex-direction:column;gap:6px}.collapse-toggle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);color:var(--text-secondary);cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);margin-left:auto;position:relative;overflow:hidden}.collapse-toggle:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,var(--primary) 0%,var(--accent-blue) 100%);opacity:0;transition:opacity .25s ease}.collapse-toggle svg{position:relative;z-index:1;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.creation-tools-panel.collapsed .collapse-toggle{margin-left:0}.creation-tools-panel.collapsed .collapse-toggle svg{transform:rotate(180deg)}.collapse-toggle:hover{border-color:var(--primary);transform:scale(1.08);box-shadow:0 2px 8px #2196f340}.collapse-toggle:hover:before{opacity:1}.collapse-toggle:hover svg{color:#fff}.collapse-toggle:active{transform:scale(.95);transition:transform .1s ease}.tool-status-message{font-size:11px;color:var(--text-secondary);padding:4px 8px;background:var(--surface-2);border-radius:4px;border-left:2px solid var(--primary)}.tool-buttons{display:flex;flex-direction:column;gap:4px}.creation-tools-panel.collapsed .tool-buttons{align-items:center}.tool-divider{height:1px;background:var(--border);margin:6px 0;opacity:.5}.active-tool-panel{min-height:0}.point-creation-tool,.plane-creation-tool,.circle-creation-tool{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:12px}.selection-summary{display:flex;justify-content:space-between;padding:8px;background:var(--surface-2);border-radius:4px;border:1px solid var(--border);font-size:11px}.summary-item{display:flex;align-items:center;gap:4px}.summary-label{color:var(--text-secondary);font-weight:500}.summary-count{background:var(--primary);color:var(--primary-text);padding:2px 6px;border-radius:10px;font-weight:600;min-width:20px;text-align:center}.tool-button{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .15s ease;font-size:12px;color:var(--text-primary);position:relative}.creation-tools-panel.collapsed .tool-button{padding:8px;justify-content:center;width:fit-content}.tool-button:hover{background:var(--surface-3);border-color:var(--border-hover);transform:translate(2px)}.tool-button:active{transform:scale(.98);transition:transform .05s ease}.tool-button.active{background:var(--primary);color:var(--primary-text);border-color:var(--primary);box-shadow:inset 3px 0 0 var(--accent-blue)}.tool-button.active:hover{transform:none}.tool-button.disabled{opacity:.5;cursor:not-allowed;background:var(--surface-1)}.tool-button.disabled:hover{transform:none}.tool-icon{font-size:14px;width:16px;text-align:center}.creation-tools-panel.collapsed .tool-icon{font-size:16px;width:auto}.tool-label{font-weight:500}.tool-shortcut{margin-left:auto;font-size:10px;color:var(--text-muted);font-family:monospace}.fusion-line-creation-tool{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:16px;margin:8px 0;box-shadow:0 2px 8px #0000001a}.property-editor{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.property-row{display:grid;grid-template-columns:80px 1fr;gap:12px;align-items:center;padding:6px 8px;border-radius:4px;transition:all .2s ease}.property-row.active{background:var(--primary-light);border:1px solid var(--primary);box-shadow:0 0 0 2px #2196f31a}.property-label{font-size:12px;font-weight:600;color:var(--text-secondary);text-align:left;margin:0}.property-value{display:flex;align-items:center;gap:6px;position:relative}.btn-clear-icon{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:16px;height:16px;border:none;background:var(--surface-3);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--text-muted);cursor:pointer;transition:all .2s ease;z-index:2}.btn-clear-icon:hover{background:var(--danger);color:#fff;transform:translateY(-50%) scale(1.1)}.section-header{font-size:12px;font-weight:600;color:var(--text-secondary);margin:12px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--border)}.point-slots{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.slot-group{display:flex;flex-direction:column;gap:6px}.slot-group label{font-size:12px;font-weight:600;color:var(--text-secondary)}.slot-controls{display:flex;gap:8px;align-items:center}.point-slot-dropdown{flex:1;padding:6px 28px 6px 8px;border:1px solid var(--border);border-radius:4px;background:var(--surface-1);color:var(--text-primary);font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right 6px center;background-repeat:no-repeat;background-size:12px}.point-slot-dropdown:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #2196f333}.btn-clear-slot{padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--surface-3);color:var(--text-secondary);font-size:11px;cursor:pointer;transition:all .2s ease}.btn-clear-slot:hover:not(:disabled){background:var(--danger-light);color:var(--danger);border-color:var(--danger)}.btn-clear-slot:disabled{opacity:.5;cursor:not-allowed}.geometry-controls{margin-bottom:16px}.constraints-section{margin-bottom:16px;padding:12px;background:var(--surface-1);border-radius:6px;border:1px solid var(--border)}.section-label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.constraint-group{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.constraint-group:last-child{margin-bottom:0}.constraint-group label{font-size:11px;color:var(--text-primary);display:flex;align-items:center;gap:6px}.direction-dropdown{padding:4px 6px;border:1px solid var(--border);border-radius:4px;background:var(--surface-2);color:var(--text-primary);font-size:11px}.length-input{display:flex;align-items:center;gap:6px;flex:1}.length-value{flex:1;padding:6px 8px;border:1px solid var(--border);border-radius:4px;background:var(--surface-1);color:var(--text-primary);font-size:12px}.unit{font-size:11px;color:var(--text-muted);font-weight:500;white-space:nowrap}.direction-dropdown{flex:1;padding:6px 8px;border:1px solid var(--border);border-radius:4px;background:var(--surface-1);color:var(--text-primary);font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right 6px center;background-repeat:no-repeat;background-size:12px}.instructions{margin-bottom:16px;padding:8px 12px;background:var(--primary-light);border-left:3px solid var(--primary);border-radius:4px}.instruction-text{font-size:11px;color:var(--text-primary);font-style:italic}.action-buttons{display:flex;gap:8px;justify-content:flex-end}.btn-cancel-secondary{padding:8px 16px;border:1px solid var(--border);border-radius:4px;background:var(--surface-1);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .2s ease}.btn-cancel-secondary:hover{background:var(--surface-3);border-color:var(--border-hover)}.btn-create-line{padding:8px 16px;border:none;border-radius:4px;background:var(--primary);color:var(--primary-text);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-create-line:hover:not(:disabled){background:var(--primary-dark)}.btn-create-line:disabled{background:var(--surface-3);color:var(--text-muted);cursor:not-allowed}@media (max-width: 768px){.line-creation-tool{padding:12px}.radio-group{flex-direction:column;gap:8px}.tool-actions{justify-content:stretch}.btn-create{flex:1}.fusion-line-creation-tool{padding:12px}.slot-controls{flex-direction:column;align-items:stretch}.action-buttons{flex-direction:column}}.loop-trace-tool .tool-section{margin-bottom:16px}.loop-trace-tool .tool-section.compact{margin-bottom:8px;display:flex;align-items:center;gap:8px}.loop-trace-tool .tool-section:last-child{margin-bottom:0}.loop-trace-tool .tool-label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:6px}.loop-trace-tool .tool-label-inline{font-size:11px;font-weight:600;color:var(--text-secondary);min-width:50px;flex-shrink:0}.loop-trace-tool .tool-input-small{flex:1;padding:4px 8px;font-size:11px;background:var(--surface-1);border:1px solid var(--border);border-radius:4px;color:var(--text-primary)}.loop-trace-tool .tool-checkbox-inline{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-primary);cursor:pointer}.loop-trace-tool .tool-checkbox-inline input[type=checkbox]{margin:0;cursor:pointer}.loop-trace-tool .status-text{font-size:11px;color:var(--text-secondary)}.orientation-buttons{display:flex;gap:6px;flex-wrap:wrap}.orientation-buttons.compact{gap:4px;flex:1;flex-wrap:nowrap;justify-content:center}.orientation-buttons.compact .orientation-btn{min-width:0;flex:0 0 auto;padding:4px 8px;font-size:11px}.orientation-btn{flex:1;min-width:60px;padding:8px 12px;border:1px solid var(--border);border-radius:4px;background:var(--surface-1);color:var(--text-primary);font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease;text-align:center;display:flex;justify-content:center;align-items:center}.orientation-btn:hover{background:var(--surface-3);border-color:var(--border-hover)}.orientation-btn.active{background:var(--primary);color:var(--primary-text);border-color:var(--primary)}.tool-checkbox{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-primary);cursor:pointer}.tool-checkbox.disabled{color:var(--text-muted);cursor:not-allowed}.tool-checkbox input[type=checkbox]{cursor:inherit}.tool-checkbox input[type=checkbox]:disabled{opacity:.5}.chain-display{padding:12px;background:var(--surface-1);border:1px solid var(--border);border-radius:4px;font-size:12px;color:var(--text-primary);font-family:monospace;min-height:40px;display:flex;align-items:center}.status-summary{display:flex;flex-direction:column;gap:8px}.status-item{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-radius:4px;font-size:12px}.status-item.new{background:rgba(92,184,92,.1);border-left:3px solid #5cb85c}.status-item.existing{background:rgba(102,102,102,.1);border-left:3px solid #666}.status-label{color:var(--text-secondary);font-weight:500}.status-count{color:var(--text-primary);font-weight:600;background:var(--surface-3);padding:2px 8px;border-radius:10px;min-width:24px;text-align:center}.loop-trace-tool .btn-primary{padding:8px 16px;border:none;border-radius:4px;background:var(--primary);color:var(--primary-text);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s ease}.loop-trace-tool .btn-primary:hover:not(:disabled){background:var(--primary-dark)}.loop-trace-tool .btn-primary:disabled{background:var(--surface-3);color:var(--text-muted);cursor:not-allowed;opacity:.6}.loop-trace-tool .btn-secondary{padding:8px 16px;border:1px solid var(--border);border-radius:4px;background:var(--surface-1);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .2s ease}.loop-trace-tool .btn-secondary:hover{background:var(--surface-3);border-color:var(--border-hover)}.enhanced-workspace-manager{width:100%;height:100%;position:relative;overflow:hidden}.enhanced-workspace-manager.transitioning{pointer-events:none}.enhanced-workspace-manager.transitioning *{transition:opacity .1s ease-in-out}.workspace-switcher{display:flex;align-items:center;gap:8px;height:100%}.workspace-tabs{display:flex;gap:2px}.workspace-tab{display:flex;align-items:center;gap:6px;padding:6px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .2s ease;font-size:12px;color:var(--text-secondary);position:relative;min-width:90px}.workspace-tab:hover:not(.disabled){background:var(--surface-3);color:var(--text-primary);border-color:var(--border-hover)}.workspace-tab.active{background:var(--surface-primary);color:var(--text-primary);border-color:var(--primary);z-index:1}.workspace-tab.disabled{opacity:.4;cursor:not-allowed;background:var(--surface-1)}.workspace-icon{font-size:14px;display:flex;align-items:center}.workspace-name{font-weight:500;white-space:nowrap}.workspace-indicator{font-size:8px;margin-left:4px}.workspace-indicator.active{color:var(--primary)}.workspace-indicator.empty{color:var(--text-muted)}.workspace-controls{display:flex;align-items:center;gap:4px;margin-left:8px}.btn-workspace-action{width:24px;height:24px;border:1px solid var(--border);background:var(--surface-2);border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--text-secondary);transition:all .2s ease}.btn-workspace-action:hover{background:var(--surface-3);border-color:var(--border-hover);color:var(--text-primary)}.btn-workspace-action:active{transform:scale(.95)}.workspace-status{display:flex;align-items:center;gap:16px;font-size:12px;color:var(--text-secondary);height:100%;padding:0 16px}.workspace-status-section{display:flex;align-items:center;gap:6px}.status-label{color:var(--text-muted);font-weight:500}.status-value{color:var(--text-primary);font-weight:400}.status-value.workspace-name{font-weight:600}.status-count{background:var(--primary);color:var(--primary-text);padding:2px 6px;border-radius:10px;font-size:10px;font-weight:600}.status-indicator{display:flex;align-items:center;font-size:10px}.status-indicator.optimization{color:var(--success)}.split-view-container{width:100%;height:100%;display:grid;position:relative;overflow:hidden}.split-view-container.horizontal{grid-template-rows:1fr}.split-view-container.vertical{grid-template-columns:1fr}.split-panel{overflow:hidden;position:relative}.split-panel.left-panel{border-right:1px solid var(--border)}.split-panel.right-panel{border-left:1px solid var(--border)}.split-divider{background:var(--border);cursor:col-resize;position:relative;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;-webkit-user-select:none;user-select:none}.split-view-container.vertical .split-divider{cursor:row-resize}.split-divider:hover{background:var(--border-hover)}.split-divider.dragging{background:var(--primary)}.split-handle{color:var(--text-muted);font-size:12px;pointer-events:none;opacity:.6}.split-divider:hover .split-handle{opacity:1;color:var(--text-secondary)}.split-divider.dragging .split-handle{color:var(--primary-text);opacity:1}.workspace-image-view{background:var(--surface-1);width:100%;height:100%;position:relative;display:flex;flex-direction:column}.workspace-world-view{background:var(--surface-dark);width:100%;height:100%;position:relative;display:flex;flex-direction:column}.workspace-split-view{background:var(--surface-2);width:100%;height:100%;position:relative}.workspace-transition-enter{opacity:0;transform:translate(20px)}.workspace-transition-enter-active{opacity:1;transform:translate(0);transition:opacity .2s ease,transform .2s ease}.workspace-transition-exit{opacity:1;transform:translate(0)}.workspace-transition-exit-active{opacity:0;transform:translate(-20px);transition:opacity .2s ease,transform .2s ease}@media (max-width: 768px){.workspace-tab{min-width:60px;padding:4px 8px}.workspace-name{display:none}.workspace-icon{font-size:16px}.workspace-status{gap:8px;font-size:11px}.workspace-status-section{gap:4px}}@media (max-width: 480px){.workspace-status{display:none}.workspace-switcher{flex:1;justify-content:center}}.visibility-panel{position:relative;margin-left:12px;background:var(--surface-1, #1a1a1a);border:1px solid var(--border, #333);border-radius:6px}.visibility-panel__toggle{display:flex;align-items:center;gap:8px;padding:8px 16px;background:transparent;border:none;color:var(--text-primary, #e0e0e0);cursor:pointer;font-size:13px;font-weight:500;transition:all .2s ease}.visibility-panel__toggle:hover{color:var(--primary, #0696d7);background:var(--surface-2, #242424)}.visibility-panel__content{position:absolute;bottom:100%;right:0;margin-bottom:4px;padding:12px 16px 16px;min-width:300px;background:var(--surface-1, #1a1a1a);border:1px solid var(--border, #333);border-radius:6px;box-shadow:0 -4px 12px #00000080;animation:slideUp .2s ease-out;z-index:1000}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.visibility-panel__header{font-size:12px;font-weight:600;color:var(--text-secondary, #999);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border, #333);display:flex;justify-content:space-between;align-items:center}.visibility-panel__close{background:none;border:none;color:var(--text-secondary, #999);cursor:pointer;padding:4px 8px;font-size:14px;transition:color .2s ease}.visibility-panel__close:hover{color:var(--text, #fff)}.visibility-panel__options{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.visibility-panel__option{display:flex;justify-content:space-between;align-items:center;padding:8px;background:var(--surface-2, #242424);border:1px solid var(--border, #333);border-radius:4px;transition:all .2s ease;font-size:12px;color:var(--text-primary, #e0e0e0)}.visibility-panel__option:hover{background:var(--surface-3, #2a2a2a);border-color:var(--primary, #0696d7)}.visibility-panel__label{flex:1;-webkit-user-select:none;user-select:none}.visibility-panel__controls{display:flex;gap:8px}.visibility-panel__icon-toggle{background:transparent;border:1px solid var(--border, #555);border-radius:4px;padding:4px 8px;cursor:pointer;color:var(--text-secondary, #999);transition:all .2s ease;font-size:13px}.visibility-panel__icon-toggle.active{background:var(--primary, #0696d7);color:#fff;border-color:var(--primary, #0696d7)}.visibility-panel__icon-toggle.disabled{opacity:.5;cursor:not-allowed;color:var(--text-disabled, #666)}.visibility-panel__icon-toggle:hover:not(.disabled){background:var(--surface-3, #2a2a2a);border-color:var(--primary, #0696d7)}.visibility-panel__icon-toggle.active:hover:not(.disabled){background:var(--primary-hover, #0578b8)}.workspace-switcher{display:flex;align-items:center;gap:4px}.workspace-btn{padding:6px 14px;border:1px solid var(--border);border-radius:4px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s ease;font-size:13px;font-weight:500}.workspace-btn:hover{background:var(--bg-panel);color:var(--text-primary)}.workspace-btn:active{transform:scale(.97);transition:transform .05s ease}.workspace-btn.active{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}.workspace-indicator,.shortcut-hint{display:none}.world-view{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--surface);position:relative;overflow:hidden}.world-view-controls{position:relative;z-index:10;display:flex;align-items:center;gap:12px;padding:8px 16px;background:var(--surface-variant);border-bottom:1px solid var(--outline-variant);font-size:12px}.world-view-controls button{padding:4px 8px;border:1px solid var(--outline);border-radius:4px;background:var(--surface);color:var(--on-surface);cursor:pointer;font-size:11px}.world-view-controls button:hover{background:var(--surface-variant)}.world-view-controls label{display:flex;align-items:center;gap:4px;color:var(--on-surface-variant)}.world-view-canvas{position:absolute;left:0;right:0;bottom:0;width:100%;height:100%;cursor:grab;background:#f5f5f5}.world-view-canvas:active{cursor:grabbing}.world-view-info{position:absolute;bottom:8px;left:8px;background:rgba(0,0,0,.7);color:#fff;padding:8px 12px;border-radius:6px;font-size:11px;font-family:monospace;pointer-events:none}.world-view-info div{margin-bottom:2px}.world-view-info div:last-child{margin-bottom:0;opacity:.8;font-size:10px}.world-viewer-container{height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0;flex:1}.constraint-glyph{font-family:Segoe UI Symbol,Symbola,monospace;font-size:14px;font-weight:700;text-shadow:1px 1px 2px rgba(0,0,0,.3);-webkit-user-select:none;user-select:none;pointer-events:none}.constraint-glyph.satisfied{color:var(--color-satisfied)}.constraint-glyph.warning{color:var(--color-warning)}.constraint-glyph.violated{color:var(--color-violated)}.entity-selected{filter:drop-shadow(0 0 4px var(--color-selection))}.entity-hovered{filter:drop-shadow(0 0 2px rgba(255,255,255,.5))}.snap-cue{stroke:var(--color-selection);stroke-width:1;stroke-dasharray:2,2;fill:none;pointer-events:none;opacity:.8}.construction-line{stroke:var(--color-construction);stroke-width:1;stroke-dasharray:3,3;fill:none;pointer-events:none;opacity:.6}.entity-animate-in{animation:entityFadeIn .2s ease-out}.entity-animate-out{animation:entityFadeOut .15s ease-in}.constraint-preview{animation:constraintPulse 1s ease-in-out infinite;opacity:.7}@keyframes entityFadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes entityFadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes constraintPulse{0%,to{opacity:.5}50%{opacity:.9}}@media (max-width: 768px){.workspace-switcher{flex-direction:column;gap:4px}.workspace-btn{width:100%;text-align:center}.world-view-controls{flex-wrap:wrap;gap:8px}.world-view-info{font-size:10px;padding:6px 8px}}.project-browser{display:flex;flex-direction:column;height:100vh;background:var(--bg-primary);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.project-browser__actions{display:flex;gap:10px;margin-left:auto}.project-browser__btn{display:flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid var(--border);border-radius:4px;background:var(--bg-panel);color:var(--text-primary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.project-browser__btn:hover{background:var(--border);border-color:var(--border-hover)}.project-browser__btn--primary{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.project-browser__btn--primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.project-browser__btn--large{padding:14px 24px;font-size:16px}.project-browser__breadcrumb{display:flex;align-items:center;gap:4px;padding:12px 24px;background:var(--bg-primary);border-bottom:1px solid var(--border);font-size:13px}.project-browser__breadcrumb-item{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px 8px;border-radius:4px;transition:all .15s ease}.project-browser__breadcrumb-item:hover{background:var(--bg-panel);color:var(--text-primary)}.project-browser__breadcrumb-item:last-child{color:var(--text-primary);font-weight:500}.project-browser__breadcrumb-separator{color:var(--text-disabled)}.project-browser__new-folder{display:flex;align-items:center;gap:10px;padding:12px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border)}.project-browser__new-folder input{flex:1;max-width:300px;padding:8px 12px;border:1px solid var(--border);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:14px}.project-browser__new-folder input:focus{outline:none;border-color:var(--accent-blue)}.project-browser__new-folder button{padding:8px 16px;border:1px solid var(--border);border-radius:4px;background:var(--bg-panel);color:var(--text-primary);cursor:pointer;transition:all .15s ease}.project-browser__new-folder button:first-of-type{background:var(--accent-blue);border-color:var(--accent-blue)}.project-browser__new-folder button:hover{background:var(--border)}.project-browser__new-folder button:first-of-type:hover{background:var(--primary-hover)}.project-browser__content{flex:1;overflow-y:auto;padding:20px 24px;max-width:1200px}.project-browser__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:var(--text-muted);gap:15px}.project-browser__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:300px;color:var(--text-muted);text-align:center}.project-browser__empty h2{margin:40px 0 10px;color:var(--text-secondary)}.project-browser__empty p{margin:0 0 20px}.project-browser__empty-actions{display:flex;gap:24px;margin-top:8px}.project-browser__empty-card{display:flex;flex-direction:column;align-items:center;padding:32px 40px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;text-align:center;min-width:220px}.project-browser__empty-card h3{margin:0 0 8px;font-size:18px;color:var(--text-primary)}.project-browser__empty-card p{margin:0 0 20px;font-size:14px;color:var(--text-muted)}.project-browser__empty-card-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin-bottom:16px;border-radius:50%;background:rgba(74,158,255,.15);color:var(--accent-blue);font-size:28px}.project-browser__empty-card-icon--examples{background:rgba(240,192,64,.15);color:#f0c040}.project-browser__empty-card-icon--help{background:rgba(155,89,182,.15);color:#9b59b6}.project-browser__getting-started{margin-bottom:24px}.project-browser__getting-started--collapsible{border:1px solid var(--border);border-radius:8px;background:var(--bg-secondary)}.project-browser__getting-started-header{display:flex;align-items:center;gap:8px;width:100%;padding:12px 16px;background:transparent;border:none;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;text-align:left;transition:all .15s ease}.project-browser__getting-started-header:hover{color:var(--text-primary);background:rgba(255,255,255,.03)}.project-browser__getting-started-header--static{flex-direction:column;align-items:center;padding:40px 20px 20px;cursor:default;text-align:center}.project-browser__getting-started-header--static:hover{background:transparent}.project-browser__getting-started-header--static h2{margin:0 0 8px;color:var(--text-secondary);font-size:20px}.project-browser__getting-started-header--static p{margin:0;color:var(--text-muted);font-size:14px}.project-browser__getting-started-chevron{font-size:12px;opacity:.6;transition:transform .15s ease}.project-browser__getting-started-content{display:flex;gap:24px;padding:20px;justify-content:center}.project-browser__getting-started--collapsible .project-browser__getting-started-content{border-top:1px solid var(--border)}.project-browser__item{display:flex;align-items:center;gap:12px;padding:12px 16px;margin-bottom:4px;border-radius:8px;cursor:pointer;transition:all .15s ease}.project-browser__item:hover{background:var(--bg-secondary)}.project-browser__item--loading{opacity:.6;pointer-events:none}.project-browser__item--last-opened{background:rgba(74,158,255,.1);border:1px solid rgba(74,158,255,.3)}.project-browser__item--last-opened:hover{background:rgba(74,158,255,.15)}.project-browser__item-icon{font-size:20px;width:24px;text-align:center;color:var(--text-muted)}.project-browser__item-icon--folder{color:#f0c040}.project-browser__item-icon--project{color:#4a9eff}.project-browser__item-thumbnail{width:48px;height:48px;object-fit:cover;border-radius:6px;flex-shrink:0}.project-browser__item-name{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:120px;max-width:300px}.project-browser__item-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-muted)}.project-browser__item-date{font-size:12px;color:var(--text-muted);min-width:100px;text-align:right}.project-browser__item-actions{display:flex;gap:4px;opacity:0;transition:opacity .15s ease}.project-browser__item:hover .project-browser__item-actions{opacity:1}.project-browser__item-actions button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .15s ease}.project-browser__item-actions button:hover{background:var(--border);color:var(--text-primary)}.project-browser__item-actions button:last-child:hover{background:var(--error)}.project-browser__item input{flex:1;padding:4px 8px;border:1px solid var(--accent-blue);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:15px}.project-browser__item input:focus{outline:none}.project-browser__item--drag-over{background:#1a4d2e!important;border:2px dashed #4a9eff}.project-browser__item--dragging{opacity:.5}.project-browser__breadcrumb-item--drag-over{background:#1a4d2e!important;border:2px dashed #4a9eff}.project-browser__modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000}.project-browser__modal{background:var(--bg-secondary);border-radius:12px;padding:24px;min-width:400px;max-width:500px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080}.project-browser__modal h3{margin:0 0 16px;color:var(--text-primary);font-size:18px}.project-browser__modal-folders{display:flex;flex-direction:column;gap:4px;max-height:400px;overflow-y:auto;margin-bottom:16px}.project-browser__modal-folder{display:flex;align-items:center;gap:10px;padding:12px 16px;border:1px solid var(--border);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:all .15s ease;text-align:left}.project-browser__modal-folder:hover:not(:disabled){background:var(--bg-secondary);border-color:var(--accent-blue)}.project-browser__modal-folder:disabled{opacity:.5;cursor:not-allowed}.project-browser__modal-folder--current{border-color:var(--accent-blue);background:rgba(6,150,215,.2)}.project-browser__modal-current{margin-left:auto;font-size:12px;color:var(--text-muted)}.project-browser__modal-actions{display:flex;justify-content:flex-end;gap:10px}.project-browser__modal-actions button{padding:10px 20px;border:1px solid var(--border);border-radius:6px;background:var(--bg-panel);color:var(--text-primary);cursor:pointer;transition:all .15s ease}.project-browser__modal-actions button:hover{background:var(--border);border-color:var(--border-hover)}.project-browser__modal-input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);font-size:15px;margin-bottom:16px}.project-browser__modal-input:focus{outline:none;border-color:var(--accent-blue)}.project-browser__btn--optimize{background:linear-gradient(135deg,#f0c040 0%,#e6a800 100%);border-color:#e6a800;color:#1a1a1a}.project-browser__btn--optimize:hover:not(:disabled){background:linear-gradient(135deg,#ffd34d 0%,#f0c040 100%);border-color:#f0c040}.project-browser__btn--optimize:disabled{opacity:.6;cursor:not-allowed}.project-browser__item-optimization{display:flex;align-items:center;gap:6px;font-size:12px;padding:4px 8px;background:var(--bg-secondary);border-radius:4px;margin-left:auto;margin-right:8px}.project-browser__item-time{color:var(--text-muted);font-size:11px;margin-left:4px}@keyframes optimization-pulse{0%{background-color:#2ecc714d;box-shadow:0 0 #2ecc7166}50%{background-color:#2ecc7126;box-shadow:0 0 0 8px #2ecc7100}to{background-color:transparent;box-shadow:0 0 #2ecc7100}}.project-browser__item--just-completed{animation:optimization-pulse 1.5s ease-out}.project-browser__modal--wide{min-width:500px;max-width:700px}.project-browser__btn--small{padding:4px 10px;font-size:12px;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;color:var(--text-secondary);cursor:pointer}.project-browser__btn--small:hover{background:var(--border);color:var(--text-primary)}.examples-modal__list{display:flex;flex-direction:column;gap:8px;max-height:400px;overflow-y:auto;margin-bottom:16px}.examples-modal__item{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border:1px solid var(--border);border-radius:8px;background:var(--bg-primary);cursor:pointer;transition:all .15s ease}.examples-modal__item:hover{border-color:var(--accent-blue);background:var(--bg-secondary)}.examples-modal__item--imported{opacity:.6;cursor:default}.examples-modal__item--imported:hover{border-color:var(--border);background:var(--bg-primary)}.examples-modal__item input[type=checkbox]{margin-top:4px;flex-shrink:0}.examples-modal__item-content{flex:1;min-width:0}.examples-modal__item-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}.examples-modal__item-name{font-weight:500;color:var(--text-primary)}.examples-modal__item-description{margin:0;font-size:13px;color:var(--text-muted);line-height:1.4}.examples-modal__difficulty{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500}.examples-modal__difficulty--beginner{background:rgba(46,204,113,.2);color:#2ecc71}.examples-modal__difficulty--intermediate{background:rgba(241,196,15,.2);color:#f1c40f}.examples-modal__difficulty--advanced{background:rgba(231,76,60,.2);color:#e74c3c}.examples-modal__imported-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;font-size:11px;background:rgba(74,158,255,.2);color:#4a9eff}.examples-modal__concepts{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.examples-modal__concept{padding:2px 8px;border-radius:4px;font-size:11px;background:var(--bg-secondary);color:var(--text-muted)}.project-browser__dropdown{position:relative}.project-browser__dropdown-trigger{display:flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid var(--border);border-radius:4px;background:var(--bg-panel);color:var(--text-primary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.project-browser__dropdown-trigger:hover,.project-browser__dropdown-trigger--open{background:var(--border);border-color:var(--border-hover)}.project-browser__dropdown-trigger--open{border-bottom-left-radius:0;border-bottom-right-radius:0}.project-browser__dropdown-menu{position:absolute;top:100%;left:0;min-width:180px;background:var(--bg-panel);border:1px solid var(--border-hover);border-top:none;border-radius:0 0 4px 4px;box-shadow:0 4px 12px #0000004d;z-index:100;overflow:hidden}.project-browser__dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;border:none;background:transparent;color:var(--text-primary);font-size:13px;text-align:left;cursor:pointer;transition:background .1s ease}.project-browser__dropdown-item:hover:not(:disabled){background:var(--bg-secondary)}.project-browser__dropdown-item:disabled{opacity:.5;cursor:not-allowed}.project-browser__dropdown-item svg{width:14px;color:var(--text-muted)}.project-browser__dropdown-divider{height:1px;background:var(--border);margin:4px 0}.about-modal__overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000;padding:40px}.about-modal{position:relative;background:var(--bg-secondary);border-radius:12px;max-width:800px;max-height:90vh;width:100%;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080}.about-modal__close{position:absolute;top:16px;right:16px;width:32px;height:32px;border:none;border-radius:6px;background:var(--bg-primary);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1;transition:all .15s ease}.about-modal__close:hover{background:var(--border);color:var(--text-primary)}.about-modal__content{padding:32px 40px;overflow-y:auto;line-height:1.6}.about-modal__content h1{font-size:28px;font-weight:600;margin:0 0 16px;color:var(--text-primary)}.about-modal__content h2{font-size:22px;font-weight:600;margin:32px 0 16px;padding-bottom:8px;border-bottom:1px solid var(--border);color:var(--text-primary)}.about-modal__content h3{font-size:18px;font-weight:600;margin:24px 0 12px;color:var(--text-primary)}.about-modal__content p{margin:0 0 16px;color:var(--text-secondary)}.about-modal__content strong{color:var(--text-primary)}.about-modal__content hr{border:none;border-top:1px solid var(--border);margin:32px 0}.about-modal__content ul,.about-modal__content ol{margin:0 0 16px;padding-left:24px}.about-modal__content li{margin-bottom:8px;color:var(--text-secondary)}.about-modal__content code{background:var(--bg-primary);padding:2px 6px;border-radius:4px;font-family:Consolas,Monaco,monospace;font-size:14px;color:var(--accent-blue)}.about-modal__content a{color:var(--accent-blue);text-decoration:none}.about-modal__content a:hover{text-decoration:underline}.about-modal__table{width:100%;border-collapse:collapse;margin:16px 0;font-size:14px}.about-modal__table th,.about-modal__table td{padding:10px 12px;text-align:left;border:1px solid var(--border)}.about-modal__table th{background:var(--bg-primary);font-weight:600;color:var(--text-primary)}.about-modal__table td{color:var(--text-secondary)}.about-modal__table tr:nth-child(2n) td{background:rgba(0,0,0,.1)}.about-modal__image-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-primary);border:2px dashed var(--border);border-radius:8px;padding:40px 20px;margin:16px 0;text-align:center}.about-modal__image-placeholder span{color:var(--text-muted);font-size:14px;font-weight:500}.about-modal__image-placeholder small{color:var(--text-disabled);font-size:12px;margin-top:4px;font-family:monospace}.about-modal__content blockquote{margin:16px 0;padding:12px 20px;border-left:4px solid var(--accent-blue);background:var(--bg-primary);border-radius:0 8px 8px 0}.about-modal__content blockquote p{margin:0}.help-labels-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9500;pointer-events:none;overflow:hidden}.help-labels-connectors{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.help-label{position:absolute;background:rgba(25,35,55,.94);color:#d8e4f0;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:500;line-height:1.3;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 10px #00000080,0 0 0 1px #64a0ff40;border:1px solid rgba(100,160,255,.15);pointer-events:auto;cursor:default;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:labelFadeIn .25s ease-out}.help-label:hover{background:rgba(35,50,75,.96);box-shadow:0 4px 14px #0009,0 0 0 1px #64a0ff66}@keyframes labelFadeIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.help-label-connector path{transition:stroke-opacity .2s ease}.help-label-connector circle{transition:fill-opacity .2s ease}
