:root{--bg-primary: #ffffff;--bg-secondary: #f0f0f0;--bg-tertiary: #e5e5e5;--text-primary: #1a1a1a;--text-secondary: #666666;--border: #dddddd;--accent: #2563eb;--accent-hover: #1d4ed8;--error: #dc2626;--success: #16a34a;--panel-bg: #ffffff;--panel-header-bg: #f5f5f5}[data-theme=dark]{--bg-primary: #1a1a1a;--bg-secondary: #2d2d2d;--bg-tertiary: #3a3a3a;--text-primary: #e5e5e5;--text-secondary: #a3a3a3;--border: #404040;--accent: #3b82f6;--accent-hover: #60a5fa;--error: #f87171;--success: #4ade80;--panel-bg: #252525;--panel-header-bg: #333333}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,monospace;font-size:13px;color:var(--text-primary);background:var(--bg-primary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.app-layout{display:flex;flex-direction:column;height:100%}.app-header{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;background:var(--panel-header-bg);border-bottom:1px solid var(--border);flex-shrink:0;min-height:36px}.app-main{flex:1;display:flex;min-height:0;overflow:hidden}.app-footer{padding:4px 12px;background:var(--panel-header-bg);border-top:1px solid var(--border);flex-shrink:0;font-size:12px;min-height:28px;display:flex;align-items:center}.splitter-h{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden}.splitter-v{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.splitter-pane{overflow:hidden;display:flex;flex-direction:column;min-width:0;min-height:0}.splitter-handle-h{width:5px;cursor:col-resize;background:var(--border);flex-shrink:0}.splitter-handle-v{height:5px;cursor:row-resize;background:var(--border);flex-shrink:0}.splitter-handle-h:hover,.splitter-handle-v:hover{background:var(--accent)}body.splitter-dragging{-webkit-user-select:none;user-select:none}.switcher{display:flex;flex:1;min-height:0;min-width:0;overflow:hidden}.switcher-v{flex-direction:column}.switcher-h{flex-direction:row}.switcher-tabs{display:flex;flex-shrink:0;background:var(--panel-header-bg);gap:0}.switcher-tabs-v{flex-direction:row;border-bottom:1px solid var(--border)}.switcher-tabs-h{flex-direction:column;border-right:1px solid var(--border)}.switcher-tab{padding:4px 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid transparent}.switcher-tabs-v .switcher-tab{border-bottom:2px solid transparent;margin-bottom:-1px}.switcher-tabs-h .switcher-tab{border-right:2px solid transparent;margin-right:-1px}.switcher-tab:hover{color:var(--accent)}.switcher-tab-active{color:var(--accent);background:var(--bg-primary)}.switcher-tabs-v .switcher-tab-active{border-bottom-color:var(--accent)}.switcher-tabs-h .switcher-tab-active{border-right-color:var(--accent)}.switcher-content{flex:1;min-height:0;min-width:0;overflow:hidden;position:relative}.switcher-pane{height:100%;width:100%;overflow:hidden;display:flex;flex-direction:column}.panel-wrapper{display:flex;flex-direction:column;height:100%;overflow:hidden}.panel-header{padding:4px 8px;background:var(--panel-header-bg);border-bottom:1px solid var(--border);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);flex-shrink:0}.panel-content{flex:1;overflow:hidden;position:relative;background:var(--panel-bg)}.btn{padding:4px 10px;border:1px solid var(--border);border-radius:3px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:12px;font-family:inherit;transition:background .15s}.btn:hover{background:var(--bg-tertiary)}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-small{padding:2px 8px;font-size:11px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:1000;display:flex;align-items:center;justify-content:center}.modal-dialog{background:var(--panel-bg);border:1px solid var(--border);border-radius:6px;width:420px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000040}.text-editor{display:flex;flex-direction:column;height:100%;overflow:hidden}.ce-solver-status{padding:2px 8px;font-size:11px;background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;min-height:0}.ce-solver-status:empty{display:none}.tutorial-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:2000;transition:clip-path .3s ease}.tutorial-tooltip{position:fixed;z-index:2001;background:var(--panel-bg);border:1px solid var(--border);border-radius:6px;box-shadow:0 8px 32px #0000004d;width:340px;max-width:calc(100vw - 32px);font-size:12px;line-height:1.5}.tutorial-tooltip-title{padding:10px 14px 6px;font-size:14px;font-weight:600;color:var(--text-primary)}.tutorial-tooltip-body{padding:0 14px 10px;color:var(--text-secondary)}.tutorial-tooltip-body code{background:var(--bg-secondary);padding:1px 4px;border-radius:2px;font-size:11px}.tutorial-tooltip-body pre{white-space:pre;overflow-x:auto}.tutorial-tooltip-nav{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;border-top:1px solid var(--border)}.tutorial-tooltip-progress{font-size:11px;color:var(--text-secondary)}.tutorial-tooltip-buttons{display:flex;gap:6px}:root{--pin-unassigned: #9ca3af;--pin-assigned: #3b82f6;--pin-conflict: #ef4444;--pin-reserved: #374151}[data-theme=dark]{--pin-unassigned: #6b7280;--pin-assigned: #60a5fa;--pin-conflict: #f87171;--pin-reserved: #1f2937}#app{height:100%;display:flex;flex-direction:column}.header-left{display:flex;align-items:center;gap:12px}.app-title{font-weight:700;font-size:14px}.mcu-info{font-size:12px;color:var(--text-secondary)}.header-right{display:flex;gap:6px}.footer-content{display:flex;align-items:center;gap:12px}.footer-hint{color:var(--text-secondary)}.status-success{color:var(--success)}.status-error{color:var(--error)}.status-info{color:var(--accent)}.btn-abort{background:var(--error);color:#fff;border-color:var(--error)}.btn-abort:hover{opacity:.85}.drag-over{outline:2px dashed var(--accent);outline-offset:-4px}.package-viewer{width:100%;height:100%;position:relative;display:flex;flex-direction:column}.pv-toolbar{display:flex;align-items:center;gap:4px;padding:3px 8px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0;z-index:10}.pv-zoom-label{font-size:11px;color:var(--text-secondary);min-width:36px;text-align:center}.pv-toolbar-separator{width:1px;height:18px;background:var(--border);margin:0 4px;flex-shrink:0}.pv-search-input{padding:2px 6px;border:1px solid var(--border);border-radius:3px;background:var(--bg-primary);color:var(--text-primary);font-size:11px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;width:160px;outline:none;transition:border-color .15s,box-shadow .15s}.pv-search-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #2563eb33}.pv-search-input::placeholder{color:var(--text-secondary);font-family:inherit}.pv-toast{position:absolute;bottom:16px;left:50%;transform:translate(-50%);background:var(--text-primary);color:var(--bg-primary);padding:6px 16px;border-radius:4px;font-size:12px;z-index:100;pointer-events:none;animation:pv-toast-fade 2s ease forwards}@keyframes pv-toast-fade{0%,70%{opacity:1}to{opacity:0}}.package-canvas{flex:1;min-height:0;display:block}.package-canvas-overlay{position:absolute;pointer-events:none;z-index:101}.pin-tooltip{position:absolute;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;padding:6px 8px;font-size:11px;line-height:1.4;pointer-events:none;z-index:100;max-width:300px;box-shadow:0 2px 8px #00000026}.tooltip-assigned{color:var(--pin-assigned);font-weight:700}.tooltip-dma{color:var(--text-secondary);font-weight:400;font-size:.9em}.tooltip-channel{color:var(--accent)}.tooltip-signals{color:var(--text-secondary);word-break:break-word}.tooltip-none{color:var(--text-secondary);font-style:italic}.tooltip-error{color:var(--error);font-weight:700}.tooltip-match{color:#fbbf24;font-weight:600;animation:signal-pulse 1.2s ease-in-out infinite}@keyframes signal-pulse{0%,to{opacity:.6}50%{opacity:1}}.pv-assign-popup{position:absolute;background:var(--panel-bg);border:1px solid var(--border);border-radius:4px;min-width:160px;max-width:240px;max-height:300px;display:flex;flex-direction:column;z-index:200;box-shadow:0 4px 16px #0003;font-size:11px}.pv-assign-header{padding:6px 8px;font-weight:700;font-size:12px;border-bottom:1px solid var(--border);color:var(--text-primary);background:var(--bg-secondary);border-radius:4px 4px 0 0}.pv-assign-list{overflow-y:auto;max-height:260px}.pv-assign-item{padding:4px 8px;cursor:pointer;color:var(--text-primary);font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:11px;white-space:nowrap}.pv-assign-item:hover{background:var(--accent);color:#fff}.pv-assign-current{background:var(--bg-tertiary);font-weight:600}.pv-assign-remove{color:var(--error);border-bottom:1px solid var(--border);font-family:inherit}.pv-assign-remove:hover{background:var(--error);color:#fff}.pv-assign-match{color:#fbbf24;font-weight:600;animation:signal-pulse 1.2s ease-in-out infinite}.pv-assign-match:hover{color:#fff;animation:none}.pv-assign-note{padding:4px 8px;font-size:10px;font-style:italic;color:var(--text-secondary);background:var(--bg-tertiary);border-bottom:1px solid var(--border)}.pv-assign-subheader{padding:4px 8px;font-size:10px;font-weight:600;color:var(--text-secondary);background:var(--bg-tertiary);text-transform:uppercase;letter-spacing:.04em;border-top:1px solid var(--border)}.tooltip-shared{display:inline-block;font-size:10px;font-style:italic;color:var(--text-secondary);margin-bottom:2px}.tooltip-logical-head{margin-top:4px;font-weight:600;font-size:11px;border-top:1px dashed var(--border);padding-top:2px}.tooltip-compare-head{margin-top:4px;font-size:10px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;border-top:1px dashed var(--border);padding-top:3px}.tooltip-compare-row{display:flex;align-items:center;gap:4px;font-size:11px;line-height:1.4}.tooltip-compare-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.tooltip-compare-sol{color:var(--text-secondary);margin-right:4px}.settings-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:1000;display:flex;align-items:center;justify-content:center}.settings-modal{background:var(--panel-bg);border:1px solid var(--border);border-radius:6px;width:420px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000040}.settings-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border)}.settings-body{padding:12px;overflow-y:auto}.settings-section{margin-bottom:14px}.settings-section h3{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);margin-bottom:6px}.settings-hint{font-size:11px;color:var(--text-secondary);margin-bottom:6px}.settings-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.settings-row label{font-size:12px}.settings-input{width:80px;padding:2px 6px;border:1px solid var(--border);border-radius:3px;background:var(--bg-secondary);color:var(--text-primary);font-size:12px;font-family:inherit;text-align:right}.settings-row-vertical{flex-direction:column;align-items:flex-start;gap:4px}.settings-row-vertical>label{display:flex;align-items:center;gap:8px}.solver-preset-btns{display:inline-flex;gap:4px}.solver-checkbox-list{display:flex;flex-direction:column;gap:2px;padding-left:4px}.solver-checkbox{display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer}.solver-checkbox input[type=checkbox]{margin:0}.btn-tiny{padding:1px 6px;font-size:10px;border-radius:3px;background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary);cursor:pointer}.btn-tiny:hover{background:var(--bg-hover, var(--border))}.settings-actions{display:flex;justify-content:space-between;margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.dm-modal{width:630px}.dm-list{display:flex;flex-direction:column;gap:2px}.dm-row{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:3px;font-size:12px}.dm-row:hover{background:var(--bg-secondary)}.dm-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-size{color:var(--text-secondary);font-size:11px;min-width:40px;text-align:right}.dm-delete{color:var(--error, #ef4444)}.dm-tags{display:flex;gap:3px;flex-shrink:0}.dm-tag{display:inline-block;padding:0 4px;font-size:9px;font-weight:600;line-height:16px;border-radius:3px;background:var(--accent, #3b82f6);color:#fff;letter-spacing:.3px}.header-center{display:flex;align-items:center;gap:4px}.project-select{padding:2px 6px;border:1px solid var(--border);border-radius:3px;background:var(--bg-secondary);color:var(--text-primary);font-size:12px;font-family:inherit;max-width:160px}.ps-list{padding:6px 8px;overflow-y:auto;height:100%}.ps-row{display:flex;align-items:baseline;gap:6px;padding:2px 0;font-size:12px}.ps-port{font-weight:700;min-width:40px;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.ps-peripherals{color:var(--text-secondary);word-break:break-word}.ps-highlightable{cursor:pointer;border-radius:3px;padding:0 2px;transition:background-color .15s}.ps-highlightable:hover{background-color:#80808026}.ps-highlight-active{background-color:#80808033;outline:1px solid var(--text-secondary);outline-offset:1px}.ps-peripheral-instance{font-family:SF Mono,Fira Code,Cascadia Code,monospace}.ps-summary{font-size:11px;color:var(--text-secondary);padding-bottom:4px;margin-bottom:4px;border-bottom:1px solid var(--border)}.ps-empty{padding:8px;color:var(--text-secondary);font-size:11px;font-style:italic}.ps-unused{margin-top:6px;padding-top:4px;border-top:1px solid var(--border)}.ps-unused-header{font-size:11px;color:var(--text-secondary);margin-bottom:2px}.ps-unused-row{font-size:11px;color:var(--text-secondary);padding:1px 0;word-break:break-word}.dm-version-list{padding-left:20px}.dm-version-row{display:flex;align-items:center;gap:6px;padding:2px 4px;font-size:11px}.dm-version-row:hover{background:var(--bg-secondary)}.dm-version-id{font-weight:600;min-width:24px;color:var(--accent)}.dm-version-date{color:var(--text-secondary);min-width:120px}.dm-expand-btn{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:10px;width:16px;text-align:center;flex-shrink:0}.dm-storage-info{font-size:11px;color:var(--text-secondary);font-weight:400}.dm-inspect-panel{margin:2px 0 6px 20px;border:1px solid var(--border);border-radius:3px;background:var(--bg-primary);padding:4px;font-size:11px;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.dm-inspect-row{display:flex;align-items:center;gap:6px;padding:1px 4px}.dm-inspect-row:hover{background:var(--bg-secondary)}.dm-inspect-header{font-weight:700;border-bottom:1px solid var(--border);padding-bottom:2px;margin-bottom:2px}.dm-inspect-sub{font-weight:600;margin-top:3px;color:var(--accent)}.dm-inspect-detail{padding-left:16px;color:var(--text-secondary)}.dm-inspect-key{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-inspect-size{min-width:50px;text-align:right;flex-shrink:0}.dm-inspect-bar-cell{width:60px;flex-shrink:0}.dm-inspect-bar{display:block;height:8px;background:var(--accent);border-radius:2px;min-width:1px}.st-save-bar{display:flex;align-items:center;gap:8px;padding:4px 8px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.st-table-wrapper{height:100%;overflow-y:auto;outline:none}.st-empty{padding:12px;color:var(--text-secondary);font-size:12px;font-style:italic}.st-table{width:100%;border-collapse:collapse;font-size:12px}.st-table th{position:sticky;top:0;background:var(--panel-header-bg);border-bottom:1px solid var(--border);padding:3px 6px;text-align:left;font-size:11px;font-weight:600;color:var(--text-secondary)}.st-table td{padding:2px 6px;border-bottom:1px solid var(--border);white-space:nowrap}.st-row-selected{background:var(--accent);color:#fff}.st-cell-mcu{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:10px}.st-cell-id{width:30px;text-align:right;color:var(--text-secondary)}.st-row-selected .st-cell-id{color:inherit}.st-cell-cost{width:50px;text-align:right;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.st-cell-pins,.st-cell-perif{width:40px;text-align:right}.st-cell-name{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis}.st-cell-mcu{color:var(--text-secondary);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}.st-row-selected .st-cell-name{color:inherit}.st-more{padding:6px;text-align:center;font-size:11px;color:var(--text-secondary)}.st-group-header{cursor:pointer;-webkit-user-select:none;user-select:none}.st-group-header td{padding:4px 6px 2px;font-size:10px;font-weight:600;color:var(--text-secondary);background:var(--bg-secondary);border-bottom:1px solid var(--border);letter-spacing:.3px;position:sticky;top:22px;z-index:1}.solver-debug-overlay{position:fixed;bottom:8px;right:8px;z-index:900;background:var(--panel-bg);border:1px solid var(--border);border-radius:4px;font-size:11px;box-shadow:0 2px 8px #00000026;max-height:50vh;overflow-y:auto;min-width:380px}.sdo-header{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border-bottom:1px solid var(--border);font-weight:600;font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.sdo-close{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:16px;line-height:1;padding:0 2px}.sdo-close:hover{color:var(--text-primary)}.sdo-table{width:100%;border-collapse:collapse}.sdo-table th,.sdo-table td{padding:2px 6px;white-space:nowrap}.sdo-table thead th{font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border);font-size:10px;text-transform:uppercase}.sdo-cell-name{text-align:left}.sdo-cell-state{text-align:center;width:24px}.sdo-cell-num{text-align:right;font-family:SF Mono,Cascadia Code,Consolas,monospace;font-size:11px}.sdo-header-actions{display:flex;align-items:center;gap:6px}.sdo-overview{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:3px;font-size:11px;padding:2px 8px;cursor:pointer}.sdo-overview:hover{background:var(--accent);color:#fff}.sdo-details{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:3px;font-size:10px;width:18px;height:18px;cursor:pointer;font-weight:600;padding:0;line-height:1}.sdo-details:hover{background:var(--accent);color:#fff}.sdo-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:2000;display:flex;align-items:center;justify-content:center}.sdo-modal{background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);border-radius:6px;width:min(900px,92vw);max-height:85vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080}.sdo-modal-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--bg-secondary);border-radius:6px 6px 0 0}.sdo-modal-close{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:18px;line-height:1;padding:0 4px}.sdo-modal-close:hover{color:var(--text-primary)}.sdo-modal-body{padding:12px;overflow-y:auto;font-size:12px}.sdo-modal-body section{margin-bottom:16px}.sdo-modal-body h4{margin:0 0 6px;font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.sdo-modal-body h5{margin:8px 0 4px;font-size:12px}.sdo-modal-kv,.sdo-modal-table{border-collapse:collapse;width:100%;font-family:SF Mono,Cascadia Code,Consolas,monospace;font-size:11px}.sdo-modal-kv td,.sdo-modal-table th,.sdo-modal-table td{border-bottom:1px solid var(--border);padding:3px 6px;vertical-align:top}.sdo-modal-table thead th{text-align:left;background:var(--bg-secondary)}.sdo-modal-shortfall{background:#ef44441f}.sdo-modal-warn{color:#f59e0b;margin:4px 0;font-size:11px}.sdo-modal-error{color:var(--error)}.sdo-modal-hint{color:var(--text-secondary);font-size:11px;font-style:italic}.sdo-modal-list{word-break:break-word}.sdo-modal-port{margin-bottom:12px}.sdo-modal-opt{color:var(--text-secondary);font-style:italic;font-size:10px}.sdo-modal-errors{margin:0;padding-left:18px;font-size:11px}.sdo-modal-pill{display:inline-block;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:3px;padding:1px 6px;margin:0 4px 2px 0;font-family:SF Mono,Cascadia Code,Consolas,monospace;font-size:10px}.sdo-modal-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.sdo-modal-section-head h4{margin:0 0 6px}.sdo-modal-toggle{font-size:11px;color:var(--text-secondary);display:inline-flex;align-items:center;gap:4px;cursor:pointer;-webkit-user-select:none;user-select:none}.sdo-modal-toggle input{margin:0}.export-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:1000;display:flex;align-items:center;justify-content:center}.export-modal{background:var(--panel-bg);border:1px solid var(--border);border-radius:6px;width:300px;box-shadow:0 8px 32px #00000040}.export-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border)}.export-body{padding:8px;display:flex;flex-direction:column;gap:4px}.export-option{display:flex;flex-direction:column;align-items:flex-start;padding:8px 12px;text-align:left;border:1px solid var(--border);border-radius:4px;background:var(--bg-primary);cursor:pointer;transition:background .15s}.export-option:hover:not(.disabled){background:var(--bg-tertiary)}.export-option.disabled{opacity:.4;cursor:default}.export-option-title{font-size:13px;font-weight:600;color:var(--text-primary)}.export-option-desc{font-size:11px;color:var(--text-secondary);margin-top:2px}.export-separator{height:1px;background:var(--border);margin:4px 0}.code-editor-wrap{position:relative;height:200px;border:1px solid var(--border);border-radius:3px;overflow:hidden}.code-editor-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px #2563eb33}.code-editor-highlight,.export-code-editor{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;padding:8px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:12px;line-height:1.4;-moz-tab-size:2;tab-size:2;white-space:pre;overflow:auto;word-wrap:normal}.code-editor-highlight{pointer-events:none;background:var(--bg-primary);color:var(--text-primary);z-index:0}.export-code-editor{background:transparent;color:transparent;caret-color:var(--text-primary);z-index:1;border:none;outline:none;resize:none;width:100%;height:100%}.hl-keyword{color:#c678dd}.hl-string{color:#98c379}.hl-comment{color:#7f848e;font-style:italic}.hl-number{color:#d19a66}[data-theme=dark] .hl-keyword{color:#c678dd}[data-theme=dark] .hl-string{color:#98c379}[data-theme=dark] .hl-comment{color:#7f848e}[data-theme=dark] .hl-number{color:#d19a66}:root .hl-keyword{color:#7c3aed}:root .hl-string{color:#16a34a}:root .hl-comment{color:#9ca3af;font-style:italic}:root .hl-number{color:#d97706}.export-error{font-size:11px;padding:4px 0;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.export-help{margin-top:6px;padding:8px;border:1px solid var(--border);border-radius:3px;background:var(--bg-secondary);font-size:11px;line-height:1.5}.export-help pre{margin:4px 0;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:11px;white-space:pre;overflow-x:auto}.pv-edit-controls{margin-left:auto;display:flex;align-items:center;gap:6px}.pv-edit-cost{font-size:11px;color:var(--text-secondary);white-space:nowrap}.pv-edit-delta.good{color:#22c55e}.pv-edit-delta.bad{color:#ef4444}.pv-edit-delta.neutral{color:var(--text-secondary)}.pv-doc-btn{font-size:10px;letter-spacing:.03em}.pv-doc-btn:disabled{opacity:.4;cursor:default;pointer-events:none}.pv-btn.pv-btn-primary{background:#2563eb;border-color:#2563eb;color:#fff}.pv-btn.pv-btn-primary:hover{background:#1d4ed8}.edit-menu{position:fixed;background:var(--panel-bg);border:1px solid var(--border);border-radius:4px;min-width:220px;max-width:360px;max-height:340px;overflow-y:auto;z-index:400;box-shadow:0 4px 16px #0000004d;font-size:11px}.edit-menu-title{padding:5px 8px;font-weight:600;border-bottom:1px solid var(--border);color:var(--text-secondary);position:sticky;top:0;background:var(--panel-bg)}.edit-menu-empty{padding:6px 8px;color:var(--text-secondary)}.edit-menu-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:4px 8px;cursor:pointer}.edit-menu-row:hover{background:var(--border)}.edit-menu-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-menu-delta{flex:none;font-variant-numeric:tabular-nums}.edit-menu-delta.good{color:#22c55e}.edit-menu-delta.bad{color:#ef4444}.edit-menu-delta.neutral{color:var(--text-secondary)}.docs-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:1000;display:flex;align-items:center;justify-content:center}.docs-modal{background:var(--panel-bg, var(--bg-primary));border:1px solid var(--border);border-radius:6px;box-shadow:0 8px 32px #00000059;display:flex;flex-direction:column;overflow:hidden}.docs-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.docs-body{overflow-y:auto;padding:12px 18px;line-height:1.55;color:var(--text-primary)}.md-body h1,.md-body h2,.md-body h3,.md-body h4,.md-body h5,.md-body h6{line-height:1.25;margin:1.1em 0 .5em;scroll-margin-top:8px}.md-body h1{font-size:1.6em}.md-body h2{font-size:1.35em;border-bottom:1px solid var(--border);padding-bottom:.2em}.md-body h3{font-size:1.15em}.md-body h4{font-size:1.02em}.md-body p{margin:.5em 0}.md-body ul,.md-body ol{margin:.4em 0;padding-left:1.5em}.md-body li{margin:.15em 0}.md-body a{color:#2563eb;text-decoration:none}.md-body a:hover{text-decoration:underline}.md-body code{background:var(--bg-secondary);padding:.1em .35em;border-radius:3px;font-family:monospace;font-size:.9em}.md-body pre.md-code{background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;padding:8px 10px;overflow-x:auto;margin:.6em 0}.md-body pre.md-code code{background:none;padding:0;font-size:.85em}.md-body blockquote{margin:.6em 0;padding:.2em .9em;border-left:3px solid var(--border);color:var(--text-secondary)}.md-body hr{border:none;border-top:1px solid var(--border);margin:1.2em 0}.md-body table.md-table{border-collapse:collapse;margin:.6em 0;font-size:.92em;display:block;overflow-x:auto}.md-body table.md-table th,.md-body table.md-table td{border:1px solid var(--border);padding:4px 8px;text-align:left}.md-body table.md-table th{background:var(--bg-secondary)}.st-cell-status{width:1.4em;text-align:center;padding-right:0}.sv-icon{font-weight:700;cursor:help}.sv-valid{color:#22c55e}.sv-extra{color:#3b82f6}.sv-invalid{color:#ef4444}.context-menu{position:fixed;background:var(--panel-bg);border:1px solid var(--border);border-radius:4px;min-width:160px;z-index:1300;box-shadow:0 4px 16px #0000004d;font-size:12px;padding:4px 0}.context-menu-item{position:relative;padding:5px 22px 5px 10px;cursor:pointer;white-space:nowrap;color:var(--text-primary)}.context-menu-item:hover{background:var(--border)}.context-menu-disabled{color:var(--text-secondary);cursor:default;opacity:.5}.context-menu-disabled:hover{background:transparent}.context-menu-separator{height:1px;margin:4px 0;background:var(--border)}.context-menu-arrow{position:absolute;right:8px;color:var(--text-secondary)}.context-menu-submenu{position:absolute;left:100%;top:-5px;margin-left:1px;display:none}.context-menu-has-submenu:hover>.context-menu-submenu{display:block}.constraint-editor{display:flex;flex-direction:column;height:100%;overflow:hidden}.ce-toolbar{display:flex;align-items:center;gap:6px;padding:3px 8px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.ce-toolbar-spacer{flex:1}.ce-stats{font-size:11px;color:var(--text-secondary)}.ce-solver-status{display:flex;align-items:flex-start;gap:4px;padding:2px 8px;font-size:11px;background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;min-height:0}.ce-solver-status.is-empty{display:none}.ce-status-toggle{flex:none;padding:0 2px;border:none;background:none;cursor:pointer;font-size:10px;line-height:16px;color:var(--text-secondary)}.ce-status-toggle:hover{color:var(--text-primary)}.ce-status-content{flex:1;min-width:0;max-height:110px;overflow-y:auto;line-height:16px}.ce-solver-status.collapsed .ce-status-content{max-height:16px;overflow:hidden}.ce-editor-wrapper{flex:1;display:flex;min-height:0;overflow:hidden;position:relative}.ce-minimap{flex-shrink:0;background:var(--bg-secondary);border-left:1px solid var(--border)}.ce-line-numbers{width:36px;flex-shrink:0;background:var(--bg-secondary);border-right:1px solid var(--border);padding:8px 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ce-line-num{height:18px;line-height:18px;padding:0 6px;text-align:right;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:11px;color:var(--text-secondary)}.ce-code-area{flex:1;position:relative;overflow:hidden;background:var(--panel-bg)}.ce-highlight,.ce-textarea{position:absolute;top:0;left:0;width:100%;height:100%;padding:8px 8px 50%;margin:0;border:none;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:12px;line-height:18px;white-space:pre;overflow:auto;-moz-tab-size:2;tab-size:2;word-wrap:normal;background:transparent}.ce-highlight{pointer-events:none;color:var(--text-primary);overflow:hidden}.ce-highlight-inner,.ce-line-nums-inner{display:block;will-change:transform}.ce-textarea{color:transparent;caret-color:var(--text-primary);resize:none;outline:none}.ce-textarea::placeholder{color:var(--text-secondary);opacity:.5}.ce-textarea:placeholder-shown{color:var(--text-secondary);opacity:.5}.ce-keyword{color:#7c3aed;font-weight:600}[data-theme=dark] .ce-keyword{color:#a78bfa}.ce-string{color:#059669}[data-theme=dark] .ce-string{color:#34d399}.ce-comment{color:#9ca3af;font-style:italic}.ce-number{color:#d97706}[data-theme=dark] .ce-number{color:#fbbf24}.ce-builtin{color:#2563eb}[data-theme=dark] .ce-builtin{color:#60a5fa}.ce-operator{color:#dc2626}[data-theme=dark] .ce-operator{color:#f87171}.ce-error-line{background:#dc26261a;display:inline;border-bottom:1px wavy #dc2626}[data-theme=dark] .ce-error-line{background:#f871711a;border-bottom-color:#f87171}.ce-warning-line{background:#eab30847;display:inline;border-bottom:2px wavy #a16207}[data-theme=dark] .ce-warning-line{background:#facc153d;border-bottom-color:#fbbf24}.ce-error-panel{max-height:100px;overflow-y:auto;background:var(--bg-secondary);border-top:1px solid var(--border);padding:4px 8px;font-size:11px;flex-shrink:0}.ce-error-item{padding:2px 0;display:flex;gap:8px;align-items:baseline}.ce-error-loc{color:var(--error);font-weight:600;white-space:nowrap;flex-shrink:0}.ce-error-item.ce-warning-item .ce-error-loc{color:#a16207}[data-theme=dark] .ce-error-item.ce-warning-item .ce-error-loc{color:#fbbf24}.ce-error-msg{color:var(--text-primary)}.ce-suggestion{color:var(--accent);font-style:italic}.ce-error-more{color:var(--text-secondary);font-style:italic;padding:2px 0}.ce-help-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:1000;display:flex;align-items:center;justify-content:center}.ce-help-modal{background:var(--panel-bg);border:1px solid var(--border);border-radius:6px;width:560px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000004d}.ce-help-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0;font-size:13px}.ce-help-body{overflow-y:auto;padding:14px;font-size:12px;line-height:1.5}.ce-help-body section{margin-bottom:16px}.ce-help-body h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);margin-bottom:6px}.ce-help-body p{margin:4px 0;color:var(--text-secondary)}.ce-help-code{background:var(--bg-secondary);border:1px solid var(--border);border-radius:3px;padding:8px 10px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:11px;line-height:1.5;overflow-x:auto;white-space:pre;color:var(--text-primary)}.ce-help-body table{border-collapse:collapse;width:100%;font-size:11px}.ce-help-body table td{padding:3px 8px;border-bottom:1px solid var(--border);vertical-align:top}.ce-help-body table td:first-child{font-family:SF Mono,Fira Code,Cascadia Code,monospace;white-space:nowrap;color:var(--accent)}.ce-help-body table td:last-child{color:var(--text-secondary)}.ce-help-body code{font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:11px;background:var(--bg-secondary);padding:1px 4px;border-radius:2px}.ce-hovertip{position:fixed;z-index:1200;max-width:340px;padding:6px 9px;font-size:12px;line-height:1.45;color:var(--text-primary);background:var(--panel-bg);border:1px solid var(--border);border-radius:5px;box-shadow:0 4px 16px #0000004d;pointer-events:none;white-space:normal}.ce-hovertip-kw{color:#2563eb;font-weight:600;font-family:SF Mono,Fira Code,Cascadia Code,monospace}[data-theme=dark] .ce-hovertip-kw{color:#60a5fa}.solution-table{display:flex;flex-direction:column;height:100%;overflow:hidden}.st-toolbar{display:flex;align-items:center;gap:8px;padding:4px 8px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.st-stats{font-size:11px;color:var(--text-secondary)}.st-table-wrapper{flex:1;overflow:auto;min-height:0;outline:none;border:2px solid transparent}.st-table-wrapper:focus{border-color:var(--accent)}.st-empty{padding:20px;text-align:center;color:var(--text-secondary);font-size:12px}.st-table{width:100%;border-collapse:collapse;font-size:11px}.st-table thead{position:sticky;top:0;z-index:1}.st-table th{padding:4px 8px;text-align:left;background:var(--panel-header-bg);border-bottom:1px solid var(--border);font-weight:600;color:var(--text-secondary);white-space:nowrap}.st-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.st-sortable:hover{color:var(--accent)}.st-table td{padding:3px 8px;border-bottom:1px solid var(--border);white-space:nowrap}.st-table tbody tr{cursor:pointer}.st-table tbody tr:hover{background:var(--bg-secondary)}.st-row-selected{background:var(--accent)!important;color:#fff}.st-row-selected td{color:#fff}.st-cell-id{color:var(--text-secondary);width:30px;text-align:right}.st-cell-cost{width:50px;text-align:right;font-weight:600}.st-cell-pins,.st-cell-perif{width:40px;text-align:center}.st-cell-assign{font-family:SF Mono,Fira Code,monospace;font-size:10px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;max-width:300px}.st-more{padding:8px;text-align:center;font-size:11px;color:var(--text-secondary);font-style:italic}.st-status{padding:2px 8px;font-size:11px;background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;min-height:20px}.st-error{color:var(--error)}.st-warning{color:#d97706}[data-theme=dark] .st-warning{color:#fbbf24}.st-sender{color:#6b7280;font-weight:600}[data-theme=dark] .st-sender{color:#9ca3af}.st-save-bar{display:flex;align-items:center;gap:8px;padding:4px 8px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.st-save-info{font-size:11px;color:var(--text-secondary)}.st-group-header{cursor:pointer;background:var(--bg-secondary)}.st-group-header td{padding:4px 8px;font-weight:600;font-size:11px;color:var(--text-secondary)}.st-group-header:hover td{color:var(--accent)}.st-group-header.st-focused td{background:var(--accent);color:#fff}.st-cell-solver{width:30px;text-align:center;color:var(--text-secondary);font-size:10px}.st-cell-name{overflow:hidden;text-overflow:ellipsis;max-width:150px}
