body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.auth-container{align-items:center;background:#f5f5f5;display:flex;justify-content:center;min-height:100vh}.auth-box{background:#fff;border:1px solid #ddd;border-radius:12px;display:flex;flex-direction:column;gap:12px;max-width:400px;padding:40px;width:100%}.auth-title{color:#2563eb;font-size:24px;font-weight:700;margin-bottom:4px}h2{color:#333;font-size:18px;font-weight:600;margin:0}input{border:1px solid #ddd;border-radius:6px;box-sizing:border-box;font-size:14px;outline:none;padding:10px 12px;width:100%}input:focus{border-color:#2563eb}button{font-weight:500;padding:11px;width:100%}.auth-error{background:#fef2f2;border:1px solid #fca5a5;border-radius:6px;color:#dc2626}.auth-error,.auth-message{font-size:13px;padding:10px 12px}.auth-message{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;color:#166534}.auth-switch{color:#666;font-size:13px;margin:0;text-align:center}.auth-switch span{color:#2563eb;cursor:pointer;font-weight:500}.auth-switch span:hover{text-decoration:underline}.dashboard{background:#f5f5f5;min-height:100vh}.dashboard-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;height:56px;justify-content:space-between;padding:0 32px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.dashboard-header h1{color:#2563eb;font-size:20px;font-weight:700}.dashboard-header-actions{align-items:center;display:flex;gap:8px}.logout-btn:hover{background:#f5f5f5}.dashboard-main{margin:0 auto;max-width:1100px;padding:32px 24px}.dashboard-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:24px}.toolbar-left{align-items:center;display:flex;gap:10px}.toolbar-left h2{font-size:22px;font-weight:600;margin:0}.project-count{background:#e5e7eb;border-radius:99px;color:#666;font-size:12px;font-weight:600;padding:2px 8px}.toolbar-right{align-items:center;display:flex;gap:10px}.search-input{background:#fff;border:1px solid #e5e7eb;border-radius:6px;font-size:14px;outline:none;padding:8px 12px;width:220px}.search-input:focus{border-color:#2563eb}.view-toggle{background:#fff;border:1px solid #e5e7eb;border-radius:6px;display:flex;overflow:hidden}.view-toggle button{background:#0000;border:none;border-radius:0;color:#9ca3af;cursor:pointer;font-size:16px;padding:6px 10px;width:auto}.view-toggle button.active{background:#eff6ff;color:#2563eb}.new-project-btn{background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;white-space:nowrap;width:auto}.new-project-btn:hover{background:#1d4ed8}.new-project-row{align-items:center;display:flex;gap:8px;margin-bottom:20px}.new-project-row input{border:1px solid #2563eb;border-radius:6px;flex:1 1;font-size:14px;max-width:400px;outline:none;padding:10px 12px}.new-project-row button{border:none;border-radius:6px;cursor:pointer;font-size:14px;padding:10px 16px;width:auto}.new-project-row button:first-of-type{background:#2563eb;color:#fff}.new-project-row button:first-of-type:disabled{background:#93c5fd;cursor:not-allowed}.cancel-btn{background:#fff!important;border:1px solid #e5e7eb!important;color:#666!important}.projects-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.projects-list{display:flex;flex-direction:column;gap:8px}.projects-list .project-card{align-items:center;flex-direction:row;padding:14px 16px}.projects-list .project-card-body{flex:1 1}.projects-list .project-name{font-size:15px}.projects-list .project-date{margin:0}.project-card{align-items:flex-start;background:#fff;border:1px solid #e5e7eb;border-radius:10px;cursor:pointer;display:flex;justify-content:space-between;padding:20px;position:relative;transition:box-shadow .15s,border-color .15s}.project-card:hover{border-color:#d1d5db;box-shadow:0 2px 8px #00000014}.project-card-body{flex:1 1;min-width:0}.project-name{color:#111;font-size:15px;font-weight:600;margin:0 0 6px}.project-date{color:#9ca3af;font-size:12px;margin:0}.rename-input{border:1px solid #2563eb;border-radius:4px;font-size:15px;font-weight:600;margin-bottom:6px;outline:none;padding:2px 6px;width:100%}.project-menu-wrap{position:relative}.project-menu-btn{background:#0000;border:none;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:18px;line-height:1;padding:2px 6px;width:auto}.project-menu-btn:hover{background:#f3f4f6;color:#333}.project-menu{background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 12px #0000001f;min-width:130px;overflow:hidden;position:absolute;right:0;top:28px;z-index:20}.project-menu button{background:#0000;border:none;border-radius:0;color:#333;cursor:pointer;display:block;font-size:14px;padding:10px 16px;text-align:left;width:100%}.project-menu button:hover{background:#f9fafb}.delete-option{color:#dc2626!important}.delete-option:hover{background:#fef2f2!important}.menu-backdrop{inset:0;position:fixed;z-index:15}.project-skeleton{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;border-radius:10px;height:100px}.empty-state{color:#666;padding:80px 20px;text-align:center}.empty-state p{color:#333;font-size:18px;font-weight:500;margin-bottom:8px}.empty-state span{display:block;font-size:14px;margin-bottom:24px}.empty-state button{background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px;width:auto}.dashboard-error{background:#fef2f2;border:1px solid #fca5a5;border-radius:8px;color:#dc2626;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;margin-bottom:16px;padding:10px 16px}.modal-overlay{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;position:fixed;z-index:50}.modal{background:#fff;border-radius:12px;max-width:380px;padding:28px;width:90%}.modal h3{font-size:18px;margin:0 0 8px}.modal p{color:#666;font-size:14px;margin:0 0 24px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.modal-actions button{border:none;border-radius:6px;cursor:pointer;font-size:14px;padding:8px 16px;width:auto}.modal-actions button:first-child{background:#f3f4f6;color:#333}.modal-actions button:first-child:hover{background:#e5e7eb}.delete-btn{background:#dc2626!important;color:#fff!important}.delete-btn:hover{background:#b91c1c!important}.settings-link{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#666;cursor:pointer;font-size:13px;padding:6px 12px;width:auto}.settings-link:hover{background:#f5f5f5}.repo-open-btn{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#374151;cursor:pointer;font-size:13px;font-weight:500;padding:6px 14px;width:auto}.repo-open-btn:hover{background:#f5f5f5}.license-warning-banner{background:#fffbeb;border-bottom:1px solid #fde68a;color:#92400e;font-size:13px;padding:10px 32px}.license-warning-banner a{color:#d97706;font-weight:600;text-decoration:underline}.repo-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:100}.repo-modal{background:#fff;border-radius:14px;box-shadow:0 20px 60px #0003;display:flex;flex-direction:column;max-height:85vh;max-width:860px;overflow:hidden;width:100%}.repo-modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;justify-content:space-between;padding:20px 24px 16px}.repo-modal-title{align-items:center;display:flex;gap:10px}.repo-modal-title h2{font-size:18px;font-weight:600;margin:0}.repo-count{background:#f3f4f6;border-radius:99px;color:#9ca3af;font-size:12px;padding:2px 8px}.repo-close-btn{background:#0000;border:none;border-radius:6px;color:#9ca3af;cursor:pointer;font-size:16px;padding:4px 8px;width:auto}.repo-close-btn:hover{background:#f3f4f6;color:#333}.repo-modal-toolbar{border-bottom:1px solid #f3f4f6;display:flex;flex-shrink:0;flex-wrap:wrap;gap:10px;padding:14px 24px}.repo-search{border:1px solid #e5e7eb;border-radius:6px;flex:1 1;font-size:14px;min-width:180px;outline:none;padding:8px 12px}.repo-search:focus{border-color:#2563eb}.repo-sort{background:#fff;border:1px solid #e5e7eb;border-radius:6px;cursor:pointer;font-size:13px;outline:none;padding:8px 10px}.repo-upload-btn{background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;white-space:nowrap;width:auto}.repo-upload-btn:disabled{background:#93c5fd;cursor:not-allowed}.repo-upload-btn:hover:not(:disabled){background:#1d4ed8}.repo-progress{align-items:center;background:#eff6ff;color:#1d4ed8;display:flex;flex-shrink:0;font-size:13px;gap:10px;padding:10px 24px}.repo-progress-bar{background:#dbeafe;border-radius:99px;flex:1 1;height:6px;overflow:hidden}.repo-progress-bar div{background:#2563eb;border-radius:99px;height:100%;transition:width .2s}.repo-error{background:#fef2f2;border:1px solid #fca5a5;border-radius:8px;color:#dc2626;cursor:pointer;display:flex;flex-shrink:0;font-size:13px;justify-content:space-between;margin:0 24px;padding:10px 14px}.repo-modal-body{flex:1 1;overflow-y:auto}.repo-loading{display:flex;flex-direction:column;gap:8px;padding:16px 24px}.repo-skeleton{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,#f5f5f5 25%,#ebebeb 50%,#f5f5f5 75%);background-size:200% 100%;border-radius:8px;height:44px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.repo-empty{align-items:center;color:#9ca3af;display:flex;flex-direction:column;justify-content:center;padding:60px 24px;text-align:center}.repo-empty-icon{font-size:40px;margin-bottom:12px}.repo-empty p{color:#374151;font-size:16px;font-weight:500;margin:0 0 6px}.repo-empty span{display:block;font-size:13px;margin-bottom:20px}.repo-empty button{background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:9px 18px;width:auto}.repo-table{border-collapse:collapse;width:100%}.repo-table thead tr{background:#f9fafb;border-bottom:1px solid #e5e7eb}.repo-table th{color:#9ca3af;font-size:11px;font-weight:600;letter-spacing:.05em;padding:10px 16px;text-align:left;text-transform:uppercase;white-space:nowrap}.repo-table tbody tr{border-bottom:1px solid #f3f4f6;transition:background .1s}.repo-table tbody tr:last-child{border-bottom:none}.repo-table tbody tr:hover{background:#f9fafb}.repo-table td{color:#374151;font-size:13px;padding:10px 16px;vertical-align:middle}.repo-name-cell{align-items:center;display:flex;gap:10px;max-width:320px}.repo-file-icon{flex-shrink:0;font-size:18px}.repo-filename{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repo-rename-input{border:1px solid #2563eb;border-radius:4px;flex:1 1;font-size:13px;min-width:0;outline:none;padding:4px 8px}.repo-type-badge{background:#f3f4f6;border-radius:4px;color:#6b7280;font-size:11px;font-weight:600;padding:2px 7px}.repo-muted{color:#9ca3af}.repo-actions-cell{text-align:right}.repo-action-btns{display:flex;gap:4px;justify-content:flex-end;opacity:0;transition:opacity .15s}.repo-table tbody tr:hover .repo-action-btns{opacity:1}.repo-action-btn{background:#0000;border:1px solid #e5e7eb;border-radius:5px;color:#6b7280;cursor:pointer;font-size:13px;line-height:1;padding:4px 7px;width:auto}.repo-action-btn:hover{background:#f3f4f6;border-color:#d1d5db;color:#111}.repo-action-delete:hover{background:#fef2f2!important;border-color:#fca5a5!important;color:#dc2626!important}.repo-confirm-overlay{align-items:center;background:#0000004d;border-radius:14px;display:flex;inset:0;justify-content:center;position:absolute;z-index:110}.repo-confirm{background:#fff;border-radius:12px;box-shadow:0 8px 24px #00000026;max-width:360px;padding:28px;width:90%}.repo-confirm h3{font-size:17px;margin:0 0 8px}.repo-confirm p{color:#666;font-size:14px;margin:0 0 20px}.repo-confirm-actions{display:flex;gap:10px;justify-content:flex-end}.repo-confirm-actions button{border:none;border-radius:6px;cursor:pointer;font-size:14px;padding:8px 16px;width:auto}.repo-confirm-actions button:first-child{background:#f3f4f6;color:#333}.repo-confirm-delete{background:#dc2626!important;color:#fff!important}.repo-confirm-delete:hover{background:#b91c1c!important}.bug-report-trigger{align-items:center;background:#f5f5f7;border:1px solid #d0d0d5;border-radius:6px;color:#333;cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:14px;line-height:1.2;padding:6px 12px;white-space:nowrap;width:auto}.bug-report-trigger:hover:not(:disabled){background:#ebebef}.bug-report-trigger-icon{font-size:16px;padding:6px 8px}.bug-report-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;position:fixed;z-index:10000}.bug-report-modal{background:#fff;border-radius:8px;box-shadow:0 10px 40px #00000040;color:#333;display:flex;flex-direction:column;gap:12px;max-height:88vh;overflow-y:auto;padding:20px;width:min(640px,92vw)}.bug-report-header{align-items:center;display:flex;gap:12px}.bug-report-header h3{color:#222;flex:1 1;font-size:18px;margin:0;min-width:0}.bug-report-modal .bug-report-close{align-items:center;background:none;border:none;border-radius:4px;color:#666;display:inline-flex;flex:0 0 auto;font-size:18px;height:28px;justify-content:center;line-height:1;padding:0;width:28px}.bug-report-modal .bug-report-close:hover:not(:disabled){background:#f0f0f3;color:#333}.bug-report-label{color:#444;display:flex;flex-direction:column;font-size:13px;gap:4px}.bug-report-label input,.bug-report-label textarea{background:#fff;border:1px solid #d0d0d5;border-radius:6px;color:#222;font:inherit;padding:8px;resize:vertical}.bug-report-dropzone{border:2px dashed #c0c0c8;border-radius:8px;color:#666;padding:16px;text-align:center}.bug-report-dropzone p{font-size:13px;margin:0 0 8px}.bug-report-dropzone small{color:#888;display:block;margin-top:6px}.bug-report-modal .bug-report-dropzone button{background:#fff;border:1px solid #c0c0c8;border-radius:6px;color:#333;cursor:pointer;font-size:14px;padding:6px 12px;width:auto}.bug-report-modal .bug-report-dropzone button:hover:not(:disabled){background:#f5f5f7}.bug-report-thumbs{display:flex;flex-wrap:wrap;gap:8px}.bug-report-thumb{border:1px solid #d0d0d5;border-radius:6px;height:96px;overflow:hidden;position:relative;width:96px}.bug-report-thumb img{display:block;height:100%;object-fit:cover;width:100%}.bug-report-modal .bug-report-thumb-remove{align-items:center;background:#0009;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:12px;height:20px;justify-content:center;line-height:1;padding:0;position:absolute;right:2px;top:2px;width:20px}.bug-report-modal .bug-report-thumb-remove:hover:not(:disabled){background:#000c}.bug-report-context{color:#666;font-size:12px}.bug-report-error{color:#b00020;font-size:13px}.bug-report-success{color:#2a7a2a;font-size:15px;padding:16px;text-align:center}.bug-report-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}.bug-report-modal .bug-report-actions button{background:#fff;border:1px solid #d0d0d5;border-radius:6px;color:#333;cursor:pointer;font:inherit;padding:8px 16px;width:auto}.bug-report-modal .bug-report-actions button:hover:not(:disabled){background:#f5f5f7}.bug-report-modal .bug-report-actions .bug-report-submit{background:#2a5cdc;border-color:#2a5cdc;color:#fff}.bug-report-modal .bug-report-actions .bug-report-submit:hover:not(:disabled){background:#1f4ab8;border-color:#1f4ab8}.bug-report-modal .bug-report-actions .bug-report-submit:disabled{background:#a0a8c0;border-color:#a0a8c0;color:#fff;cursor:not-allowed}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:#0000;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:#0000;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#0000;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 0.5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;background-color:var(--xy-background-color-default);background-color:var(--xy-background-color,var(--xy-background-color-default));direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:#0000;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:#0000;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 0.5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-default);background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{height:100%;left:0;position:absolute;top:0;width:100%}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{pointer-events:none;transform-origin:0 0;z-index:2}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke-default);stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width-default);stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke-default);stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width-default);stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;pointer-events:none;position:absolute}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path,.react-flow__edge.selected .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected-default);stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke-default);stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke-default);fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{overflow:visible;position:absolute;z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{box-sizing:border-box;cursor:default;pointer-events:all;position:absolute;transform-origin:0 0;-webkit-user-select:none;user-select:none}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{pointer-events:none;transform-origin:left top;z-index:3}.react-flow__nodesselection-rect{cursor:grab;pointer-events:all;position:absolute}.react-flow__handle{background-color:var(--xy-handle-background-color-default);background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;height:6px;min-height:5px;min-width:5px;pointer-events:none;position:absolute;width:6px}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{cursor:crosshair;pointer-events:all}.react-flow__handle-bottom{bottom:0;left:50%;top:auto;transform:translate(-50%,50%)}.react-flow__handle-top{left:50%;top:0;transform:translate(-50%,-50%)}.react-flow__handle-left{left:0;top:50%;transform:translate(-50%,-50%)}.react-flow__handle-right{right:0;top:50%;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{margin:15px;position:absolute;z-index:5}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.bottom.center,.react-flow__panel.top.center{left:50%;transform:translateX(-15px) translateX(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color-default);background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));font-size:10px;margin:0;padding:2px 3px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{pointer-events:none}.react-flow__edgelabel-renderer,.react-flow__viewport-portal{height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;user-select:none;width:100%}.react-flow__minimap{background:var(--xy-minimap-background-color-default);background:var(
    --xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default))
  )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-default);fill:var(
      --xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default))
    );stroke:var(--xy-minimap-mask-stroke-color-default);stroke:var(
      --xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default))
    );stroke-width:var(--xy-minimap-mask-stroke-width-default);stroke-width:var(
      --xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default))
    )}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-default);fill:var(
      --xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default))
    );stroke:var(--xy-minimap-node-stroke-color-default);stroke:var(
      --xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default))
    );stroke-width:var(--xy-minimap-node-stroke-width-default);stroke-width:var(
      --xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default))
    )}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-dots-color-default);fill:var(
      --xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default))
    )}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-lines-color-default);stroke:var(
      --xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default))
    )}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-cross-color-default);stroke:var(
      --xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default))
    )}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow-default);box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));display:flex;flex-direction:column}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{align-items:center;background:var(--xy-controls-button-background-color-default);background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(
        --xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default))
      );color:var(--xy-controls-button-color-default);color:var(
      --xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default))
    );cursor:pointer;display:flex;height:26px;justify-content:center;padding:4px;-webkit-user-select:none;user-select:none;width:26px}.react-flow__controls-button svg{fill:currentColor;max-height:12px;max-width:12px;width:100%}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-group,.react-flow__node-input,.react-flow__node-output{background-color:var(--xy-node-background-color-default);background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));border:var(--xy-node-border,var(--xy-node-border-default));border-radius:var(--xy-node-border-radius-default);border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));color:var(--xy-node-color-default);color:var(--xy-node-color,var(--xy-node-color-default));font-size:12px;padding:10px;text-align:center;width:150px}.react-flow__node-default.selectable:hover,.react-flow__node-group.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover-default);box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected-default);box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color-default);background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color-default);background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-default);background:var(
        --xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default))
      );color:var(--xy-controls-button-color-hover-default);color:var(
        --xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default))
      )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(
        --xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default))
      )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.bottom,.react-flow__resize-control.top{cursor:ns-resize}.react-flow__resize-control.bottom.right,.react-flow__resize-control.top.left{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color-default);background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;height:5px;translate:-50% -50%;width:5px}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.bottom.left,.react-flow__resize-control.handle.top.left{left:0}.react-flow__resize-control.handle.bottom.right,.react-flow__resize-control.handle.top.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{height:100%;top:0;transform:translate(-50%);width:1px}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.bottom,.react-flow__resize-control.line.top{height:1px;left:0;transform:translateY(-50%);width:100%}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color-default);fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color-default);fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}.tile-status-dot{border-radius:50%;box-sizing:border-box;display:inline-block;flex-shrink:0;height:10px;transition:background-color .15s,border-color .15s;width:10px}.tile-status-dot-complete{background-color:#10b981;border:2px solid #10b981}.tile-status-dot-incomplete{background-color:initial;border:2px solid #94a3b8}.node{background:#fff;border:2px solid #e5e7eb;border-radius:10px;box-shadow:0 2px 8px #00000014;cursor:pointer;min-width:190px}.node-selected{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb26}.node-header{align-items:center;border-radius:8px 8px 0 0;color:#fff;display:flex;font-size:13px;font-weight:600;gap:8px;padding:8px 12px}.node-header-cad{background:#2563eb}.node-header-mesh{background:#7c3aed}.node-icon{font-size:14px}.node-title{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-body{min-height:32px;padding:8px 0}.node-ports{display:flex;justify-content:space-between}.node-inputs,.node-outputs{display:flex;flex-direction:column;gap:4px}.node-port{align-items:center;display:flex;height:22px;position:relative}.node-port-left{padding-left:14px}.node-port-right{justify-content:flex-end;padding-right:14px}.port-label{color:#6b7280;font-size:11px;padding:0 8px}.handle{border:2px solid #fff!important;height:10px!important;width:10px!important}.handle-in{background:#10b981!important;left:0!important}.handle-out{background:#f59e0b!important;right:0!important}.node-delete-btn{background:#0000;border:none;border-radius:3px;color:#ffffff80;cursor:pointer;flex-shrink:0;font-size:11px;line-height:1;opacity:0;padding:0 2px;transition:opacity .15s,color .15s;width:auto}.node:hover .node-delete-btn{opacity:1}.node-delete-btn:hover{background:#fff3;color:#fff!important}.node-header-bc{background:#059669}.node-header-material{background:#ea580c}.node-header-solver{background:#0891b2}.node-export{border-color:#1d4ed8}.node-header-export{background:linear-gradient(135deg,#1e3a8a,#1d4ed8)}.node-export.node-selected{box-shadow:0 0 0 2px #3b82f6,0 4px 20px #3b82f64d}.node-header-spt{background:#be185d}.node-header-spt-solver{background:#0d9488}.node-header-spt-predictor{background:#4f46e5}.node-header-lpbf{background:#ea580c}.node-header-am-input{background:#dc2626}.cad-viewer{background:#f1f3f5;display:flex;flex-direction:column;height:100%;overflow:hidden;width:100%}.cad-viewer-toolbar{align-items:center;background:#1e2127;display:flex;flex-shrink:0;justify-content:space-between;padding:6px 12px}.cad-viewer-title{color:#9ca3af;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.cad-toolbar-group{display:flex;gap:4px}.cad-toolbar-btn{background:#2c313a;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:11px;padding:4px 10px;transition:background .1s,color .1s;width:auto}.cad-toolbar-btn:hover{background:#373d49;color:#e0e4ea}.cad-toolbar-btn.active{background:#1a3a5c;border-color:#2563eb;color:#60a5fa}.cad-viewer-body{flex:1 1;overflow:hidden;position:relative}.cad-viewer-canvas{height:100%;overflow:hidden;position:relative;width:100%}.cad-viewer-canvas canvas{display:block;height:100%!important;width:100%!important}.cad-viewer-empty,.cad-viewer-error,.cad-viewer-loading{align-items:center;display:flex;flex-direction:column;inset:0;justify-content:center;pointer-events:none;position:absolute;z-index:5}.cad-viewer-empty-icon{font-size:48px;margin-bottom:12px;opacity:.3}.cad-viewer-empty p{color:#6b7280;font-size:15px;font-weight:500;margin:0 0 6px}.cad-viewer-empty span{color:#9ca3af;font-size:12px}.cad-viewer-spinner{animation:cad-spin .7s linear infinite;border:3px solid #e5e7eb;border-radius:50%;border-top-color:#2563eb;height:36px;margin-bottom:12px;width:36px}@keyframes cad-spin{to{transform:rotate(1turn)}}.cad-viewer-loading p{color:#6b7280;font-size:13px;margin:0}.cad-viewer-error p{color:#dc2626;font-size:13px;padding:20px}.cad-view-cube{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#16191fe0;border:1px solid #3d434f;border-radius:8px;flex-direction:column;padding:7px;position:absolute;right:12px;top:12px;z-index:10}.cad-view-cube,.cad-view-cube-row{align-items:center;display:flex;gap:3px}.cad-view-cube-row{justify-content:center}.cad-view-cube-sep{background:#3d434f;height:1px;margin:2px 0;width:100%}.cad-cube-btn{align-items:center;background:#2c313a;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;display:flex;font-size:10px;font-weight:600;height:26px;justify-content:center;letter-spacing:.02em;min-width:36px;padding:3px 7px;transition:background .1s,color .1s;width:auto}.cad-cube-btn:hover{background:#373d49;border-color:#555c6b;color:#e0e4ea}.cad-cube-btn.active{background:#1a3a5c;border-color:#2563eb;color:#60a5fa}.cad-cube-iso{background:#252b35}.cad-viewer-hint{background:#1e2127;color:#6b7280;flex-shrink:0;font-size:10px;letter-spacing:.02em;padding:4px 12px;text-align:center}.cad-face-tooltip{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#16191fe0;border:1px solid #3d434f;border-radius:6px;bottom:14px;color:#c9cdd4;display:flex;font-size:11px;gap:8px;left:14px;padding:6px 10px;pointer-events:none;position:absolute;z-index:10}.cad-face-tooltip-type{color:#60a5fa;font-weight:700}.cad-face-panel{background:#fff;border-left:1px solid #e5e7eb;display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;width:200px}.cad-face-panel-header{align-items:center;border-bottom:1px solid #f3f4f6;color:#374151;display:flex;flex-shrink:0;font-size:11px;font-weight:700;justify-content:space-between;letter-spacing:.06em;padding:10px 12px;text-transform:uppercase}.cad-face-panel-header button{background:#0000;border:none;border-radius:3px;color:#9ca3af;cursor:pointer;font-size:12px;padding:2px 4px;width:auto}.cad-face-panel-header button:hover{background:#f3f4f6;color:#333}.cad-face-panel-body{padding:10px 12px}.cad-face-row{display:flex;flex-direction:column;margin-bottom:10px}.cad-face-row label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.05em;margin-bottom:2px;text-transform:uppercase}.cad-face-row span{color:#111;font-size:12px;font-weight:500}.cad-face-type-badge{background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;color:#1d4ed8!important;display:inline-block;font-size:11px!important;font-weight:600!important;padding:2px 7px}.cad-face-mono{color:#374151!important;font-family:monospace!important;font-size:11px!important;word-break:break-all}.mesh-viewer{background:#1a1a2e;display:flex;flex-direction:column;height:100%;overflow:hidden;width:100%}.mesh-viewer-toolbar{align-items:center;background:#16213e;display:flex;flex-shrink:0;justify-content:space-between;padding:6px 12px}.mesh-viewer-title{color:#9ca3af;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.mesh-toolbar-group{display:flex;gap:4px}.mesh-toolbar-btn{background:#1a1a2e;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:11px;padding:4px 10px;transition:background .1s,color .1s;width:auto}.mesh-toolbar-btn:hover{background:#252537;color:#e0e4ea}.mesh-toolbar-btn.active{background:#2d1b69;border-color:#7c3aed;color:#a78bfa}.mesh-viewer-body{flex:1 1;overflow:hidden;position:relative}.mesh-viewer-canvas{height:100%;overflow:hidden;position:relative;width:100%}.mesh-viewer-canvas canvas{display:block;height:100%!important;width:100%!important}.mesh-viewer-empty,.mesh-viewer-error,.mesh-viewer-loading{align-items:center;display:flex;flex-direction:column;inset:0;justify-content:center;pointer-events:none;position:absolute;z-index:5}.mesh-viewer-empty-icon{font-size:48px;margin-bottom:12px;opacity:.3}.mesh-viewer-empty p{color:#6b7280;font-size:15px;font-weight:500;margin:0 0 6px}.mesh-viewer-empty span{color:#4b5563;font-size:12px}.mesh-viewer-spinner{animation:mesh-spin .7s linear infinite;border:3px solid #2d1b69;border-radius:50%;border-top-color:#7c3aed;height:36px;margin-bottom:12px;width:36px}@keyframes mesh-spin{to{transform:rotate(1turn)}}.mesh-viewer-loading p{color:#6b7280;font-size:13px;margin:0}.mesh-viewer-error p{color:#dc2626;font-size:13px;padding:20px}.mesh-view-cube{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10152ee6;border:1px solid #3d434f;border-radius:8px;flex-direction:column;padding:7px;position:absolute;right:12px;top:12px;z-index:10}.mesh-view-cube,.mesh-view-cube-row{align-items:center;display:flex;gap:3px}.mesh-view-cube-row{justify-content:center}.mesh-view-cube-sep{background:#3d434f;height:1px;margin:2px 0;width:100%}.mesh-cube-btn{align-items:center;background:#1a1a2e;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;display:flex;font-size:10px;font-weight:600;height:26px;justify-content:center;letter-spacing:.02em;min-width:36px;padding:3px 7px;transition:background .1s,color .1s;width:auto}.mesh-cube-btn:hover{background:#252537;border-color:#555c6b;color:#e0e4ea}.mesh-cube-btn.active{background:#2d1b69;border-color:#7c3aed;color:#a78bfa}.mesh-cube-iso,.mesh-viewer-hint{background:#16213e}.mesh-viewer-hint{color:#4b5563;flex-shrink:0;font-size:10px;letter-spacing:.02em;padding:4px 12px;text-align:center}.solver-viewer{background:#1a1a2e;display:flex;flex-direction:column;height:100%;overflow:hidden;width:100%}.solver-viewer-toolbar{align-items:center;background:#16213e;display:flex;flex-shrink:0;justify-content:space-between;padding:6px 12px}.solver-viewer-title{color:#9ca3af;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.solver-toolbar-group{display:flex;gap:4px}.solver-toolbar-btn{background:#1a1a2e;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:11px;padding:4px 10px;transition:background .1s,color .1s;width:auto}.solver-toolbar-btn:hover{background:#252537;color:#e0e4ea}.solver-toolbar-btn.active{background:#0c3d4f;border-color:#0891b2;color:#67e8f9}.solver-viewer-body{flex:1 1;overflow:hidden;position:relative}.solver-viewer-canvas{height:100%;overflow:hidden;position:relative;width:100%}.solver-viewer-canvas canvas{display:block;height:100%!important;width:100%!important}.solver-viewer-empty,.solver-viewer-error,.solver-viewer-loading{align-items:center;display:flex;flex-direction:column;inset:0;justify-content:center;pointer-events:none;position:absolute;z-index:5}.solver-viewer-empty-icon{font-size:48px;margin-bottom:12px;opacity:.3}.solver-viewer-empty p{color:#6b7280;font-size:15px;font-weight:500;margin:0 0 6px}.solver-viewer-empty span{color:#4b5563;font-size:12px}.solver-viewer-spinner{animation:solver-spin .7s linear infinite;border:3px solid #0c3d4f;border-radius:50%;border-top-color:#0891b2;height:36px;margin-bottom:12px;width:36px}@keyframes solver-spin{to{transform:rotate(1turn)}}.solver-viewer-loading p{color:#6b7280;font-size:13px;margin:0}.solver-viewer-error p{color:#dc2626;font-size:13px;padding:20px}.solver-colorbar{align-items:center;display:flex;flex-direction:column;gap:4px;left:12px;position:absolute;top:50%;transform:translateY(-50%);z-index:10}.solver-colorbar-max,.solver-colorbar-min{background:#10152ecc;border-radius:3px;color:#e0e4ea;font-size:10px;font-weight:600;padding:2px 4px}.solver-colorbar-gradient{background:linear-gradient(180deg,#b40404,#fff,#3b4cc0);border:1px solid #3d434f;border-radius:4px;height:120px;width:14px}.solver-view-cube{align-items:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10152ee6;border:1px solid #3d434f;border-radius:8px;display:flex;flex-direction:column;gap:3px;padding:7px;position:absolute;right:12px;top:12px;z-index:10}.solver-view-cube-row{align-items:center;display:flex;gap:3px;justify-content:center}.solver-view-cube-sep{background:#3d434f;height:1px;margin:2px 0;width:100%}.solver-cube-btn{align-items:center;background:#1a1a2e;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;display:flex;font-size:10px;font-weight:600;height:26px;justify-content:center;min-width:36px;padding:3px 7px;transition:background .1s,color .1s;width:auto}.solver-cube-btn:hover{background:#252537;border-color:#555c6b;color:#e0e4ea}.solver-cube-btn.active{background:#0c3d4f;border-color:#0891b2;color:#67e8f9}.solver-cube-iso{background:#16213e}.solver-viewer-hint{background:#16213e;color:#4b5563;flex-shrink:0;font-size:10px;letter-spacing:.02em;padding:4px 12px;text-align:center}.bc-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.bc-section{border-bottom:1px solid #f3f4f6;flex-shrink:0;padding:12px 14px}.bc-section-grow{flex:1 1;overflow-y:auto}.bc-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.bc-section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.bc-prop-row{margin-bottom:8px}.bc-prop-row label{color:#6b7280;display:block;font-size:11px;font-weight:600;margin-bottom:4px}.bc-prop-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.bc-prop-row input:focus{border-color:#059669}.bc-input-item{align-items:center;display:flex;gap:8px;margin-bottom:8px}.bc-input-icon{flex-shrink:0;font-size:16px}.bc-input-info{flex:1 1;min-width:0}.bc-input-label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.bc-input-value{color:#111;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bc-missing{color:#9ca3af;font-style:italic;font-weight:400}.bc-add-btn{background:#059669;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:11px;font-weight:600;padding:4px 10px;width:auto}.bc-add-btn:hover:not(:disabled){background:#047857}.bc-add-btn:disabled{background:#9ca3af;cursor:not-allowed}.bc-empty,.bc-loading{color:#9ca3af;font-size:12px;line-height:1.5;padding:12px 0;text-align:center}.bc-list{display:flex;flex-direction:column;gap:6px}.bc-item{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.bc-item-expanded{border-color:#059669}.bc-item-header{align-items:center;background:#f9fafb;cursor:pointer;display:flex;gap:8px;padding:8px 10px}.bc-item-header:hover{background:#f3f4f6}.bc-item-expanded .bc-item-header{background:#ecfdf5}.bc-color-dot{border-radius:50%;flex-shrink:0;height:10px;width:10px}.bc-item-info{flex:1 1;min-width:0}.bc-item-name{color:#111;display:block;font-size:12px;font-weight:600}.bc-item-face{color:#9ca3af;font-size:10px}.bc-item-actions{align-items:center;display:flex;gap:4px}.bc-item-chevron{color:#9ca3af;font-size:9px}.bc-delete-btn{background:#0000;border:none;border-radius:3px;color:#9ca3af;cursor:pointer;font-size:11px;padding:2px 4px;width:auto}.bc-delete-btn:hover{background:#fee2e2;color:#dc2626}.bc-item-editor{background:#fff;border-top:1px solid #e5e7eb;gap:8px;padding:10px}.bc-editor-row,.bc-item-editor{display:flex;flex-direction:column}.bc-editor-row{gap:3px}.bc-editor-row label{align-items:center;color:#6b7280;display:flex;font-size:10px;font-weight:600;gap:4px;letter-spacing:.04em;text-transform:uppercase}.bc-unit{background:#f3f4f6;border-radius:3px;color:#9ca3af;font-size:9px;font-weight:400;padding:1px 4px;text-transform:none}.bc-editor-row input,.bc-editor-row select{border:1px solid #e5e7eb;border-radius:5px;box-sizing:border-box;font-size:12px;outline:none;padding:5px 7px;width:100%}.bc-editor-row input:focus,.bc-editor-row select:focus{border-color:#059669}.bc-face-display{background:#f9fafb;border:1px solid #e5e7eb;border-radius:5px;font-size:12px;padding:5px 7px}.bc-face-assigned{color:#059669;font-weight:600}.bc-face-hint{color:#9ca3af;font-style:italic}.bc-port-row{align-items:center;display:flex;gap:8px}.bc-port-chip{border-radius:99px;font-size:11px;font-weight:500;padding:2px 8px}.bc-port-chip-out{background:#fef3c7;color:#92400e}.bc-port-desc,.bc-saving{color:#9ca3af;font-size:11px}.bc-saving{margin-top:6px}.bc-mapping-status{display:flex;flex-direction:column;gap:6px}.bc-mapping-phase{color:#374151;font-size:11px;font-weight:500}.bc-mapping-bar{background:#e5e7eb;border-radius:99px;height:5px;overflow:hidden}.bc-mapping-fill{background:#059669;border-radius:99px;height:100%;transition:width .5s ease}.bc-mapping-footer{align-items:center;display:flex;justify-content:space-between}.bc-mapping-pct{font-weight:600}.bc-mapping-cancel-btn{background:#0000;border:1px solid #fca5a5;border-radius:5px;color:#dc2626;cursor:pointer;font-size:11px;padding:3px 8px;width:auto}.bc-mapping-cancel-btn:hover{background:#fef2f2}.bc-mapping-restart-btn{background:#059669;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:12px;margin-top:4px;padding:5px 12px;width:100%}.bc-mapping-restart-btn:hover{background:#047857}.bc-mapping-cancelled-msg{color:#6b7280;font-size:11px;font-style:italic;line-height:1.4;margin-top:4px}.material-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.mat-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.mat-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.mat-prop-row{margin-bottom:10px}.mat-prop-row label{align-items:center;color:#6b7280;display:flex;font-size:11px;font-weight:600;gap:6px;margin-bottom:4px}.mat-prop-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.mat-prop-row input:focus{border-color:#ea580c}.mat-const-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.mat-const-cell label{align-items:center;color:#6b7280;display:flex;font-size:11px;font-weight:600;gap:4px;margin-bottom:3px}.mat-const-cell input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:12px;outline:none;padding:5px 7px;width:100%}.mat-const-cell input:focus{border-color:#ea580c}.mat-unit{background:#f3f4f6;border-radius:3px;color:#9ca3af;font-size:10px;font-weight:400;padding:1px 5px}.mat-port-row{display:flex;gap:16px;margin-top:4px}.mat-port-label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.05em;margin-bottom:4px;text-transform:uppercase}.mat-port-chip{border-radius:99px;font-size:11px;font-weight:500;padding:2px 8px}.mat-port-chip-in{background:#f3f4f6;color:#9ca3af}.mat-port-chip-out{background:#fef3c7;color:#92400e}.mat-type-group{display:flex;flex-direction:column;gap:6px}.mat-type-btn{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;color:#374151;cursor:pointer;font-size:12px;font-weight:500;padding:8px 10px;text-align:left;width:100%}.mat-type-btn:hover:not(:disabled){background:#f3f4f6}.mat-type-btn:disabled{cursor:not-allowed;opacity:.45}.mat-type-btn-active{background:#fff7ed;border-color:#ea580c;color:#ea580c;font-weight:600}.mat-preset-group{display:flex;flex-wrap:wrap;gap:6px}.mat-preset-btn{background:#f9fafb;border:1px solid #e5e7eb;border-radius:99px;color:#374151;cursor:pointer;font-size:11px;font-weight:500;padding:4px 10px;width:auto}.mat-preset-btn:hover{background:#f3f4f6}.mat-preset-btn-active{background:#fff7ed;border-color:#ea580c;color:#ea580c;font-weight:600}.mat-model-group{display:flex;flex-direction:column;gap:5px}.mat-model-btn{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;color:#374151;cursor:pointer;font-size:12px;padding:6px 10px;text-align:left;width:100%}.mat-model-btn:hover{background:#f3f4f6}.mat-model-btn-active{background:#fff7ed;border-color:#ea580c;color:#ea580c;font-weight:600}.mat-csv-btn{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;color:#374151;cursor:pointer;display:inline-block;font-size:11px;font-weight:600;margin-bottom:6px;padding:5px 12px;width:auto}.mat-csv-btn:hover{background:#f3f4f6}.mat-csv-hint{color:#9ca3af;font-size:10px;margin-bottom:10px}.mat-checkbox-row{align-items:center;color:#6b7280;cursor:pointer;display:flex;font-size:11px;font-weight:600;gap:6px;margin-bottom:10px}.mat-checkbox-row input{cursor:pointer;width:auto}.mat-testtype-block{margin-bottom:10px}.mat-testtype-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px}.mat-testtype-label{color:#6b7280;font-size:11px;font-weight:600}.mat-add-row-btn{background:none;border:none;color:#ea580c;cursor:pointer;font-size:10px;font-weight:600;padding:0;width:auto}.mat-add-row-btn:hover{text-decoration:underline}.mat-data-table{display:flex;flex-direction:column;gap:3px}.mat-data-header{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.04em;padding:0 2px;text-transform:uppercase}.mat-data-header,.mat-data-row{grid-gap:4px;display:grid;gap:4px;grid-template-columns:1fr 1fr 20px}.mat-data-row{align-items:center}.mat-data-row input{border:1px solid #e5e7eb;border-radius:5px;box-sizing:border-box;font-size:12px;outline:none;padding:4px 6px;width:100%}.mat-data-row input:focus{border-color:#ea580c}.mat-remove-row-btn{background:none;border:none;color:#d1d5db;cursor:pointer;font-size:11px;padding:0;text-align:center;width:20px}.mat-remove-row-btn:hover{color:#dc2626}.mat-run-btn{background:#ea580c;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:9px;width:100%}.mat-run-btn:hover:not(:disabled){background:#c2410c}.mat-run-btn:disabled{background:#fed7aa;cursor:not-allowed}.mat-job-running{align-items:center;display:flex;flex-direction:column;gap:8px}.mat-phase{color:#374151;font-size:12px;font-weight:500;text-align:center}.mat-spinner{animation:mat-spin .7s linear infinite;border:3px solid #fed7aa;border-radius:50%;border-top-color:#ea580c;height:24px;width:24px}@keyframes mat-spin{to{transform:rotate(1turn)}}.mat-job-failed{align-items:center;color:#dc2626;display:flex;font-size:12px;gap:8px;justify-content:space-between}.mat-reset-btn{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;font-size:11px;padding:4px 8px;width:auto}.mat-reset-btn:hover{background:#f3f4f6}.mat-results{display:flex;flex-direction:column}.mat-result-card{border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;margin-bottom:6px;padding:8px 10px;position:relative;transition:border-color .15s}.mat-result-card:hover{border-color:#ea580c}.mat-result-card-chosen{background:#fff7ed;border-color:#ea580c}.mat-result-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px}.mat-result-name{color:#111;font-size:12px;font-weight:600}.mat-result-badges{align-items:center;display:flex;gap:4px}.mat-badge{border-radius:99px;font-size:10px;font-weight:600;padding:1px 6px}.mat-badge-r2{background:#ede9fe;color:#5b21b6}.mat-badge-ok{background:#d1fae5;color:#065f46}.mat-badge-warn{background:#fef3c7;color:#92400e}.mat-result-error{color:#dc2626;font-size:11px}.mat-result-params{grid-gap:3px;display:grid;gap:3px;grid-template-columns:1fr 1fr}.mat-result-param{display:flex;font-size:11px;justify-content:space-between}.mat-result-param-name{color:#6b7280}.mat-result-param-val{color:#111;font-weight:600}.mat-result-chosen-badge{color:#ea580c;font-size:9px;font-weight:700;letter-spacing:.06em;position:absolute;right:8px;text-transform:uppercase;top:6px}.solver-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.solver-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.solver-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.solver-prop-row{margin-bottom:10px}.solver-prop-row label{color:#6b7280;display:block;font-size:11px;font-weight:600;margin-bottom:4px}.solver-prop-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.solver-prop-row input:focus{border-color:#0891b2}.solver-port-row{display:flex;gap:16px;margin-top:4px}.solver-port-label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.05em;margin-bottom:4px;text-transform:uppercase}.solver-port-chips{display:flex;flex-wrap:wrap;gap:4px}.solver-port-chip{border-radius:99px;font-size:11px;font-weight:500;padding:2px 8px}.solver-port-chip-in{background:#d1fae5;color:#065f46}.solver-port-chip-out{background:#fef3c7;color:#92400e}.solver-input-status{align-items:center;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:8px;margin-bottom:6px;padding:8px 10px}.solver-input-connected{background:#f0fdf4;border-color:#bbf7d0}.solver-input-missing{background:#fafafa;border-color:#e5e7eb}.solver-input-icon{flex-shrink:0;font-size:16px}.solver-input-info{flex:1 1;min-width:0}.solver-input-label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.solver-input-name{color:#111;font-size:12px;font-weight:500;margin-top:1px}.solver-input-none{color:#9ca3af;font-size:12px;margin-top:1px}.solver-input-dot{flex-shrink:0;font-size:10px}.solver-input-connected .solver-input-dot{color:#059669}.solver-input-missing .solver-input-dot{color:#d1d5db}.solver-run-btn{background:#0891b2;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:9px;width:100%}.solver-run-btn:hover:not(:disabled){background:#0e7490}.solver-run-btn:disabled{background:#a5f3fc;cursor:not-allowed}.solver-job-running{display:flex;flex-direction:column;gap:8px}.solver-progress-header{align-items:center;display:flex;justify-content:space-between}.solver-phase{color:#374151;font-size:12px;font-weight:500}.solver-pct{color:#0891b2;font-size:12px;font-weight:700}.solver-progress-bar{background:#cffafe;border-radius:99px;height:6px;overflow:hidden}.solver-progress-fill{background:#0891b2;border-radius:99px;height:100%;transition:width .5s ease}.solver-cancel-btn{background:#0000;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;cursor:pointer;font-size:12px;padding:6px 10px;width:auto}.solver-cancel-btn:hover{background:#fef2f2}.solver-done-header{align-items:center;display:flex;justify-content:space-between}.solver-done-badge{background:#d1fae5;border:1px solid #a7f3d0;border-radius:99px;color:#059669;font-size:12px;font-weight:600;padding:3px 10px}.solver-reset-btn{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;font-size:11px;padding:4px 8px;width:auto}.solver-reset-btn:hover{background:#f3f4f6}.solver-job-cancelled,.solver-job-failed{align-items:center;display:flex;font-size:12px;gap:8px;justify-content:space-between}.solver-job-failed{color:#dc2626}.solver-job-cancelled{color:#6b7280}.solver-status-loading{color:#9ca3af;font-size:12px}.solver-stats-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.solver-stat-item label{color:#9ca3af;display:block;font-size:10px;font-weight:600;letter-spacing:.04em;margin-bottom:2px;text-transform:uppercase}.solver-stat-item span{color:#111;font-size:12px;font-weight:500}.solver-input-warn{background:#fffbeb;border-color:#fcd34d}.solver-input-warn-msg{color:#92400e;font-size:10px;font-style:italic;margin-top:2px}.bc-viewer{background:#1a1a2e;display:flex;flex-direction:column;height:100%;overflow:hidden;width:100%}.bc-viewer-toolbar{align-items:center;background:#16213e;display:flex;flex-shrink:0;justify-content:flex-end;padding:6px 12px}.bc-viewer-title{color:#9ca3af;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.bc-toolbar-group{display:flex;gap:4px}.bc-toolbar-btn{background:#1a1a2e;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:11px;padding:4px 10px;width:auto}.bc-toolbar-btn:hover{background:#252537;color:#e0e4ea}.bc-viewer-body{flex:1 1;overflow:hidden;position:relative}.bc-viewer-canvas{height:100%;overflow:hidden;position:relative;width:100%}.bc-viewer-canvas canvas{display:block;height:100%!important;width:100%!important}.bc-viewer-empty,.bc-viewer-error,.bc-viewer-loading,.bc-viewer-mapping{align-items:center;display:flex;flex-direction:column;inset:0;justify-content:center;pointer-events:none;position:absolute;z-index:5}.bc-viewer-empty-icon{font-size:48px;margin-bottom:12px;opacity:.3}.bc-viewer-empty p{color:#6b7280;font-size:15px;font-weight:500;margin:0 0 6px}.bc-viewer-empty span{color:#4b5563;font-size:12px}.bc-viewer-spinner{animation:bc-spin .7s linear infinite;border:3px solid #1e3a5f;border-radius:50%;border-top-color:#059669;height:36px;margin-bottom:12px;width:36px}@keyframes bc-spin{to{transform:rotate(1turn)}}.bc-viewer-loading p,.bc-viewer-mapping p{color:#6b7280;font-size:13px;margin:0}.bc-viewer-error p{color:#dc2626;font-size:13px;padding:20px}.bc-face-tooltip{background:#16191fe6;border:1px solid #3d434f;border-radius:6px;bottom:14px;color:#c9cdd4;display:flex;flex-direction:column;font-size:11px;gap:2px;left:14px;padding:6px 10px;pointer-events:none;position:absolute;z-index:10}.bc-face-tooltip-bc{color:#34d399;font-weight:600}.bc-face-tooltip-hint{color:#6b7280;font-style:italic}.bc-view-cube{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10152ee6;border:1px solid #3d434f;border-radius:8px;flex-direction:column;padding:7px;position:absolute;right:12px;top:12px;z-index:10}.bc-view-cube,.bc-view-cube-row{align-items:center;display:flex;gap:3px}.bc-view-cube-sep{background:#3d434f;height:1px;margin:2px 0;width:100%}.bc-cube-btn{align-items:center;background:#1a1a2e;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;display:flex;font-size:10px;font-weight:600;height:26px;justify-content:center;padding:3px 7px;transition:background .1s;width:auto}.bc-cube-btn:hover{background:#252537;color:#e0e4ea}.bc-cube-btn.active{background:#064e3b;border-color:#059669;color:#34d399}.bc-legend{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10152ee6;border:1px solid #3d434f;border-radius:8px;bottom:14px;display:flex;flex-direction:column;gap:5px;padding:8px 10px;position:absolute;right:14px;z-index:10}.bc-legend-item{align-items:center;color:#c9cdd4;display:flex;font-size:11px;gap:6px}.bc-legend-dot{border-radius:50%;flex-shrink:0;height:10px;width:10px}.bc-legend-face{color:#6b7280;font-size:10px}.bc-viewer-hint{background:#16213e;color:#4b5563;flex-shrink:0;font-size:10px;padding:4px 12px;text-align:center}.bc-mode-toggle{display:flex;gap:4px}.bc-mode-btn{background:#1a1a2e;border:1px solid #3d434f;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:11px;padding:4px 10px;transition:background .1s;width:auto}.bc-mode-btn:hover:not(:disabled){background:#252537;color:#e0e4ea}.bc-mode-btn.active{background:#064e3b;border-color:#059669;color:#34d399}.bc-mode-btn:disabled{cursor:not-allowed;opacity:.4}.bc-mode-label{background:#10152ed9;border:1px solid #3d434f;border-radius:6px;color:#9ca3af;font-size:11px;left:50%;padding:4px 12px;pointer-events:none;position:absolute;top:10px;transform:translateX(-50%);white-space:nowrap;z-index:10}.bc-popup-backdrop{inset:0;position:fixed;z-index:49}.bc-popup{background:#1e2535;border:1px solid #3d434f;border-radius:10px;box-shadow:0 8px 24px #0006;min-width:200px;padding:12px;z-index:50}.bc-popup-title{border-bottom:1px solid #3d434f;color:#e0e4ea;font-size:12px;font-weight:700;margin-bottom:10px;padding-bottom:8px}.bc-popup-empty{color:#6b7280;font-size:11px;padding:8px 0;text-align:center}.bc-popup-list{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.bc-popup-item{align-items:center;background:#252b3b;border:1px solid #3d434f;border-radius:6px;color:#c9cdd4;cursor:pointer;display:flex;font-size:12px;gap:8px;padding:7px 8px;text-align:left;transition:background .1s;width:100%}.bc-popup-item:hover{background:#2d3547;border-color:#059669}.bc-popup-dot{border-radius:50%;flex-shrink:0;height:10px;width:10px}.bc-popup-current{color:#059669;font-size:10px;margin-left:auto}.bc-popup-cancel{background:#0000;border:1px solid #3d434f;border-radius:6px;color:#6b7280;cursor:pointer;font-size:11px;padding:6px;width:100%}.bc-popup-cancel:hover{background:#252b3b;color:#9ca3af}.bc-mapping-progress-bar{background:#1e3a5f;border-radius:99px;height:4px;margin-top:8px;overflow:hidden;width:160px}.bc-mapping-progress-fill{background:#059669;border-radius:99px;height:100%;transition:width .5s ease}.bc-mapping-pct{color:#059669;font-size:11px;margin-top:4px}.bc-mapping-cancel{background:#0000;border:1px solid #dc2626;border-radius:6px;color:#dc2626;cursor:pointer;font-size:11px;margin-top:8px;padding:4px 12px;width:auto}.bc-mapping-cancel:hover{background:#dc26261a}.cad-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.cad-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.cad-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.cad-section-subtitle{color:#d1d5db;font-size:10px;font-weight:600;letter-spacing:.05em;margin:10px 0 6px;text-transform:uppercase}.cad-no-file{color:#9ca3af;font-size:13px;margin-bottom:10px}.cad-file-info{align-items:center;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:10px;margin-bottom:10px;padding:10px}.cad-file-icon{font-size:22px}.cad-file-details{flex:1 1;min-width:0}.cad-file-name{color:#111;font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cad-file-size{color:#9ca3af;font-size:11px;margin-top:2px}.cad-converting{align-items:center;color:#2563eb;display:flex;font-size:12px;gap:8px;padding:8px 0}.cad-spinner{animation:spin .8s linear infinite;border:2px solid #bfdbfe;border-radius:50%;border-top-color:#2563eb;flex-shrink:0;height:14px;width:14px}@keyframes spin{to{transform:rotate(1turn)}}.cad-select-btn{background:#eff6ff;border:1px dashed #93c5fd;border-radius:6px;color:#2563eb;cursor:pointer;font-size:12px;font-weight:500;padding:8px;text-align:center;width:100%}.cad-select-btn:hover{background:#dbeafe}.cad-error{background:#fef2f2;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;cursor:pointer;font-size:12px;margin-top:8px;padding:8px 10px}.cad-prop-row{margin-bottom:10px}.cad-prop-row label{color:#6b7280;display:block;font-size:11px;font-weight:600;margin-bottom:4px}.cad-prop-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.cad-prop-row input:focus{border-color:#2563eb}.cad-port-chips{display:flex;flex-wrap:wrap;gap:4px}.cad-port-chip{background:#fef3c7;border-radius:99px;color:#92400e;font-size:11px;font-weight:500;padding:2px 8px}.cad-meta-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.cad-meta-grid-3{grid-template-columns:1fr}.cad-meta-item label{color:#9ca3af;display:block;font-size:10px;font-weight:600;letter-spacing:.04em;margin-bottom:2px;text-transform:uppercase}.cad-meta-item span{color:#111;font-size:12px;font-weight:500}.cad-picker-overlay{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;position:fixed;z-index:200}.cad-picker{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0003;display:flex;flex-direction:column;max-height:70vh;overflow:hidden;width:380px}.cad-picker-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;justify-content:space-between;padding:16px 18px}.cad-picker-header h3{font-size:15px;font-weight:600;margin:0}.cad-picker-header button{background:#0000;border:none;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:14px;padding:2px 6px;width:auto}.cad-picker-header button:hover{background:#f3f4f6}.cad-picker-empty,.cad-picker-loading{color:#9ca3af;font-size:13px;line-height:1.5;padding:32px 18px;text-align:center}.cad-picker-list{overflow-y:auto;padding:8px}.cad-picker-item{align-items:center;border-radius:8px;cursor:pointer;display:flex;gap:10px;padding:10px 12px;transition:background .1s}.cad-picker-item:hover{background:#f3f4f6}.cad-picker-item-active{background:#eff6ff!important}.cad-picker-icon{flex-shrink:0;font-size:20px}.cad-picker-info{flex:1 1;min-width:0}.cad-picker-name{color:#111;font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cad-picker-size{color:#9ca3af;font-size:11px;margin-top:2px}.cad-picker-check{color:#2563eb;font-size:14px;font-weight:700}.cad-face-type{background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;color:#1d4ed8;display:inline-block;font-size:11px;font-weight:600;padding:1px 6px}.cad-mono{color:#374151;font-family:monospace;font-size:10px;word-break:break-all}.mesh-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.mesh-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.mesh-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.mesh-prop-row{margin-bottom:10px}.mesh-prop-row label{color:#6b7280;display:block;font-size:11px;font-weight:600;margin-bottom:4px}.mesh-prop-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.mesh-prop-row input:focus{border-color:#7c3aed}.mesh-port-row{display:flex;gap:16px;margin-top:4px}.mesh-port-label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.05em;margin-bottom:4px;text-transform:uppercase}.mesh-port-chips{display:flex;flex-wrap:wrap;gap:4px}.mesh-port-chip{border-radius:99px;font-size:11px;font-weight:500;padding:2px 8px}.mesh-port-chip-in{background:#d1fae5;color:#065f46}.mesh-port-chip-out{background:#fef3c7;color:#92400e}.mesh-geometry-card{align-items:flex-start;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:10px;padding:10px}.mesh-geometry-icon{flex-shrink:0;font-size:20px}.mesh-geometry-info{flex:1 1;min-width:0}.mesh-geometry-name{color:#111;font-size:13px;font-weight:500;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mesh-geometry-meta{color:#9ca3af;font-size:11px}.mesh-no-input{background:#fafafa;border:1px dashed #e5e7eb;border-radius:8px;padding:14px;text-align:center}.mesh-no-input span{color:#6b7280;display:block;font-size:13px;font-weight:500;margin-bottom:4px}.mesh-no-input p{color:#9ca3af;font-size:11px;margin:0}.mesh-param-row{margin-bottom:10px}.mesh-param-row label{align-items:center;color:#6b7280;display:flex;font-size:11px;font-weight:600;gap:6px;margin-bottom:4px}.mesh-unit{background:#f3f4f6;border-radius:3px;color:#9ca3af;font-size:10px;font-weight:400;padding:1px 5px}.mesh-param-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.mesh-param-row input:focus{border-color:#7c3aed}.mesh-param-row input:disabled{background:#f9fafb;color:#9ca3af}.mesh-generate-btn{background:#7c3aed;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:9px;width:100%}.mesh-generate-btn:hover:not(:disabled){background:#6d28d9}.mesh-generate-btn:disabled{background:#c4b5fd;cursor:not-allowed}.mesh-job-running{display:flex;flex-direction:column;gap:8px}.mesh-progress-header{align-items:center;display:flex;justify-content:space-between}.mesh-phase{color:#374151;font-size:12px;font-weight:500}.mesh-pct{color:#7c3aed;font-size:12px;font-weight:700}.mesh-progress-bar{background:#ede9fe;border-radius:99px;height:6px;overflow:hidden}.mesh-progress-fill{background:#7c3aed;border-radius:99px;height:100%;transition:width .5s ease}.mesh-cancel-btn{background:#0000;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;cursor:pointer;font-size:12px;padding:6px 10px;width:auto}.mesh-cancel-btn:hover{background:#fef2f2}.mesh-done-header{align-items:center;display:flex;justify-content:space-between}.mesh-done-badge{background:#d1fae5;border:1px solid #a7f3d0;border-radius:99px;color:#059669;font-size:12px;font-weight:600;padding:3px 10px}.mesh-reset-btn{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;font-size:11px;padding:4px 8px;width:auto}.mesh-reset-btn:hover{background:#f3f4f6}.mesh-job-cancelled,.mesh-job-failed{align-items:center;display:flex;font-size:12px;gap:8px;justify-content:space-between}.mesh-job-failed{color:#dc2626}.mesh-job-cancelled{color:#6b7280}.mesh-status-loading{color:#9ca3af;font-size:12px}.mesh-stats-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.mesh-stat-item label{color:#9ca3af;display:block;font-size:10px;font-weight:600;letter-spacing:.04em;margin-bottom:2px;text-transform:uppercase}.mesh-stat-item span{color:#111;font-size:12px;font-weight:500}.mesh-stat-warn{color:#dc2626!important}.mesh-job-retrying{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;display:flex;flex-direction:column;gap:6px;padding:10px}.mesh-retrying-line{color:#92400e;font-size:12px}.mesh-retrying-line:first-child{font-weight:600}.mesh-retrying-detail{background:#fef3c7;border-radius:4px;color:#b45309;font-family:monospace;font-size:11px;padding:4px 6px;word-break:break-word}.mesh-retry-notice{background:#ede9fe;border-radius:4px;color:#7c3aed;font-size:11px;margin-top:6px;padding:4px 8px}.chat-panel{background:#fff;border-left:1px solid #e5e7eb;flex-direction:column;height:100%;width:300px}.chat-header,.chat-panel{display:flex;flex-shrink:0}.chat-header{align-items:center;border-bottom:1px solid #e5e7eb;color:#374151;font-size:13px;font-weight:600;justify-content:space-between;padding:12px 14px}.chat-provider{background:#f3f4f6;border-radius:99px;color:#9ca3af;font-size:10px;font-weight:500;padding:2px 6px;text-transform:capitalize}.chat-no-key{align-items:center;color:#9ca3af;display:flex;flex:1 1;flex-direction:column;font-size:13px;gap:12px;justify-content:center;padding:24px;text-align:center}.chat-no-key button{background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;padding:8px 16px;width:auto}.chat-messages{display:flex;flex:1 1;flex-direction:column;gap:10px;overflow-y:auto;padding:12px}.chat-empty{color:#9ca3af;font-size:13px;padding:20px 0;text-align:center}.chat-empty p{margin:0 0 12px}.chat-suggestions{display:flex;flex-direction:column;gap:6px}.chat-suggestions button{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:6px;color:#374151;cursor:pointer;font-size:11px;padding:7px 10px;text-align:left;width:100%}.chat-suggestions button:hover{background:#e5e7eb}.chat-message{display:flex;flex-direction:column;gap:4px}.chat-message-user{align-items:flex-end}.chat-message-assistant{align-items:flex-start}.chat-bubble{border-radius:10px;font-size:13px;line-height:1.5;max-width:85%;padding:8px 11px;white-space:pre-wrap;word-break:break-word}.chat-message-user .chat-bubble{background:#2563eb;border-bottom-right-radius:3px;color:#fff}.chat-message-assistant .chat-bubble{background:#f3f4f6;border-bottom-left-radius:3px;color:#111}.chat-message-error .chat-bubble{background:#fef2f2;border:1px solid #fca5a5;color:#dc2626}.chat-cursor{animation:blink 1s infinite;display:inline-block;margin-left:2px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.chat-tool-summary{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;max-width:85%;padding:6px 10px}.chat-tool-summary pre{color:#166534;font-family:inherit;font-size:11px;margin:0;white-space:pre-wrap}.chat-input-row{border-top:1px solid #e5e7eb;display:flex;flex-shrink:0;gap:6px;padding:10px}.chat-input-row input{border:1px solid #e5e7eb;border-radius:6px;flex:1 1;font-size:13px;outline:none;padding:8px 10px}.chat-input-row input:focus{border-color:#2563eb}.chat-input-row button{align-items:center;background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:34px;justify-content:center;width:34px}.chat-input-row button:disabled{background:#93c5fd;cursor:not-allowed}.chat-input-row button:hover:not(:disabled){background:#1d4ed8}.chat-header-actions{align-items:center;display:flex;gap:6px}.chat-clear-btn{background:#0000;border:none;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:13px;padding:2px 4px;width:auto}.chat-clear-btn:hover{background:#fee2e2;color:#dc2626}.export-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.export-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.export-section-title{margin-bottom:10px}.export-section-title,.export-subsection-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.export-subsection-title{margin:10px 0 6px}.export-prop-row{margin-bottom:10px}.export-prop-row label{color:#6b7280;display:block;font-size:11px;font-weight:600;margin-bottom:4px}.export-prop-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.export-prop-row input:focus{border-color:#1d4ed8}.export-prop-row-toggle{align-items:center;display:flex;justify-content:space-between}.export-prop-row-toggle label{margin-bottom:0}.export-static-badge{border:1px solid #e5e7eb;box-sizing:border-box;color:#6b7280;display:block;font-size:12px;margin-bottom:10px;padding:5px 8px;width:100%}.export-static-badge,.export-toggle{background:#f9fafb;border-radius:6px}.export-toggle{border:1px solid #e5e7eb;color:#9ca3af;cursor:pointer;font-size:11px;font-weight:700;padding:4px 12px;transition:background .1s,color .1s,border-color .1s;width:auto}.export-toggle-on{background:#dbeafe;border-color:#1d4ed8;color:#1d4ed8}.export-time-grid{display:flex;flex-direction:column;gap:4px}.export-time-row{align-items:center;display:flex;gap:8px}.export-time-row label{color:#6b7280;flex-shrink:0;font-size:11px;font-weight:600;width:44px}.export-time-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;flex:1 1;font-size:12px;outline:none;padding:5px 8px}.export-time-row input:focus{border-color:#1d4ed8}.export-output-list{display:flex;flex-direction:column;gap:5px}.export-checkbox-row{align-items:center;color:#374151;cursor:pointer;display:flex;font-size:12px;gap:6px;white-space:nowrap}.export-checkbox-row input[type=checkbox]{accent-color:#1d4ed8;cursor:pointer;flex-shrink:0;height:13px;margin:0;width:13px}.export-checkbox-key{background:#dbeafe;border-radius:3px;color:#1d4ed8;flex-shrink:0;font-family:monospace;font-size:11px;font-weight:700;padding:1px 5px}.export-checkbox-desc{color:#6b7280;font-size:11px}.export-input-item{align-items:center;border-bottom:1px solid #f3f4f6;display:flex;gap:8px;padding:6px 0}.export-input-item:last-child{border-bottom:none}.export-input-icon{flex-shrink:0;font-size:16px}.export-input-info{flex:1 1;min-width:0}.export-input-label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.export-input-value{color:#111;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.export-input-extra{color:#9ca3af;font-size:11px;font-weight:400}.export-missing-text{color:#9ca3af;font-style:italic;font-weight:400}.export-input-dot{border-radius:50%;flex-shrink:0;height:7px;width:7px}.export-input-dot-ok{background:#10b981}.export-input-dot-missing{background:#d1d5db}.export-format-row{align-items:center;display:flex;gap:8px;margin-bottom:10px}.export-format-label{color:#6b7280;font-size:11px;font-weight:600}.export-format-badge{background:#dbeafe;border:1px solid #93c5fd;border-radius:99px;color:#1d4ed8;font-size:11px;font-weight:600;padding:2px 8px}.export-missing{background:#fffbeb;border:1px solid #fde68a;border-radius:6px;display:flex;flex-direction:column;gap:3px;margin-bottom:10px;padding:8px 10px}.export-missing span{color:#92400e;font-size:11px}.export-generate-btn{align-items:center;background:#1d4ed8;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:13px;font-weight:600;gap:7px;justify-content:center;padding:9px;transition:background .15s;width:100%}.export-generate-btn:disabled{background:#93c5fd;cursor:not-allowed}.export-generate-btn:not(:disabled):hover{background:#1e40af}.export-spinner{animation:export-spin .7s linear infinite;border:2px solid #ffffff59;border-radius:50%;border-top-color:#fff;height:13px;width:13px}@keyframes export-spin{to{transform:rotate(1turn)}}.export-error{align-items:flex-start;background:#fef2f2;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;display:flex;font-size:12px;gap:7px;margin-top:10px;padding:8px 10px}.export-error-icon{flex-shrink:0;margin-top:1px}.export-result{background:#f0fdf4;border:1px solid #a7f3d0;border-radius:8px;margin-top:12px;padding:12px}.export-result-header{align-items:center;display:flex;gap:8px;margin-bottom:10px}.export-result-badge{background:#d1fae5;border:1px solid #6ee7b7;border-radius:99px;color:#059669;font-size:11px;font-weight:700;padding:2px 8px}.export-result-filename{color:#374151;font-family:monospace;font-size:12px;word-break:break-all}.export-result-stats{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr;margin-bottom:12px}.export-stat{display:flex;flex-direction:column;gap:2px}.export-stat label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.export-stat span{color:#111;font-size:12px;font-weight:500}.export-stat-warn span{color:#d97706}.export-download-btn{background:#059669;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:8px;transition:background .15s;width:100%}.export-download-btn:hover{background:#047857}.spt-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.spt-section{border-bottom:1px solid #e5e7eb;padding:12px 14px}.spt-section-title{color:#6b7280;font-size:12px;font-weight:600;letter-spacing:.04em;margin-bottom:8px;text-transform:uppercase}.spt-row{align-items:center;display:flex;gap:8px;margin-bottom:6px}.spt-row label{color:#374151;flex:0 0 130px;font-size:13px}.spt-row input,.spt-row select{border:1px solid #d1d5db;border-radius:4px;flex:1 1;font-size:13px;min-width:0;padding:4px 8px}.spt-row .spt-row-pair{display:flex;flex:1 1;gap:6px}.spt-row .spt-row-pair input{flex:1 1;min-width:0}.spt-domain-card{background:#fafafa;border:1px solid #d1d5db;border-radius:6px;margin-bottom:10px}.spt-domain-header{align-items:center;background:#f3f4f6;border-bottom:1px solid #e5e7eb;border-radius:6px 6px 0 0;display:flex;flex-wrap:nowrap;gap:8px;padding:8px 10px}.spt-domain-role-select{flex:0 0 140px}.spt-domain-key-input{flex:1 1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;min-width:0}.spt-domain-key-input,.spt-domain-role-select{border:1px solid #d1d5db;border-radius:3px;font-size:13px;padding:3px 6px}.spt-domain-role-badge{border-radius:10px;display:inline-block;font-size:11px;font-weight:600;margin-right:4px;padding:2px 6px}.spt-role-S{background:#dbeafe;color:#1e40af}.spt-role-T{background:#fde68a;color:#92400e}.spt-role-P{background:#d1fae5;color:#065f46}.spt-role-none{background:#e5e7eb;color:#6b7280}.spt-domain-body{padding:8px 10px}.spt-source-list{margin-top:6px}.spt-source-row{align-items:center;display:flex;gap:6px;margin-bottom:4px}.spt-source-row .spt-source-index{color:#9ca3af;flex:0 0 24px;font-size:11px;text-align:right}.spt-source-row input,.spt-source-row select{border:1px solid #d1d5db;border-radius:3px;font-size:12px;min-width:0;padding:3px 6px}.spt-source-row select{flex:0 0 110px}.spt-source-row input{flex:1 1}.spt-add-domain-btn{background:#f3f4f6;border:1px dashed #9ca3af;border-radius:4px;color:#374151;cursor:pointer;display:block;font-size:13px;padding:8px;width:100%}.spt-add-domain-btn:hover{background:#e5e7eb}.spt-remove-btn{align-items:center;background:#0000;border:none;border-radius:4px;color:#ef4444;cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:14px;height:22px;justify-content:center;line-height:22px;padding:0;text-align:center;width:22px}.spt-remove-btn:hover{background:#fef2f2;color:#b91c1c}.spt-errors{background:#fef2f2;border-left:3px solid #ef4444;color:#991b1b;font-size:12px;padding:8px 12px}.spt-errors ul{margin:0;padding-left:18px}.spt-save-indicator{border-bottom:1px solid #e5e7eb;color:#6b7280;font-size:11px;padding:4px 14px}.spt-save-indicator.saving{color:#b45309}.spt-save-indicator.unsaved{color:#b91c1c}.spt-preview{background:#fff;height:100%;overflow-y:auto;padding:16px}.spt-preview-toolbar{display:flex;gap:8px;margin-bottom:12px}.spt-preview-toolbar button{background:#fff;border:1px solid #d1d5db;border-radius:4px;cursor:pointer;font-size:12px;padding:4px 10px}.spt-preview-toolbar button.active{background:#2563eb;border-color:#2563eb;color:#fff}.spt-preview-card{background:#fafafa;border:1px solid #e5e7eb;border-radius:6px;margin-bottom:10px;padding:12px}.spt-preview-card h4{font-size:13px;font-weight:600;margin:0 0 6px}.spt-preview-kv{grid-row-gap:2px;color:#374151;display:grid;font-size:12px;grid-template-columns:140px 1fr;row-gap:2px}.spt-preview-json{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;height:calc(100% - 50px);overflow:auto;padding:10px;white-space:pre}.spt-main-layout{display:flex;flex:1 1;height:100%;min-height:0}.spt-main-pane{border-right:1px solid #e5e7eb;display:flex;flex:1 1 50%;flex-direction:column;min-height:0;min-width:0;overflow:hidden}.spt-main-pane:last-child{border-right:none}.spt-main-pane .spt-panel{flex:1 1;min-height:0}.spt-main-pane .chat-panel{border-left:none;flex:1 1 auto;flex-shrink:1;min-width:0;width:auto}.spt-solver-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.spt-solver-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.spt-solver-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.spt-solver-row{margin-bottom:10px}.spt-solver-row label{color:#6b7280;display:block;font-size:11px;font-weight:600;margin-bottom:4px}.spt-solver-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.spt-solver-row input:focus{border-color:#0d9488}.spt-solver-row input:disabled{background:#f9fafb;color:#9ca3af}.spt-solver-upstream-card{align-items:flex-start;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:10px;padding:10px}.spt-solver-upstream-icon{flex-shrink:0;font-size:20px}.spt-solver-upstream-name{color:#111;font-size:13px;font-weight:500;margin-bottom:3px}.spt-solver-upstream-meta{color:#9ca3af;font-size:11px}.spt-solver-no-input{background:#fafafa;border:1px dashed #e5e7eb;border-radius:8px;padding:14px;text-align:center}.spt-solver-no-input span{color:#6b7280;display:block;font-size:13px;font-weight:500;margin-bottom:4px}.spt-solver-no-input p{color:#9ca3af;font-size:11px;margin:0}.spt-solver-start-btn{background:#0d9488;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:9px;width:100%}.spt-solver-start-btn:hover:not(:disabled){background:#0f766e}.spt-solver-start-btn:disabled{background:#99f6e4;cursor:not-allowed}.spt-solver-job-running{display:flex;flex-direction:column;gap:8px}.spt-solver-progress-header{align-items:center;display:flex;justify-content:space-between}.spt-solver-phase{color:#374151;font-size:12px;font-weight:500}.spt-solver-pct{color:#0d9488;font-size:12px;font-weight:700}.spt-solver-progress-bar{background:#ccfbf1;border-radius:99px;height:6px;overflow:hidden}.spt-solver-progress-fill{background:#0d9488;border-radius:99px;height:100%;transition:width .5s ease}.spt-solver-cancel-btn{background:#0000;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;cursor:pointer;font-size:12px;padding:6px 10px;width:auto}.spt-solver-cancel-btn:hover{background:#fef2f2}.spt-solver-done-header{align-items:center;display:flex;justify-content:space-between}.spt-solver-done-badge{background:#d1fae5;border:1px solid #a7f3d0;border-radius:99px;color:#059669;font-size:12px;font-weight:600;padding:3px 10px}.spt-solver-reset-btn{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;font-size:11px;padding:4px 8px;width:auto}.spt-solver-reset-btn:hover{background:#f3f4f6}.spt-solver-job-cancelled,.spt-solver-job-failed{align-items:center;display:flex;font-size:12px;gap:8px;justify-content:space-between}.spt-solver-job-failed{color:#dc2626}.spt-solver-job-cancelled{color:#6b7280}.spt-solver-status-loading{color:#9ca3af;font-size:12px}.spt-solver-stats-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.spt-solver-stat-item label{color:#9ca3af;display:block;font-size:10px;font-weight:600;letter-spacing:.04em;margin-bottom:2px;text-transform:uppercase}.spt-solver-stat-item span{color:#111;font-size:12px;font-weight:500}.spt-solver-summary-card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;margin:0 12px 12px;padding:12px 14px}.spt-solver-summary-title{color:#9ca3af;font-size:11px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.spt-solver-summary-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr 1fr}.spt-solver-summary-grid>div{display:flex;flex-direction:column}.spt-solver-summary-grid label{color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.04em;margin-bottom:2px;text-transform:uppercase}.spt-solver-summary-grid span{color:#111;font-size:13px;font-weight:500}.spt-predictor-panel{display:flex;flex-direction:column;height:100%;overflow-y:auto}.spt-predictor-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.spt-predictor-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.spt-predictor-row{margin-bottom:10px}.spt-predictor-row label{color:#6b7280;display:block;font-size:11px;font-weight:600;margin-bottom:4px}.spt-predictor-row input,.spt-predictor-row select{background:#fff;border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.spt-predictor-row input:focus,.spt-predictor-row select:focus{border-color:#4f46e5}.spt-predictor-upstream-card{align-items:flex-start;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:10px;padding:10px}.spt-predictor-upstream-icon{flex-shrink:0;font-size:20px}.spt-predictor-upstream-name{color:#111;font-size:13px;font-weight:500;margin-bottom:3px}.spt-predictor-upstream-meta{color:#9ca3af;font-size:11px}.spt-predictor-no-input{background:#fafafa;border:1px dashed #e5e7eb;border-radius:8px;padding:14px;text-align:center}.spt-predictor-no-input span{color:#6b7280;display:block;font-size:13px;font-weight:500;margin-bottom:4px}.spt-predictor-no-input p{color:#9ca3af;font-size:11px;margin:0}.spt-predictor-hint{color:#9ca3af;font-size:11px;font-style:italic;margin-top:6px}.spt-predictor-render-btn{background:#4f46e5;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:9px;width:100%}.spt-predictor-render-btn:hover:not(:disabled){background:#4338ca}.spt-predictor-render-btn:disabled{background:#c7d2fe;cursor:not-allowed}.spt-predictor-row-held label{align-items:baseline;display:flex;gap:6px}.spt-predictor-row-held input::placeholder{color:#9ca3af;font-family:monospace;font-size:11px;font-style:normal;opacity:1}.spt-predictor-clamped{background:#fef3c7;border-radius:4px;color:#b45309;font-family:monospace;font-size:10px;margin-top:3px;padding:2px 6px}.spt-predictor-error{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;font-size:12px;margin-top:8px;padding:8px}.lpbf-panel{display:flex;flex-direction:column;height:100%;overflow:hidden}.lpbf-panel-body{flex:1 1 auto;min-height:0;overflow-y:auto}.lpbf-panel-footer{background:#fff;border-top:1px solid #e5e7eb;box-shadow:0 -2px 6px #0000000a;display:flex;flex:0 0 auto;flex-direction:column;gap:8px;padding:12px 14px}.lpbf-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.lpbf-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.lpbf-row{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.lpbf-row label{align-items:center;color:#6b7280;display:flex;font-size:11px;font-weight:600;gap:6px}.lpbf-row input,.lpbf-row select{background:#fff;border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;color:#111;font-size:13px;outline:none;padding:6px 8px;width:100%}.lpbf-row input:focus,.lpbf-row select:focus{border-color:#7c3aed}.lpbf-row input:disabled,.lpbf-row select:disabled{background:#f9fafb;color:#9ca3af;cursor:not-allowed}.lpbf-unit{background:#f3f4f6;border-radius:3px;color:#9ca3af;font-size:10px;font-weight:400;padding:1px 5px}.lpbf-upstream-card{align-items:flex-start;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:10px;padding:10px}.lpbf-upstream-icon{flex-shrink:0;font-size:20px}.lpbf-upstream-name{color:#111;font-size:13px;font-weight:500;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lpbf-upstream-meta{color:#9ca3af;font-size:11px}.lpbf-no-input{background:#fafafa;border:1px dashed #e5e7eb;border-radius:8px;padding:14px;text-align:center}.lpbf-no-input span{color:#6b7280;display:block;font-size:13px;font-weight:500;margin-bottom:4px}.lpbf-no-input p{color:#9ca3af;font-size:11px;margin:0}.lpbf-schedule-table{border-collapse:collapse;font-size:12px;margin-top:4px;width:100%}.lpbf-schedule-table th{border-bottom:1px solid #e5e7eb;color:#9ca3af;font-size:10px;font-weight:600;letter-spacing:.05em;padding:4px 6px;text-align:left;text-transform:uppercase}.lpbf-schedule-table td{border-bottom:1px solid #f3f4f6;padding:4px;vertical-align:middle}.lpbf-schedule-table input[type=number]{background:#fff;border:1px solid #e5e7eb;border-radius:4px;box-sizing:border-box;color:#111;font-size:12px;outline:none;padding:4px 6px;width:100%}.lpbf-schedule-table input[type=number]:focus{border-color:#7c3aed}.lpbf-schedule-table input[type=number]:disabled{background:#f9fafb;color:#9ca3af}.lpbf-schedule-thk{font-feature-settings:"tnum";color:#6b7280;font-size:12px;font-variant-numeric:tabular-nums}.lpbf-schedule-top{color:#9ca3af;font-size:12px;font-style:italic}.lpbf-schedule-remove{background:#0000;border:none;border-radius:4px;color:#9ca3af;cursor:pointer;font-size:13px;line-height:1;padding:2px 6px}.lpbf-schedule-remove:hover{background:#fef2f2;color:#dc2626}.lpbf-schedule-remove:disabled{cursor:not-allowed;opacity:.4}.lpbf-schedule-add{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:6px;color:#4b5563;cursor:pointer;font-size:12px;margin-top:8px;padding:5px 12px}.lpbf-schedule-add:hover{background:#e5e7eb}.lpbf-schedule-add:disabled{cursor:not-allowed;opacity:.5}.lpbf-status-loading{color:#9ca3af;font-size:12px}.lpbf-job-running{display:flex;flex-direction:column;gap:8px}.lpbf-progress-header{align-items:center;display:flex;justify-content:space-between}.lpbf-phase{color:#374151;font-size:12px;font-weight:500}.lpbf-pct{color:#ea580c;font-size:12px;font-weight:700}.lpbf-progress-bar{background:#fed7aa;border-radius:99px;height:6px;overflow:hidden}.lpbf-progress-fill{background:#ea580c;border-radius:99px;height:100%;transition:width .5s ease}.lpbf-cancel-btn{align-self:flex-start;background:#0000;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;cursor:pointer;font-size:12px;padding:6px 10px;width:auto}.lpbf-cancel-btn:hover{background:#fef2f2}.lpbf-job-done{display:flex;flex-direction:column;gap:8px}.lpbf-done-header{align-items:center;display:flex;justify-content:space-between}.lpbf-done-badge{background:#d1fae5;border:1px solid #a7f3d0;border-radius:99px;color:#059669;font-size:12px;font-weight:600;padding:3px 10px}.lpbf-reset-btn{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;font-size:11px;padding:4px 8px;width:auto}.lpbf-reset-btn:hover{background:#f3f4f6}.lpbf-download-btn{background:#fff;border:1px solid #93c5fd;border-radius:6px;color:#2563eb;cursor:pointer;font-size:12px;font-weight:600;padding:8px;width:100%}.lpbf-download-btn:hover{background:#eff6ff}.lpbf-job-cancelled,.lpbf-job-failed{align-items:center;display:flex;font-size:12px;gap:8px;justify-content:space-between}.lpbf-job-failed{color:#dc2626}.lpbf-job-cancelled{color:#6b7280}.lpbf-job-failed span{word-break:break-word}.lpbf-start-btn{background:#ea580c;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:9px;width:100%}.lpbf-start-btn:hover:not(:disabled){background:#c2410c}.lpbf-start-btn:disabled{background:#fdba74;cursor:not-allowed}.lpbf-stats-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.lpbf-stat-item label{color:#9ca3af;display:block;font-size:10px;font-weight:600;letter-spacing:.04em;margin-bottom:2px;text-transform:uppercase}.lpbf-stat-item span{color:#111;font-size:12px;font-weight:500}.lpbf-stat-warn span{color:#dc2626!important}.am-panel{box-sizing:border-box;color:#1f2937;display:flex;flex-direction:column;font-size:13px;gap:12px;height:100%;max-width:480px;overflow-y:auto;padding:12px}.am-save-indicator{align-self:flex-end;border-radius:4px;font-size:11px;padding:2px 8px}.am-save-indicator.saved{color:#16a34a}.am-save-indicator.unsaved{color:#d97706}.am-save-indicator.saving{color:#2563eb}.am-section{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px}.am-section-title{color:#374151;font-size:12px;font-weight:600;letter-spacing:.04em;margin-bottom:8px;text-transform:uppercase}.am-row{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}.am-row-label{color:#4b5563;font-size:11px;font-weight:600}.am-row-control{min-width:0;width:100%}.am-row-pair{display:flex;gap:6px}.am-input{border:1px solid #d1d5db;border-radius:4px;box-sizing:border-box;font-family:inherit;font-size:11px;padding:3px 5px;width:100%}.am-input:focus{border-color:#2563eb;outline:none}.am-input-unit{flex:0 0 130px;min-width:130px}.am-object{display:flex;flex-direction:column}.am-object.am-depth-1{border-left:2px solid #f3f4f6;padding-left:8px}.am-object.am-depth-2{border-left:2px solid #e5e7eb;padding-left:8px}.am-dict{display:flex;flex-direction:column;gap:8px}.am-dict-empty{color:#9ca3af;font-size:12px;font-style:italic;padding:4px 0}.am-dict-entry{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;padding:8px}.am-dict-entry-header{color:#dc2626;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:600;margin-bottom:6px}.am-dict-controls{display:flex;gap:6px;margin-top:4px}.am-btn{background:#fff;border:1px solid #d1d5db;border-radius:4px;cursor:pointer;font-size:12px;padding:4px 10px}.am-btn:hover{background:#f3f4f6}.am-btn:disabled{cursor:not-allowed;opacity:.5}.am-btn-add{border-color:#bbf7d0;color:#16a34a}.am-btn-remove{border-color:#fecaca;color:#dc2626}.am-unknown{color:#ef4444;font-family:ui-monospace,monospace;font-size:11px}.am-condition{display:flex;flex-direction:column;gap:4px}.am-condition-value{margin-top:2px}.am-dict-entry-header-clickable{align-items:center;cursor:pointer;display:flex;gap:6px;-webkit-user-select:none;user-select:none}.am-dict-entry-header-clickable:hover{color:#991b1b}.am-dict-caret{color:#6b7280;display:inline-block;font-size:14px;font-weight:700;text-align:center;width:14px}.am-dict-entry-key{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.am-row-inline{align-items:center;flex-direction:row;gap:8px}.am-row-inline .am-row-label{flex:0 0 auto}.am-row-inline .am-row-control{flex:0 0 auto;width:auto}.spt-contour-viewer{background:#fff;display:flex;flex-direction:column;height:100%;overflow:hidden;width:100%}.spt-contour-toolbar{align-items:center;background:#f9fafb;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;gap:16px;padding:8px 14px}.spt-contour-title{color:#374151;font-size:12px;font-weight:600}.spt-contour-subtitle{color:#9ca3af;font-family:monospace;font-size:11px}.spt-contour-canvas{background:#fff;flex:1 1;min-height:0}.spt-contour-empty{align-items:center;color:#6b7280;display:flex;flex:1 1;flex-direction:column;gap:4px;justify-content:center;text-align:center}.spt-contour-empty-icon{font-size:48px;margin-bottom:8px;opacity:.3}.spt-contour-empty p{color:#6b7280;font-size:15px;font-weight:500;margin:0}.spt-contour-empty span{color:#9ca3af;font-size:12px}.spt-conv-plot{background:#fff;border:1px solid #e5e7eb;border-radius:8px;display:flex;flex-direction:column;margin:12px;min-height:240px;padding:10px 12px}.spt-conv-plot-title{color:#9ca3af;font-size:11px;font-weight:700;letter-spacing:.06em;margin-bottom:8px;text-transform:uppercase}.spt-conv-plot-canvas{flex:1 1;min-height:200px}.spt-conv-plot-empty{color:#9ca3af;font-size:12px;padding:16px;text-align:center}.lpbf-viewer{background:#1a1a1a;display:flex;flex-direction:column;height:100%;width:100%}.lpbf-viewer-toolbar{align-items:center;background:#232323;border-bottom:1px solid #2e2e2e;display:flex;gap:6px;padding:8px 12px}.lpbf-mode-btn{background:#2a2a2a;border:1px solid #3a3a3a;border-radius:3px;color:#bbb;cursor:pointer;font-size:12px;padding:5px 12px}.lpbf-mode-btn:hover:not(:disabled){background:#343434;color:#eee}.lpbf-mode-btn:disabled{cursor:not-allowed;opacity:.4}.lpbf-mode-active{background:#c47e3b!important;border-color:#c47e3b!important;color:#fff!important}.lpbf-viewer-error,.lpbf-viewer-loading{font-size:12px;font-style:italic;margin-left:12px}.lpbf-viewer-loading{color:#888}.lpbf-viewer-error{color:#d99}.lpbf-viewer-body{flex:1 1 auto;overflow:hidden;position:relative}.lpbf-viewer-empty{align-items:center;color:#777;display:flex;font-size:13px;font-style:italic;justify-content:center}.lpbf-2d-wrap,.lpbf-3d-canvas,.lpbf-viewer-empty{height:100%;width:100%}.lpbf-2d-wrap{display:flex;flex-direction:column}.lpbf-2d-controls{align-items:center;background:#1f1f1f;border-bottom:1px solid #2e2e2e;display:flex;flex-wrap:wrap;gap:4px;padding:6px 12px}.lpbf-2d-ctrl-btn{align-items:center;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:4px;color:#bbb;cursor:pointer;display:inline-flex;font-size:13px;height:28px;justify-content:center;padding:0;width:30px}.lpbf-2d-ctrl-btn:hover:not(:disabled){background:#353535;color:#fff}.lpbf-2d-ctrl-btn:disabled{cursor:not-allowed;opacity:.35}.lpbf-2d-play-btn.lpbf-2d-playing{background:#ea580c;border-color:#ea580c;color:#fff}.lpbf-2d-loop-btn.lpbf-2d-loop-on{background:#1e3a5f;border-color:#2563eb;color:#93c5fd}.lpbf-2d-divider{background:#3a3a3a;display:inline-block;height:18px;margin:0 4px;width:1px}.lpbf-2d-field-label{color:#aaa;font-size:12px;margin-left:2px}.lpbf-2d-field{font-feature-settings:"tnum";background:#2a2a2a;border:1px solid #3a3a3a;border-radius:3px;box-sizing:border-box;color:#eee;font-size:12px;font-variant-numeric:tabular-nums;height:26px;outline:none;padding:0 6px;width:64px}.lpbf-2d-field:focus{border-color:#ea580c}.lpbf-2d-field-narrow{width:60px}.lpbf-2d-field-suffix{color:#888}.lpbf-2d-field-suffix,.lpbf-2d-z-readout{font-feature-settings:"tnum";font-size:12px;font-variant-numeric:tabular-nums}.lpbf-2d-z-readout{color:#bbb;margin-left:auto}.lpbf-2d-plot{flex:1 1 auto;min-height:0;position:relative;width:100%}.lpbf-2d-legend{background:#1a1a1ad9;border:1px solid #2a2a2a;border-radius:4px;color:#ccc;display:flex;flex-direction:column;font-size:11px;gap:4px;padding:6px 10px;pointer-events:none;position:absolute;right:12px;top:8px;z-index:5}.lpbf-2d-legend-row{align-items:center;display:flex;gap:6px}.lpbf-2d-legend-line{display:inline-block;height:2px;width:20px}.lpbf-2d-legend-outer-line{background:#22d3ee}.lpbf-2d-legend-hole-line{background:#0000;border-top:1.5px dashed #fb923c;height:0}.lpbf-2d-legend-travel-line{background:#0000;border-top:1px dotted #787878b3;height:0}.lpbf-2d-legend-track-start{background:#440154}.lpbf-2d-legend-track-end{background:#fde725}.lpbf-2d-legend-dot{border-radius:50%;display:inline-block;height:8px;width:8px}.lpbf-2d-legend-start-dot{background:#4d5}.lpbf-2d-legend-end-dot{background:#d45;border-radius:0}.panel{display:flex;flex-direction:column;gap:0;height:100%;overflow-y:auto}.panel-section{border-bottom:1px solid #f3f4f6;padding:12px 14px}.panel-section-title{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}.add-tile-btn{border:none;border-radius:6px;cursor:pointer;display:block;font-size:12px;font-weight:500;margin-bottom:6px;padding:7px 10px;text-align:left;width:100%}.add-tile-cad{background:#dbeafe;color:#1d4ed8}.add-tile-cad:hover{background:#bfdbfe}.add-tile-mesh{background:#ede9fe;color:#5b21b6}.add-tile-mesh:hover{background:#ddd6fe}.tile-group{margin-bottom:10px}.tile-group-label{color:#d1d5db;font-size:10px;font-weight:600;letter-spacing:.05em;padding:0 0 4px;text-transform:uppercase}.tile-list-item{align-items:center;border-radius:6px;color:#374151;cursor:pointer;display:flex;font-size:13px;gap:8px;padding:6px 8px}.tile-list-item:hover{background:#f3f4f6}.tile-list-icon{font-size:13px}.tile-list-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prop-row{margin-bottom:10px}.prop-row label{color:#6b7280;display:block;font-size:11px;font-weight:600;margin-bottom:4px}.prop-row input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-size:13px;outline:none;padding:6px 8px;width:100%}.prop-row input:focus{border-color:#2563eb}.port-chips{display:flex;flex-wrap:wrap;gap:4px}.port-chip{border-radius:99px;font-size:11px;font-weight:500;padding:2px 8px}.port-chip-in{background:#d1fae5;color:#065f46}.port-chip-out{background:#fef3c7;color:#92400e}.placeholder-box{background:#f9fafb;border:1px dashed #e5e7eb;border-radius:8px;padding:16px;text-align:center}.placeholder-box p{color:#374151;font-size:14px;margin:0 0 6px}.placeholder-box span{color:#9ca3af;font-size:12px}.add-tile-bc{background:#d1fae5;color:#065f46}.add-tile-bc:hover{background:#a7f3d0}.add-tile-material{background:#fff7ed;border-left:3px solid #ea580c;color:#ea580c}.add-tile-material:hover{background:#fed7aa}.add-tile-solver{background:#ecfeff;border-left:3px solid #0891b2;color:#0891b2}.add-tile-solver:hover{background:#cffafe}.add-tile-export{background:#dbeafe;border-left:3px solid #1d4ed8;color:#1d4ed8}.add-tile-export:hover{background:#bfdbfe}.add-tile-spt{background:#fce7f3;border-left:3px solid #be185d;color:#be185d}.add-tile-spt:hover{background:#fbcfe8}.add-tile-spt-solver{background:#ccfbf1;border-left:3px solid #0d9488;color:#0d9488}.add-tile-spt-solver:hover{background:#99f6e4}.add-tile-spt-predictor{background:#e0e7ff;border-left:3px solid #4f46e5;color:#4f46e5}.add-tile-spt-predictor:hover{background:#c7d2fe}.project-page{background:#f5f5f5;display:flex;flex-direction:column;height:100vh;overflow:hidden}.project-loading{align-items:center;color:#9ca3af;display:flex;font-size:14px;height:100vh;justify-content:center}.project-header{align-items:center;background:#1e1e2e;display:flex;flex-shrink:0;gap:12px;height:48px;padding:0 16px;z-index:20}.back-btn{color:#7c7c9c;font-size:12px;white-space:nowrap}.back-btn:hover{color:#a0a0c0}.project-name{color:#e0e0f0;flex:1 1;font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-right{align-items:center;display:flex;gap:10px}.save-indicator{font-size:11px;white-space:nowrap}.save-saved{color:#10b981}.save-saving{color:#f59e0b}.save-unsaved{color:#ef4444}.save-btn{background:#2563eb;border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:12px;padding:5px 12px;width:auto}.save-btn:disabled{background:#3b5280;color:#7c9cd0;cursor:not-allowed}.save-btn:hover:not(:disabled){background:#1d4ed8}.tab-bar{align-items:stretch;background:#252537;border-bottom:1px solid #1a1a2e;display:flex;flex-shrink:0;height:35px;overflow-x:auto}.tab-bar::-webkit-scrollbar{height:2px}.tab-bar::-webkit-scrollbar-thumb{background:#444}.tab{align-items:center;border-right:1px solid #1a1a2e;color:#7c7c9c;cursor:pointer;display:flex;flex-shrink:0;font-size:12px;gap:6px;max-width:180px;min-width:100px;padding:0 14px;transition:background .1s;white-space:nowrap}.tab:hover{background:#2e2e45;color:#c0c0d8}.tab-active{background:#f5f5f5!important;border-bottom:2px solid #2563eb;color:#111!important}.tab-icon{flex-shrink:0;font-size:12px}.tab-label{flex:1 1;overflow:hidden;text-overflow:ellipsis}.tab-close{background:#0000;border:none;border-radius:3px;color:#7c7c9c;cursor:pointer;flex-shrink:0;font-size:10px;line-height:1;padding:2px 3px;width:auto}.tab-close:hover{background:#fee2e2;color:#dc2626}.project-body{display:flex;flex:1 1;overflow:hidden}.project-sidebar{background:#fff;border-right:1px solid #e5e7eb;flex-shrink:0;overflow-y:auto;width:220px}.project-main{flex:1 1;overflow:hidden;position:relative}.canvas-wrap{height:100%;width:100%}.main-empty{align-items:center;color:#9ca3af;display:flex;font-size:14px;height:100%;justify-content:center}.main-content{display:flex;flex-direction:column;height:100%;overflow-y:auto}.main-content-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;gap:10px;padding:20px 24px 16px}.main-content-icon{font-size:20px}.main-content-header h2{flex:1 1;font-size:18px;font-weight:600;margin:0}.main-content-type{background:#f3f4f6;border-radius:99px;color:#9ca3af;font-size:11px;padding:3px 8px}.main-content-placeholder{align-items:center;color:#9ca3af;display:flex;flex:1 1;font-size:14px;justify-content:center}.ctx-backdrop{inset:0;position:fixed;z-index:40}.ctx-menu{background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 16px #0000001f;min-width:140px;overflow:hidden;padding:4px 0;position:fixed;z-index:50}.ctx-header{color:#9ca3af;font-size:10px;font-weight:700;letter-spacing:.05em;padding:6px 14px;text-transform:uppercase}.ctx-menu button{background:#0000;border:none;border-radius:0;color:#374151;cursor:pointer;display:block;font-size:13px;padding:8px 14px;text-align:left;width:100%}.ctx-menu button:hover{background:#f9fafb}.ctx-danger{color:#dc2626!important}.ctx-danger:hover{background:#fef2f2!important}.undo-btn{background:#0000;border:1px solid #e5e7eb;border-radius:5px;color:#6b7280;cursor:pointer;font-size:12px;padding:5px 10px;width:auto}.undo-btn:hover{background:#f3f4f6}.cad-main-layout{display:flex;height:100%;overflow:hidden;width:100%}.cad-right-panel{align-items:center;background:#fff;border-left:1px solid #e5e7eb;display:flex;flex-shrink:0;justify-content:center;width:300px}.cad-right-placeholder{color:#9ca3af;padding:20px;text-align:center}.cad-right-placeholder p{color:#374151;font-size:14px;font-weight:500;margin:0 0 6px}.cad-right-placeholder span{font-size:12px}.edge-delete-btn{align-items:center;background:#fff;border:1px solid #fca5a5;border-radius:50%;box-shadow:0 1px 4px #00000026;color:#dc2626;cursor:pointer;display:flex;font-size:10px;height:20px;justify-content:center;line-height:1;padding:0;width:20px;width:auto}.edge-delete-btn:hover{background:#fef2f2;border-color:#dc2626}.settings-page{background:#f5f5f5;min-height:100vh}.settings-loading{align-items:center;color:#9ca3af;display:flex;height:100vh;justify-content:center}.settings-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;gap:16px;height:56px;padding:0 32px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.settings-header h1{flex:1 1;font-size:18px;font-weight:600;margin:0}.back-btn{background:#0000;border:none;color:#2563eb;cursor:pointer;font-size:13px;padding:4px 0;width:auto}.back-btn:hover{text-decoration:underline}.logout-btn{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#666;cursor:pointer;font-size:13px;padding:6px 14px;width:auto}.settings-main{margin:40px auto;max-width:640px;padding:0 24px}.settings-message{border-radius:8px;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;margin-bottom:20px;padding:12px 16px}.settings-message-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.settings-message-error{background:#fef2f2;border:1px solid #fca5a5;color:#dc2626}.settings-section{margin-bottom:32px}.settings-section h2{font-size:16px;font-weight:600;margin:0 0 6px}.settings-desc{color:#6b7280;font-size:13px;margin:0 0 20px}.provider-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:12px;padding:20px}.provider-header{align-items:center;display:flex;gap:12px;margin-bottom:14px}.provider-info{flex:1 1}.provider-info h3{font-size:15px;font-weight:600;margin:0 0 2px}.provider-model{color:#9ca3af;font-size:12px}.status-badge{border-radius:99px;font-size:12px;font-weight:500;padding:3px 8px}.status-connected{background:#f0fdf4;color:#166534}.status-missing{background:#f9fafb;color:#9ca3af}.active-badge{background:#dbeafe;border-radius:99px;color:#1d4ed8;font-size:11px;font-weight:600;padding:3px 8px}.set-active-btn{background:#0000;border:1px solid #e5e7eb;border-radius:6px;color:#374151;cursor:pointer;font-size:11px;padding:4px 10px;width:auto}.current-key,.set-active-btn:hover{background:#f9fafb}.current-key{align-items:center;border:1px solid #e5e7eb;border-radius:6px;display:flex;gap:10px;margin-bottom:10px;padding:8px 12px}.key-masked{color:#374151;flex:1 1;font-family:monospace;font-size:13px}.delete-key-btn{background:#0000;border:none;color:#dc2626;cursor:pointer;font-size:12px;padding:2px 6px;width:auto}.delete-key-btn:hover{text-decoration:underline}.key-input-row{display:flex;gap:8px}.key-input-wrap{flex:1 1;position:relative}.key-input-wrap input{border:1px solid #e5e7eb;border-radius:6px;box-sizing:border-box;font-family:monospace;font-size:13px;outline:none;padding:8px 36px 8px 10px;width:100%}.key-input-wrap input:focus{border-color:#2563eb}.show-key-btn{background:#0000;font-size:14px;padding:0;position:absolute;right:8px;top:50%;transform:translateY(-50%)}.save-key-btn,.show-key-btn{border:none;cursor:pointer;width:auto}.save-key-btn{background:#2563eb;border-radius:6px;color:#fff;font-size:13px;padding:8px 16px;white-space:nowrap}.save-key-btn:disabled{background:#93c5fd;cursor:not-allowed}.save-key-btn:hover:not(:disabled){background:#1d4ed8}.license-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:20px}.license-status-row{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.license-status-info{align-items:center;display:flex;gap:12px}.license-badge{border-radius:99px;font-size:12px;font-weight:600;padding:3px 10px}.license-badge-valid{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.license-badge-expired,.license-badge-revoked{background:#fef2f2;border:1px solid #fca5a5;color:#dc2626}.license-key-masked{color:#6b7280;font-family:monospace;font-size:13px}.license-remove-btn{background:#0000;border:none;border-radius:4px;color:#dc2626;cursor:pointer;font-size:12px;padding:4px 8px;width:auto}.license-remove-btn:hover{background:#fef2f2}.license-meta-grid{grid-gap:12px;background:#f9fafb;border-radius:8px;display:grid;gap:12px;grid-template-columns:1fr 1fr;margin-bottom:16px;padding:14px}.license-meta-item label{color:#9ca3af;display:block;font-size:10px;font-weight:600;letter-spacing:.05em;margin-bottom:3px;text-transform:uppercase}.license-meta-item span{color:#111;font-size:13px;font-weight:500}.license-empty{color:#9ca3af;padding:16px 0 20px;text-align:center}.license-empty p{color:#374151;font-size:15px;font-weight:500;margin:0 0 4px}.license-empty span{font-size:13px}.license-input-row{display:flex;gap:8px}.license-input{border:1px solid #e5e7eb;border-radius:6px;flex:1 1;font-family:monospace;font-size:13px;letter-spacing:.05em;outline:none;padding:8px 12px}.license-input:focus{border-color:#2563eb}.license-activate-btn{background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;white-space:nowrap;width:auto}.license-activate-btn:disabled{background:#93c5fd;cursor:not-allowed}.license-activate-btn:hover:not(:disabled){background:#1d4ed8}*{box-sizing:border-box;margin:0;padding:0}body{background:#f5f5f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.App{margin:60px auto;max-width:800px;padding:0 20px}h1{font-size:28px;margin-bottom:8px}p{color:#666}.upload-box,p{margin-bottom:24px}.upload-box{align-items:center;background:#fff;border:1px solid #ddd;border-radius:8px;display:flex;gap:12px;padding:20px}input[type=file]{flex:1 1;font-size:14px}button{background:#2563eb;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px;white-space:nowrap}button:disabled{background:#93c5fd;cursor:not-allowed}button:hover:not(:disabled){background:#1d4ed8}.error{background:#fef2f2;border:1px solid #fca5a5;border-radius:8px;color:#dc2626;margin-bottom:16px;padding:12px 16px}.result{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden}.result-header{background:#f0fdf4;border-bottom:1px solid #bbf7d0;color:#166534;display:flex;font-weight:500;justify-content:space-between;padding:14px 16px}.lines{max-height:500px;overflow-y:auto;padding:8px 0}.line{display:flex;font-family:monospace;font-size:14px;gap:16px;padding:6px 16px}.line:hover{background:#f9fafb}.line-number{color:#9ca3af;min-width:32px;text-align:right;-webkit-user-select:none;user-select:none}.line-text{color:#111}
/*# sourceMappingURL=main.4e83a5f0.css.map*/