body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}#app{min-height:100vh}.code-assistant[data-v-635b722b]{display:flex;flex-direction:column;height:100%;width:100%;min-width:280px;overflow:hidden;background:#fff;color:#1f2933;font-size:14px}.messages-container[data-v-635b722b]{flex:1;overflow-y:auto;padding:16px 20px;background:#f7fafc;width:100%;min-width:0}.empty-state[data-v-635b722b]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#888}.empty-icon[data-v-635b722b]{font-size:48px;margin-bottom:16px}.empty-text[data-v-635b722b]{font-size:13px;color:#94a3b8}.message[data-v-635b722b]{margin-bottom:20px;animation:fadeIn-635b722b .3s ease-in}@keyframes fadeIn-635b722b{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-role[data-v-635b722b]{font-size:12px;font-weight:600;margin-bottom:8px;color:#aaa}.user-message .message-role[data-v-635b722b]{color:#4fc3f7}.assistant-message .message-role[data-v-635b722b]{color:#81c784}.message-content[data-v-635b722b]{padding:12px 16px;border-radius:8px;line-height:1.6;color:#1f2933}.user-message .message-content[data-v-635b722b]{background:#e6fffa}.assistant-message .message-content[data-v-635b722b]{background:#edf2ff}.text-segment[data-v-635b722b]{word-wrap:break-word;word-break:break-word}.text-segment[data-v-635b722b] h1,.text-segment[data-v-635b722b] h2,.text-segment[data-v-635b722b] h3,.text-segment[data-v-635b722b] h4{margin:16px 0 8px;font-weight:600;color:#1f2933}.text-segment[data-v-635b722b] h1{font-size:1.5em}.text-segment[data-v-635b722b] h2{font-size:1.3em}.text-segment[data-v-635b722b] h3{font-size:1.15em}.text-segment[data-v-635b722b] h4{font-size:1em}.text-segment[data-v-635b722b] strong{font-weight:600;color:#1f1f1f}.text-segment[data-v-635b722b] code{background:#3e3e42;padding:2px 6px;border-radius:3px;font-family:Consolas,Monaco,monospace;font-size:.9em;color:#fff}.code-block[data-v-635b722b]{margin:12px 0;border-radius:6px;overflow:hidden;border:1px solid #404040;background:#282c34}.code-header[data-v-635b722b]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#21252b;border-bottom:1px solid #181a1f}.language-tag[data-v-635b722b]{font-size:12px;color:#abb2bf;font-family:Consolas,Monaco,monospace}.copy-btn[data-v-635b722b]{background:none;border:1px solid #abb2bf;color:#abb2bf;padding:4px 8px;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}.copy-btn[data-v-635b722b]:hover{background:#abb2bf;color:#282c34}.code-content[data-v-635b722b]{margin:0;padding:16px;background:#282c34;color:#abb2bf;font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.5;overflow-x:auto}.code-content code[data-v-635b722b]{font-family:inherit}.loading-indicator[data-v-635b722b]{text-align:center;padding:16px}.dot-flashing[data-v-635b722b]{position:relative;width:10px;height:10px;border-radius:5px;background-color:#4fc3f7;animation:dotFlashing-635b722b 1s infinite linear alternate;animation-delay:.5s;display:inline-block}.dot-flashing[data-v-635b722b]:before,.dot-flashing[data-v-635b722b]:after{content:"";display:inline-block;position:absolute;top:0;width:10px;height:10px;border-radius:5px;background-color:#4fc3f7}.dot-flashing[data-v-635b722b]:before{left:-15px;animation:dotFlashing-635b722b 1s infinite alternate;animation-delay:0s}.dot-flashing[data-v-635b722b]:after{left:15px;animation:dotFlashing-635b722b 1s infinite alternate;animation-delay:1s}@keyframes dotFlashing-635b722b{0%{opacity:.2}to{opacity:1}}.input-container[data-v-635b722b]{border-top:1px solid #e2e8f0;background:#fff;padding:16px;width:100%;flex-shrink:0;box-sizing:border-box}.selected-code-preview[data-v-635b722b]{margin-bottom:12px;border:1px solid #404040;border-radius:6px;overflow:hidden;background:#14181d}.preview-header[data-v-635b722b]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#2d2d3a;border-bottom:1px solid #404040;font-size:12px;font-weight:600;color:#ccc}.clear-btn[data-v-635b722b]{background:none;border:none;color:#aaa;cursor:pointer;font-size:16px;padding:0 4px;transition:color .2s}.clear-btn[data-v-635b722b]:hover{color:#f48771}.preview-code[data-v-635b722b]{margin:0;padding:12px;font-size:13px;line-height:1.5;max-height:150px;overflow-y:auto;background:#14181d;color:#d4d4d4}.input-box[data-v-635b722b]{display:flex;width:100%;position:relative}.ai-input-textarea[data-v-635b722b]{width:100%;min-height:60px;max-height:160px;resize:vertical;padding:8px 10px;border-radius:5px;border:1px solid #e2e8f0;font-size:14px;line-height:1.5;color:#1f2933;background-color:#fff;font-family:inherit;box-sizing:border-box}.ai-input-textarea[data-v-635b722b]:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 1px #667eea73}.send-btn[data-v-635b722b],.stop-btn[data-v-635b722b]{padding:6px 10px;border:none;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap;color:#fff;position:absolute;bottom:10px;right:10px}.send-btn[data-v-635b722b]{background:#007acc}.send-btn[data-v-635b722b]:hover:not(:disabled){background:#17b}.send-btn[data-v-635b722b]:disabled{background:#555;color:#888;cursor:not-allowed}.stop-btn[data-v-635b722b]{background:#b64949}.stop-btn[data-v-635b722b]:hover{background:#ca5047}.input-hint[data-v-635b722b]{margin-top:8px;font-size:12px;color:#888;text-align:center}.messages-container[data-v-635b722b]::-webkit-scrollbar,.preview-code[data-v-635b722b]::-webkit-scrollbar,.code-content[data-v-635b722b]::-webkit-scrollbar,.input-box textarea[data-v-635b722b]::-webkit-scrollbar{width:8px;height:8px}.messages-container[data-v-635b722b]::-webkit-scrollbar-track,.preview-code[data-v-635b722b]::-webkit-scrollbar-track,.code-content[data-v-635b722b]::-webkit-scrollbar-track,.input-box textarea[data-v-635b722b]::-webkit-scrollbar-track{background:#edf2f7}.messages-container[data-v-635b722b]::-webkit-scrollbar-thumb,.preview-code[data-v-635b722b]::-webkit-scrollbar-thumb,.code-content[data-v-635b722b]::-webkit-scrollbar-thumb,.input-box textarea[data-v-635b722b]::-webkit-scrollbar-thumb{background:#cbd5e0;border-radius:4px}.messages-container[data-v-635b722b]::-webkit-scrollbar-thumb:hover,.preview-code[data-v-635b722b]::-webkit-scrollbar-thumb:hover,.code-content[data-v-635b722b]::-webkit-scrollbar-thumb:hover,.input-box textarea[data-v-635b722b]::-webkit-scrollbar-thumb:hover{background:#a0aec0}.ai-assistant-header[data-v-635b722b]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#fff;border-bottom:1px solid #e2e8f0;flex-shrink:0}.ai-assistant-header h3[data-v-635b722b]{margin:0;font-size:15px;font-weight:600;color:#1f2933}.ai-assistant-actions[data-v-635b722b]{display:flex;gap:8px}.ai-header-btn[data-v-635b722b]{width:24px;height:24px;padding:0;border:1px solid #cbd5e0;background:#fff;color:#64748b;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.ai-header-btn[data-v-635b722b]:hover{background:#fee2e2;border-color:#f87171;color:#dc2626}.ai-assistant-actions .el-button[data-v-635b722b]{font-size:12px;padding:5px 10px;background:transparent;border:1px solid #404040;color:#ccc;transition:all .2s ease}.ai-assistant-actions .el-button[data-v-635b722b]:hover{background:#f44336;border-color:#f44336;color:#fff}.ai-assistant-tools[data-v-635b722b]{display:flex;flex-direction:column;gap:12px;padding:12px 16px;background:#fff;border-bottom:1px solid #e2e8f0;flex-shrink:0;position:relative}.tool-tip[data-v-635b722b]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:10px 16px;border-radius:4px;font-size:13px;text-align:center;font-weight:500;box-shadow:0 2px 8px #0000004d;animation:slideDown-635b722b .3s ease-out;z-index:1000;pointer-events:none}.tip-success[data-v-635b722b]{background:#1f3a20;color:#67c23a;border:1px solid #2d4a2e}.tip-warning[data-v-635b722b]{background:#3a2f1f;color:#e6a23c;border:1px solid #4a3d2d}.tip-info[data-v-635b722b]{background:#1f2f3a;color:#409eff;border:1px solid #2d3d4a}.tip-error[data-v-635b722b]{background:#3a1f1f;color:#f56c6c;border:1px solid #4a2d2d}.fade-enter-active[data-v-635b722b],.fade-leave-active[data-v-635b722b]{transition:all .3s ease}.fade-enter-from[data-v-635b722b],.fade-leave-to[data-v-635b722b]{opacity:0;transform:translateY(-10px)}@keyframes slideDown-635b722b{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.tool-buttons[data-v-635b722b]{display:flex;align-items:center;flex-wrap:nowrap}.switch-container[data-v-635b722b]{display:flex;align-items:center;gap:8px;margin-left:auto}.switch-container .switch-label[data-v-635b722b]{font-size:13px;color:#1f2933;font-weight:500;white-space:nowrap}.ai-assistant-tools .tool-button[data-v-635b722b]{display:flex;align-items:center;justify-content:center;padding:8px 16px;margin-right:8px;background:#fff;border:1px solid #cbd5e0;color:#1f2933;border-radius:6px;font-size:13px;font-weight:500;transition:all .2s ease;cursor:pointer}.ai-assistant-tools .tool-button[data-v-635b722b]:hover:not(:disabled){background:#f7fafc;border-color:#667eea;color:#667eea;transform:translateY(-1px);box-shadow:0 2px 4px #667eea26}.ai-assistant-tools .tool-button[data-v-635b722b]:active:not(:disabled){background:#edf2f7;border-color:#667eea;color:#667eea;transform:translateY(0)}.ai-assistant-tools .tool-button[data-v-635b722b]:disabled{background:#f7fafc;border-color:#e2e8f0;color:#94a3b8;cursor:not-allowed;opacity:.6}.ai-assistant-tools .button-text[data-v-635b722b]{font-size:13px;font-weight:400}.feature-switches[data-v-635b722b]{margin-top:12px;padding-top:12px;border-top:1px solid #333}.switch-item[data-v-635b722b]{display:flex;align-items:center;justify-content:space-between;gap:12px}.switch-label[data-v-635b722b]{font-size:13px;color:#d4d4d4;font-weight:500}.switch-toggle[data-v-635b722b]{position:relative;display:inline-block;width:44px;height:22px;margin:0;padding:0;border:none;background:#cbd5e0;border-radius:11px;cursor:pointer;transition:background .3s ease;outline:none;flex-shrink:0}.switch-toggle[data-v-635b722b]:hover{background:#a0aec0}.switch-toggle.is-on[data-v-635b722b]{background:#667eea}.switch-toggle.is-on[data-v-635b722b]:hover{background:#5568d3}.switch-knob[data-v-635b722b]{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 2px 4px #0003}.switch-toggle.is-on .switch-knob[data-v-635b722b]{transform:translate(22px)}[data-v-635b722b] .switch-container .el-switch__core{background:#404040;border-color:#404040}[data-v-635b722b] .switch-container .el-switch.is-checked .el-switch__core{background:#007acc;border-color:#007acc}.micropython-main-split[data-v-b76ff9e3]{display:flex;height:100%;width:100%;overflow:hidden;gap:0}.ai-assistant-resizer[data-v-b76ff9e3]{width:8px;background:#f7fafc;cursor:col-resize;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;transition:background .2s ease}.ai-assistant-resizer[data-v-b76ff9e3]:hover{background:#e2e8f0}.resizer-handle[data-v-b76ff9e3]{width:2px;height:40px;border-radius:2px;background:#94a3b8}.ai-assistant-panel[data-v-b76ff9e3]{height:100%;background:#fff;border-left:1px solid #e2e8f0;display:flex;flex:0 0 auto}[data-v-b76ff9e3] .ai-assistant-panel .code-assistant{background:#fff;color:#1f2933}[data-v-b76ff9e3] .ai-assistant-panel .ai-assistant-header,[data-v-b76ff9e3] .ai-assistant-panel .ai-assistant-tools{background:#fff;border-bottom:1px solid #e2e8f0}[data-v-b76ff9e3] .ai-assistant-panel .ai-assistant-header h3{color:#1f2933;font-weight:600}[data-v-b76ff9e3] .ai-assistant-panel .switch-container .switch-label{color:#1f2933;font-weight:500}[data-v-b76ff9e3] .ai-assistant-panel .messages-container{background:#f7fafc}[data-v-b76ff9e3] .ai-assistant-panel .assistant-message .message-content{background:#edf2ff}[data-v-b76ff9e3] .ai-assistant-panel .user-message .message-content{background:#e6fffa}[data-v-b76ff9e3] .ai-assistant-panel .input-container{background:#fff;border-top:1px solid #e2e8f0}[data-v-b76ff9e3] .ai-assistant-panel .selected-code-preview{background:#f7fafc}.image-upload-container[data-v-b76ff9e3]{width:100%}.image-preview[data-v-b76ff9e3]{position:relative;width:100%;max-width:300px;margin-bottom:8px}.image-preview img[data-v-b76ff9e3]{width:100%;height:auto;max-height:200px;object-fit:contain;border-radius:6px;border:1px solid #e5e7eb;background:#f9fafb}.image-remove-btn[data-v-b76ff9e3]{position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:50%;border:none;background:#dc2626;color:#fff;font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0003;transition:background .2s ease}.image-remove-btn[data-v-b76ff9e3]:hover{background:#b91c1c}.image-upload-area[data-v-b76ff9e3]{display:flex;flex-direction:column;gap:8px}.icon[data-v-b76ff9e3]{width:16px;height:16px}.image-upload-btn[data-v-b76ff9e3]{padding:8px 16px;border:1px dashed #d1d5db;border-radius:6px;background:#fff;color:#374151;font-size:14px;cursor:pointer;transition:all .2s ease}.image-upload-btn[data-v-b76ff9e3]:hover:not(:disabled){border-color:#667eea;color:#667eea;background:#f3f4f6}.image-upload-btn[data-v-b76ff9e3]:disabled{opacity:.6;cursor:not-allowed}.image-upload-hint[data-v-b76ff9e3]{margin-top:4px;font-size:12px;color:#6b7280;text-align:center}.image-upload-error[data-v-b76ff9e3]{margin-top:8px;padding:8px 12px;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;font-size:13px}.modal-overlay[data-v-b76ff9e3]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:10000}.submit-modal[data-v-b76ff9e3]{background:#fff;border-radius:8px;width:500px;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px #00000026;display:flex;flex-direction:column}.modal-header[data-v-b76ff9e3]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb}.modal-header h3[data-v-b76ff9e3]{margin:0;color:#1f2937;font-size:18px;font-weight:600}.modal-close[data-v-b76ff9e3]{background:none;border:none;font-size:24px;cursor:pointer;color:#9ca3af;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.modal-close[data-v-b76ff9e3]:hover{color:#6b7280;background-color:#f3f4f6;border-radius:50%}.modal-body[data-v-b76ff9e3]{padding:20px;flex:1;overflow-y:auto}.loading-categories[data-v-b76ff9e3]{text-align:center;padding:20px;color:#6b7280}.submit-form[data-v-b76ff9e3]{display:flex;flex-direction:column;gap:15px}.form-group[data-v-b76ff9e3]{display:flex;flex-direction:column;gap:6px}.form-label[data-v-b76ff9e3]{font-weight:700;color:#374151;font-size:14px}.form-input[data-v-b76ff9e3],.form-textarea[data-v-b76ff9e3],.form-select[data-v-b76ff9e3]{padding:8px 12px;border:1px solid #d1d5db;border-radius:4px;font-size:14px}.form-textarea[data-v-b76ff9e3]{resize:vertical}.form-select[data-v-b76ff9e3]{cursor:pointer}.modal-footer[data-v-b76ff9e3]{display:flex;gap:10px;padding:16px 20px;border-top:1px solid #e5e7eb;justify-content:flex-end}.dialog-overlay[data-v-793fe3ad]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog-container[data-v-793fe3ad]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;max-width:90%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.dialog-header[data-v-793fe3ad]{padding:16px 20px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.dialog-title[data-v-793fe3ad]{margin:0;font-size:16px;font-weight:600;color:#303133}.dialog-close[data-v-793fe3ad]{background:none;border:none;font-size:24px;line-height:1;color:#909399;cursor:pointer;padding:0;transition:color .2s}.dialog-close[data-v-793fe3ad]:hover{color:#409eff}.close-icon[data-v-793fe3ad]{display:block;font-size:24px}.dialog-content[data-v-793fe3ad]{padding:20px;flex:1;overflow-y:auto;color:#606266;font-size:14px;line-height:1.5}.dialog-footer[data-v-793fe3ad]{padding:16px 20px;text-align:right;flex-shrink:0;display:flex;justify-content:flex-end;gap:12px}.dialog-btn[data-v-793fe3ad]{padding:8px 16px;border-radius:4px;font-size:14px;border:1px solid transparent;transition:all .2s;min-width:70px;cursor:pointer}.cancel-btn[data-v-793fe3ad]{background-color:#fff;border-color:#dcdfe6;color:#606266}.cancel-btn[data-v-793fe3ad]:hover{background-color:#f5f7fa;border-color:#c0c4cc}.confirm-btn[data-v-793fe3ad]{background-color:#409eff;border-color:#409eff;color:#fff}.confirm-btn[data-v-793fe3ad]:hover:not(:disabled){background-color:#66b1ff;border-color:#66b1ff}.confirm-btn[data-v-793fe3ad]:disabled{background-color:#a0cfff;border-color:#a0cfff;cursor:not-allowed}.loading-spinner[data-v-793fe3ad]{display:inline-block;width:14px;height:14px;border:2px solid #fff;border-top-color:transparent;border-radius:50%;animation:spin-793fe3ad .8s linear infinite;margin-right:6px;vertical-align:middle}@keyframes spin-793fe3ad{to{transform:rotate(360deg)}}.dialog-fade-enter-active[data-v-793fe3ad],.dialog-fade-leave-active[data-v-793fe3ad]{transition:opacity .3s ease}.dialog-fade-enter-active .dialog-container[data-v-793fe3ad],.dialog-fade-leave-active .dialog-container[data-v-793fe3ad]{transition:transform .3s ease}.dialog-fade-enter-from[data-v-793fe3ad],.dialog-fade-leave-to[data-v-793fe3ad]{opacity:0}.dialog-fade-enter-from .dialog-container[data-v-793fe3ad],.dialog-fade-leave-to .dialog-container[data-v-793fe3ad]{transform:scale(.9)}.work-card[data-v-6f43de5f]{background:#fff;border-radius:5px;box-shadow:0 0 10px #707d9140;overflow:hidden;display:flex;flex-direction:column;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;width:100%;height:100%}.work-card.no-click[data-v-6f43de5f]{cursor:default}.work-card[data-v-6f43de5f]:hover{transform:translateY(-2px);box-shadow:0 6px 14px #0f172a29}.work-card-top[data-v-6f43de5f]{position:relative;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:5px 5px 0 0;overflow:hidden;aspect-ratio:3/2;padding:0}.work-card-image[data-v-6f43de5f]{width:100%;height:100%;border-radius:5px 5px 0 0;aspect-ratio:3/2;object-fit:cover;background:#0f172a}.work-card-description[data-v-6f43de5f]{width:100%;height:100%;border-radius:5px 5px 0 0;aspect-ratio:3/2;background:linear-gradient(135deg,#4f46e5,#06b6d4);color:#e5e7eb;font-size:14px;font-weight:400;line-height:1.5;padding:16px;overflow:hidden;display:flex;align-items:center;justify-content:center;text-align:justify}.work-card-info[data-v-6f43de5f]{padding:8px 16px;display:flex;flex-direction:column;gap:0;background-color:transparent}.work-card-title-bar[data-v-6f43de5f]{display:flex;width:100%;justify-content:space-between;align-items:baseline}.work-card-title[data-v-6f43de5f]{font-size:18px;font-weight:600;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:5px 0 8px;flex:1}.work-card-actions-wrapper[data-v-6f43de5f]{display:flex;align-items:center;gap:4px}.work-card-grid-icons[data-v-6f43de5f]{display:flex;margin:5px 0;gap:0;align-items:center}.work-cars-review-info[data-v-6f43de5f]{position:absolute;top:8px;left:8px;border-radius:50%;border:none;color:#2b2b2b;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;background-color:#fff;z-index:10}.work-card-delete-btn[data-v-6f43de5f]{position:absolute;top:8px;right:8px;width:20px;height:20px;border-radius:50%;border:none;background:#fecaca;color:#b91c1c;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,transform .1s ease;z-index:10}.work-card-delete-btn[data-v-6f43de5f]:hover{background:#fca5a5;transform:translateY(-1px)}.work-card-action-btn[data-v-6f43de5f]{display:flex;align-items:center;gap:1px;padding:0;border:none;background:transparent;cursor:pointer;margin-left:4px;font-size:12px;font-weight:400;transition:opacity .15s ease}.work-card-action-btn[data-v-6f43de5f]:hover{opacity:.7}.action-icon-svg[data-v-6f43de5f]{width:18px;height:18px;display:block}.action-count[data-v-6f43de5f]{margin-left:1px;font-size:12px;font-weight:400;line-height:1;color:inherit}.work-card-action-btn.active .action-count[data-v-6f43de5f]{color:inherit}.work-card-labels-bar[data-v-6f43de5f]{display:flex;justify-content:space-between;margin:8px 0;font-size:12px;overflow:hidden}.work-card-labels-group[data-v-6f43de5f]{display:flex;flex-direction:row;overflow:hidden;flex:1}.work-card-level[data-v-6f43de5f]{display:flex;color:#fff;background-color:#0a96ff;margin-right:4px;font-size:12px;text-align:center;padding:2px 3px;border-radius:4px;align-items:center}.work-card-label[data-v-6f43de5f]{display:flex;font-size:12px;margin-right:4px;padding:2px 3px;background-color:transparent;color:#666;border-radius:4px;white-space:nowrap;overflow:hidden;align-items:center}.work-card-author[data-v-6f43de5f]{display:flex;font-size:12px;float:right;overflow:hidden;text-wrap:nowrap;color:#666;height:100%;align-items:center}.works-filter-result[data-v-d4bb0038]{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;margin:32px 24px 8px;background-color:#fff;border-radius:5px;font-size:14px;color:#666;cursor:pointer;box-shadow:0 1px 3px #0000001a}.filter-result-content[data-v-d4bb0038]{flex:1;display:flex;gap:16px;flex-wrap:wrap}.filter-result-content span[data-v-d4bb0038]{white-space:nowrap}.filter-empty[data-v-d4bb0038]{color:#999;font-style:italic}.filter-close-icon[data-v-d4bb0038]{width:16px;height:16px;color:#666;cursor:pointer;flex-shrink:0;margin-left:8px}.filter-close-icon[data-v-d4bb0038]:hover{color:#333}.works-filter-panel[data-v-d4bb0038]{padding:8px 16px 16px;margin:32px 24px 8px;background-color:#fff;border-radius:5px;font-size:14px;color:#666;box-shadow:0 1px 3px #0000001a}.filter-header[data-v-d4bb0038]{display:flex;justify-content:space-between;align-items:center;margin:8px 0 16px 8px;font-size:16px;font-weight:600}.filter-title[data-v-d4bb0038]{color:#333}.filter-buttons[data-v-d4bb0038]{display:flex;gap:8px}.filter-btn[data-v-d4bb0038]{padding:4px 16px;border-radius:5px;color:#666;font-size:14px;border:1px solid #717171;background:#fff;cursor:pointer;transition:all .2s}.filter-btn[data-v-d4bb0038]:hover{background-color:#e4e4e4;color:#000}.filter-btn-primary[data-v-d4bb0038]{background-color:#0a96ff;color:#fff;border-color:#0a96ff}.filter-btn-primary[data-v-d4bb0038]:hover{background-color:#0988e6}.filter-inputs[data-v-d4bb0038]{display:flex;flex-wrap:wrap;gap:16px;margin-left:32px}.filter-input-group[data-v-d4bb0038]{display:flex;align-items:center;gap:8px}.filter-label[data-v-d4bb0038]{font-size:14px;white-space:nowrap;color:#666}.filter-input[data-v-d4bb0038]{padding:4px 8px;border:1px solid #e2e8f0;border-radius:4px;font-size:14px;color:#666;background:#fff;min-width:120px}.filter-input[data-v-d4bb0038]:focus{outline:none;border-color:#0a96ff}.filter-select[data-v-d4bb0038]{padding:4px 8px;border:1px solid #e2e8f0;border-radius:4px;font-size:14px;color:#666;background:#fff;cursor:pointer;min-width:100px}.filter-select[data-v-d4bb0038]:focus{outline:none;border-color:#0a96ff}.filter-hint[data-v-d4bb0038]{margin:8px 0 0 32px;font-size:12px;font-weight:400;color:#999}.works-content[data-v-e8332bc4]{padding:20px}.debug-buttons-container[data-v-e8332bc4]{display:flex;flex-wrap:wrap;gap:10px;padding:15px 20px;background-color:#f0f0f0;border-radius:8px;margin-top:20px;margin-bottom:20px;box-shadow:0 1px 3px #0000001a}.works-empty[data-v-e8332bc4]{text-align:center;padding:40px 0;color:#9ca3af;font-size:14px}.works-placeholder[data-v-e8332bc4],.works-loading[data-v-e8332bc4]{padding:40px 0;text-align:center;color:#9ca3af;font-size:14px}.works-loading-more[data-v-e8332bc4]{padding:20px 0;text-align:center;color:#9ca3af;font-size:14px}.works-no-more[data-v-e8332bc4]{padding:20px 0;text-align:center;color:#9ca3af;font-size:12px}.review-work-item[data-v-e8332bc4]{position:relative}.review-work-item[data-v-e8332bc4]{position:relative;width:100%}.review-card-wrapper[data-v-e8332bc4]{position:relative;width:100%;height:100%}.review-card-button-top[data-v-e8332bc4]{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:20;pointer-events:auto}.review-button[data-v-e8332bc4]{background:#ff5722f2;color:#fff;border:none;padding:6px 20px;border-radius:4px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 6px #0000004d;white-space:nowrap}.review-button[data-v-e8332bc4]:hover{background:#ff5722;box-shadow:0 4px 10px #0006}.review-button[data-v-e8332bc4]:active{background:#ff5722e6}.review-card-button[data-v-e8332bc4]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:100;background:#0a96ffe6;color:#fff;padding:8px 20px;border-radius:5px;cursor:pointer;font-size:14px;white-space:nowrap;box-shadow:0 2px 8px #0003;transition:all .2s ease;pointer-events:auto;-webkit-user-select:none;user-select:none}.review-card-button[data-v-e8332bc4]:hover{background:#0a96ff;box-shadow:0 4px 12px #0000004d}.review-modal-overlay[data-v-e8332bc4]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px}.review-modal[data-v-e8332bc4]{width:100%;max-width:500px;max-height:90vh;background:#fff;border-radius:8px;box-shadow:0 10px 40px #00000026;display:flex;flex-direction:column;overflow:hidden;animation:modalFadeIn-e8332bc4 .3s ease}@keyframes modalFadeIn-e8332bc4{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.review-modal-header[data-v-e8332bc4]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.review-modal-header h3[data-v-e8332bc4]{margin:0;font-size:18px;font-weight:600;color:#1f2937}.review-modal-close[data-v-e8332bc4]{background:none;border:none;font-size:28px;color:#6b7280;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s ease}.review-modal-close[data-v-e8332bc4]:hover{background:#f3f4f6}.review-modal-content[data-v-e8332bc4]{flex:1;padding:24px;overflow-y:auto;min-height:0}.review-form-item[data-v-e8332bc4]{margin-bottom:20px}.review-form-item label[data-v-e8332bc4]{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:#374151}.review-form-value[data-v-e8332bc4]{padding:8px 12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;font-size:14px;color:#111827}.review-form-input[data-v-e8332bc4],.review-form-textarea[data-v-e8332bc4]{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;color:#111827;background:#fff;font-family:inherit}.review-form-input[data-v-e8332bc4]:focus,.review-form-textarea[data-v-e8332bc4]:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.review-form-textarea[data-v-e8332bc4]{resize:vertical;min-height:100px}.review-error[data-v-e8332bc4]{margin-top:12px;padding:12px;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;font-size:14px}.review-modal-footer[data-v-e8332bc4]{display:flex;justify-content:center;gap:16px;padding:20px 24px;border-top:1px solid #e5e7eb;flex-shrink:0}.review-btn[data-v-e8332bc4]{padding:10px 24px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.review-btn[data-v-e8332bc4]:disabled{opacity:.6;cursor:not-allowed}.review-btn-pass[data-v-e8332bc4]{background:#10b981;color:#fff}.review-btn-pass[data-v-e8332bc4]:hover:not(:disabled){background:#059669}.review-btn-reject[data-v-e8332bc4]{background:#6b7280;color:#fff}.review-btn-reject[data-v-e8332bc4]:hover:not(:disabled){background:#4b5563}.works-category-page-header[data-v-24e7b015]{padding-top:16px}.work-detail-header[data-v-24e7b015]{display:flex;justify-content:space-between;align-items:center;margin:16px 32px 0}.work-title-block[data-v-24e7b015]{display:flex;flex-direction:column;gap:6px}.work-title[data-v-24e7b015]{font-size:22px;font-weight:600;color:#111827;margin:0}.back-btn[data-v-24e7b015]{padding:6px 14px;border-radius:999px;border:1px solid #d1d5db;background:#fff;font-size:13px;color:#374151;cursor:pointer}.loadMoreContainer[data-v-24e7b015]{text-align:center;padding:24px 0 40px}.empty-works-state[data-v-24e7b015]{grid-column:1 / -1;text-align:center;padding:40px 0;color:#9ca3af;font-size:14px}.empty-text[data-v-24e7b015]{font-size:14px;color:#9ca3af}.splitpanes{display:flex;width:100%;height:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging .splitpanes__pane,*:has(.splitpanes--dragging){-webkit-user-select:none;user-select:none;pointer-events:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out;will-change:width}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out;will-change:height}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.default-theme.splitpanes .splitpanes__pane{background-color:#f2f2f2}.default-theme.splitpanes .splitpanes__splitter{background-color:#fff;box-sizing:border-box;position:relative;flex-shrink:0}.default-theme.splitpanes .splitpanes__splitter:before,.default-theme.splitpanes .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;transition:background-color .3s}.default-theme.splitpanes .splitpanes__splitter:hover:before,.default-theme.splitpanes .splitpanes__splitter:hover:after{background-color:#00000040}.default-theme.splitpanes .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}.work-detail-page[data-v-9e152b26]{height:calc(100vh - 60px);overflow:hidden}.work-detail-main[data-v-9e152b26]{width:100%;height:100%;padding:24px 20px 40px;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;min-height:0}.work-detail-header[data-v-9e152b26]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.work-detail-actions[data-v-9e152b26]{display:flex;align-items:center;gap:12px}.work-title-block[data-v-9e152b26]{display:flex;flex-direction:column;gap:8px}.work-title[data-v-9e152b26]{font-size:22px;font-weight:600;color:#111827;margin:0}.work-meta[data-v-9e152b26]{display:flex;flex-wrap:wrap;gap:8px;font-size:13px;color:#6b7280}.work-tag[data-v-9e152b26]{padding:2px 8px;border-radius:999px;background:#eef2ff;color:#4f46e5}.work-author[data-v-9e152b26],.work-time[data-v-9e152b26]{padding:2px 8px;border-radius:999px;background:#f3f4f6}.work-loading[data-v-9e152b26]{padding:40px 0;text-align:center;color:#9ca3af}.work-error[data-v-9e152b26]{padding:40px 0;text-align:center;color:#dc2626}.retry-btn[data-v-9e152b26]{margin-top:12px;padding:6px 14px;border-radius:6px;border:1px solid #dc2626;background:#fff;color:#dc2626;cursor:pointer}.retry-btn[data-v-9e152b26]:hover{background:#fef2f2}.back-btn[data-v-9e152b26]{padding:6px 14px;border-radius:999px;border:1px solid #d1d5db;background:#fff;font-size:13px;color:#374151;cursor:pointer}.import-device-btn[data-v-9e152b26]{padding:6px 14px;border-radius:999px;border:1px solid #2563eb;background:#2563eb;font-size:13px;color:#fff;cursor:pointer}.import-device-btn[data-v-9e152b26]:hover:enabled{background:#1d4ed8}.import-device-btn[data-v-9e152b26]:disabled{opacity:.45;cursor:not-allowed}.export-device-btn[data-v-9e152b26]{padding:6px 14px;border-radius:999px;border:1px solid #10b981;background:#10b981;font-size:13px;color:#fff;cursor:pointer;margin-right:8px}.export-device-btn[data-v-9e152b26]:hover{background:#059669}.work-description[data-v-9e152b26]{margin-top:8px;margin-bottom:8px;font-size:14px;color:#4b5563}.work-labels[data-v-9e152b26]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.work-label-chip[data-v-9e152b26]{padding:2px 8px;border-radius:999px;background:#f3f4f6;color:#4b5563;font-size:12px}.import-modal-overlay[data-v-9e152b26]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1200}.import-modal[data-v-9e152b26]{width:420px;max-width:90vw;background:#fff;border-radius:8px;box-shadow:0 10px 40px #00000026}.import-modal-header[data-v-9e152b26]{padding:16px 20px;border-bottom:1px solid #e5e7eb}.import-modal-header h3[data-v-9e152b26]{margin:0;font-size:18px;color:#1f2937}.import-modal-body[data-v-9e152b26]{padding:16px 20px 12px}.import-hint[data-v-9e152b26]{font-size:13px;color:#6b7280}.import-field[data-v-9e152b26]{margin-bottom:14px}.import-label[data-v-9e152b26]{display:block;font-size:13px;font-weight:500;margin-bottom:6px}.import-select[data-v-9e152b26],.import-input[data-v-9e152b26]{width:100%;padding:6px 10px;border-radius:6px;border:1px solid #d1d5db;font-size:13px}.import-desc[data-v-9e152b26]{margin-top:4px;font-size:12px;color:#9ca3af}.import-modal-footer[data-v-9e152b26]{padding:12px 20px;display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #e5e7eb}.import-cancel-btn[data-v-9e152b26]{padding:6px 16px;background:#e5e7eb;border:none;border-radius:6px;cursor:pointer}.import-confirm-btn[data-v-9e152b26]{padding:6px 16px;background:#22c55e;color:#fff;border:none;border-radius:6px;cursor:pointer}.import-confirm-btn[data-v-9e152b26]:disabled{opacity:.5;cursor:not-allowed}.work-split-container[data-v-9e152b26]{flex:1;min-height:0;margin-top:12px}.splitpanes[data-v-9e152b26]{height:100%}.splitpanes__pane[data-v-9e152b26]{height:100%;display:flex;flex-direction:column;min-width:0;overflow:hidden}.work-split-panel[data-v-9e152b26]{height:100%;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.panel-toolbar[data-v-9e152b26]{margin-bottom:8px;font-size:12px;color:#6b7280}.code-editor-container[data-v-9e152b26]{flex:1;border-radius:8px;border:1px solid #e5e7eb;overflow:hidden;min-height:0}.code-editor-container[data-v-9e152b26] .cm-editor{height:100%}.code-editor-container[data-v-9e152b26] .cm-scroller{overflow:auto;height:100%}.code-editor-container[data-v-9e152b26] .cm-content{padding:15px;font-family:Monaco,monospace;font-size:14px;line-height:1.6}.code-empty[data-v-9e152b26],.code-loading[data-v-9e152b26],.model-loading[data-v-9e152b26]{padding:40px 0;text-align:center;color:#9ca3af}.model-error[data-v-9e152b26]{color:#dc2626}.model-view-container[data-v-9e152b26]{flex:1;border-radius:8px;overflow:hidden;border:1px solid #e5e7eb;background:#f8fafc}.model-frame[data-v-9e152b26]{width:100%;height:100%;border:none;background:#f8fafc}.splitpanes__splitter{width:6px!important;height:100%!important;z-index:100!important;cursor:col-resize!important}.error-tip[data-v-768b1d4e]{color:#f53f3f;font-size:12px;margin-top:4px;text-align:left}.form-group[data-v-768b1d4e]{margin-bottom:15px}.mqtt-client-page[data-v-768b1d4e]{margin-top:60px;padding:32px 24px;background:#f6f8fa;min-height:100vh}.section[data-v-768b1d4e]{margin-bottom:48px}.section-header[data-v-768b1d4e]{margin-bottom:20px}.section-header h2[data-v-768b1d4e]{font-size:22px;font-weight:700;color:#222;margin:0 0 6px}.section-header p[data-v-768b1d4e]{font-size:14px;color:#7b8a9c;margin:0}.client-grid[data-v-768b1d4e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:28px}.client-card[data-v-768b1d4e]{background:#fff;border-radius:16px;box-shadow:0 4px 24px #4f8cff11;padding:28px 24px 22px;cursor:pointer;position:relative;min-height:180px;display:flex;flex-direction:column;justify-content:space-between;transition:box-shadow .2s,transform .2s;border:1px solid #e3e8ee}.client-card[data-v-768b1d4e]:hover{box-shadow:0 8px 32px #4f8cff22;transform:translateY(-2px) scale(1.02);border-color:#4f8cff44}.template-card[data-v-768b1d4e]{background:#f8f9ff;border-color:#d1e0ff}.template-desc[data-v-768b1d4e]{font-size:13px;color:#6b7a8c;margin-top:4px}.card-content[data-v-768b1d4e]{flex:1;display:flex;flex-direction:column;gap:12px}.client-title[data-v-768b1d4e]{font-size:20px;font-weight:700;color:#222;margin-bottom:6px;letter-spacing:.5px}.client-info[data-v-768b1d4e]{font-size:15px;color:#7b8a9c;display:flex;flex-direction:column;gap:6px}.status-row[data-v-768b1d4e]{display:flex;align-items:center;gap:8px}.status-dot[data-v-768b1d4e]{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:4px}.dot-online[data-v-768b1d4e]{background:#22c55e}.dot-offline[data-v-768b1d4e]{background:#e53e3e}.online[data-v-768b1d4e]{color:#22c55e;font-weight:600}.offline[data-v-768b1d4e]{color:#e53e3e;font-weight:600}.card-menu-btn[data-v-768b1d4e]{position:absolute;top:16px;right:16px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:18px;color:#888;border-radius:6px;cursor:pointer;transition:background .2s}.card-menu-btn[data-v-768b1d4e]:hover{background:#f2f3f5;color:#222}.card-dropdown[data-v-768b1d4e]{position:absolute;top:44px;right:16px;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;min-width:130px;z-index:99;border:1px solid #eee;overflow:hidden}.dropdown-item[data-v-768b1d4e]{padding:9px 14px;font-size:14px;color:#333;cursor:pointer;transition:background .2s}.dropdown-item[data-v-768b1d4e]:hover{background:#f5f5f5}.dropdown-item.danger[data-v-768b1d4e]{color:#ff4d4f}.card-actions[data-v-768b1d4e]{position:absolute;right:18px;top:18px;display:flex;gap:10px}.use-btn[data-v-768b1d4e]{padding:4px 14px;border:none;border-radius:6px;font-size:14px;cursor:pointer;font-weight:500;box-shadow:0 2px 8px #0001;transition:all .2s;background:#4f8cff;color:#fff}.use-btn[data-v-768b1d4e]:hover{background:#38b2ac}.empty-card[data-v-768b1d4e]{display:flex;align-items:center;justify-content:center;background:#f3f4f6;border:2px dashed #bdbdbd;color:#bdbdbd;cursor:pointer;min-height:180px;border-radius:16px;transition:all .2s}.empty-card[data-v-768b1d4e]:hover{border-color:#4f8cff;color:#4f8cff;background:#e6f0ff}.empty-plus[data-v-768b1d4e]{font-size:56px;font-weight:700;-webkit-user-select:none;user-select:none;line-height:1}.modal[data-v-768b1d4e]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000026;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-768b1d4e]{background:#fff;border-radius:12px;padding:32px 28px;min-width:340px;box-shadow:0 8px 32px #4f8cff22}.modal-content h3[data-v-768b1d4e]{font-size:18px;font-weight:700;color:#222;margin-bottom:28px}.form-group[data-v-768b1d4e]{margin-bottom:18px;display:flex;align-items:center;gap:12px}.form-group label[data-v-768b1d4e]{width:80px;text-align:right;font-size:14px;color:#333;font-weight:500;white-space:nowrap}.form-group input[data-v-768b1d4e]{flex:1;padding:8px 12px;border:1px solid #e3e8ee;border-radius:6px;font-size:14px;background:#fff;transition:border-color .2s}.form-group input[data-v-768b1d4e]:focus{border-color:#4f8cff;outline:none}.form-group input[disabled][data-v-768b1d4e]{background:#f5f5f5;color:#999;cursor:not-allowed}.modal-actions[data-v-768b1d4e]{margin-top:24px;display:flex;gap:16px;justify-content:flex-end}.modal-actions button[data-v-768b1d4e]{padding:8px 22px;border-radius:6px;border:none;font-size:15px;font-weight:500;cursor:pointer;transition:background .2s}.modal-actions button[data-v-768b1d4e]:first-child{background:#4f8cff;color:#fff}.modal-actions button[data-v-768b1d4e]:first-child:hover{background:#38b2ac}.modal-actions button[data-v-768b1d4e]:last-child{background:#e3e8ee;color:#222}.modal-actions button[data-v-768b1d4e]:last-child:hover{background:#bdbdbd}.tip-wrap[data-v-768b1d4e]{position:relative;display:inline-block;margin-left:6px}.tip-icon[data-v-768b1d4e]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;background:#599bff;color:#fff;font-size:12px;border-radius:50%;line-height:1}.tip-box[data-v-768b1d4e]{position:fixed;z-index:99999;background:#333;color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;line-height:1.4;white-space:pre-line;text-align:left;min-width:240px;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .2s}.tip-wrap:hover .tip-box[data-v-768b1d4e]{opacity:1;visibility:visible}.selection-box{position:absolute;background:#4299e126;border:1px solid #4299e1;pointer-events:none;z-index:100}.batch-panel{display:flex;flex-direction:column;gap:12px}.batch-card{background:#fff;border-radius:10px;padding:12px 14px;border:1px solid #EEEEEE}.section-title{font-size:13px;font-weight:600;color:#374151;margin-bottom:10px;display:block}.align-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.align-grid button{padding:8px 6px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;font-size:13px;white-space:nowrap}.align-grid button:hover{background:#e6f0ff;border-color:#4299e1}.distribute-input-group{display:flex;flex-direction:column;gap:8px}.distribute-item{display:flex;flex-direction:column;gap:4px}.distribute-item label{font-size:12px;color:#666}.distribute-item input{padding:6px 8px;border:1px solid #ddd;border-radius:6px;font-size:14px}textarea{border:none;outline:none;padding:8px;border-radius:6px;box-shadow:0 2px 8px #00000014;background:#fff;font-size:15px;color:#333;width:100%;min-height:200px;transition:box-shadow .2s}textarea:focus{box-shadow:0 2px 8px #6784f714}.device-control-panel{display:flex;height:calc(100vh - 60px);margin-top:60px}.component-library{width:180px;background:#f7fafc;border-right:1px solid #e3e8ee;padding:16px}.component-list{margin-top:12px}.component-item{padding:8px 12px;width:fit-content;margin-bottom:8px;background:#fff;border-radius:6px;cursor:pointer;border:1px solid #e3e8ee;transition:background .2s;width:100%;text-align:center;font-size:14px}.component-item:hover{background:#e6f0ff}.breadcrumb{padding:16px;font-size:13px;flex-shrink:0;background-color:#f8f8f8;border-bottom:1px solid #e3e8ee}.breadcrumb-link{color:#007bff;cursor:pointer;text-decoration:none}.breadcrumb-link:hover{text-decoration:underline}.breadcrumb .separator{margin:0 8px;color:#6c757d}.breadcrumb .active{color:#343a40;font-weight:700}.editor-area{flex:1;position:relative;display:flex;flex-direction:column}.editor-canvas{position:relative;flex:1;-webkit-user-select:none;user-select:none;min-height:0;overflow:auto}.editor-component{display:flex;align-items:center;border:2px solid transparent;border-radius:6px;background:#fff;padding:8px;cursor:grab;box-shadow:0 1px 3px #0000001a;box-sizing:border-box;transition:border-color .2s,box-shadow .2s;width:fit-content;height:fit-content}.editor-component:hover{box-shadow:0 2px 8px #00000026}.editor-component:active{cursor:grabbing}.editor-component.selected{border-color:#38b2ac;box-shadow:0 4px 12px #38b2ac44}.component-name-label{white-space:nowrap;font-size:inherit;color:#333;margin-right:4px}.progress-container{position:relative;display:flex;align-items:center;height:100%;padding:5px 0;width:100%}.progress-track{width:100%;height:10px;background-color:#e2e8f0;border-radius:5px;overflow:hidden}.progress-fill{height:100%;background-color:#4299e1;border-radius:5px;transition:width .1s linear}.progress-slider{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:pointer}.progress-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;background:#fff;border:2px solid #4299e1;border-radius:50%;cursor:pointer}.progress-slider::-moz-range-thumb{width:16px;height:16px;background:#fff;border:2px solid #4299e1;border-radius:50%;cursor:pointer}.color-picker-container{display:flex;align-items:center;gap:8px;flex-grow:1;height:100%;width:100%}.color-preview{width:32px;height:32px;border-radius:6px;border:1px solid #cbd5e0;cursor:pointer;transition:transform .2s}.color-preview:hover{transform:scale(1.05)}.color-input{width:100%;height:100%;border:1px solid #cbd5e0;border-radius:4px;cursor:pointer}.color-value{font-size:12px;color:#4a5568;font-family:monospace}.custom-button{flex-grow:1;height:100%;line-height:1;border:none;border-radius:var(--btn-border-radius, 4px);background-color:var(--btn-bg-color, #4299e1);color:#fff;font-size:inherit;cursor:pointer;transition:all .2s ease;font-weight:500;text-align:center;display:flex;align-items:center;justify-content:center;width:100%;box-sizing:border-box}.custom-button:hover{filter:brightness(1.1);box-shadow:0 2px 8px #0003}.custom-button:active{filter:brightness(.9);transform:translateY(1px)}.button-special-props{margin-bottom:16px;padding:12px;background:#f8fafc;border-radius:8px}.color-input-group{display:flex;align-items:center;gap:8px}.color-input-prop{width:40px;height:32px;padding:0;border:1px solid #cbd5e0;border-radius:4px;cursor:pointer;flex-shrink:0}.color-preview-area{display:flex;align-items:center;gap:12px;margin-top:8px}.color-preview-box{width:40px;height:40px;border:1px solid #cbd5e0;border-radius:6px;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.color-preview-text{font-size:12px;font-family:monospace;color:#4a5568;background:#edf2f7;padding:4px 8px;border-radius:4px;flex-grow:1;text-align:center}.joystick-wrapper{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.joystick-base{height:100%;aspect-ratio:1/1;background:#e2e8f0;border-radius:50%;position:relative;box-shadow:inset 0 2px 4px #0000001a,0 2px 8px #0000001a;display:flex;align-items:center;justify-content:center}.joystick-thumb{width:30%;height:30%;aspect-ratio:1/1;background:#4299e1;border-radius:50%;cursor:grab;box-shadow:0 2px 8px #0003;transition:transform .05s linear;position:absolute;transform:translate(-50%,-50%)}.joystick-thumb:active{cursor:grabbing}.joystick-stats{background:#edf2f7;padding:6px 10px;border-radius:6px;font-size:12px;font-family:monospace;text-align:center}.property-panel{width:320px;background:#f7fafc;border-left:1px solid #e3e8ee;padding:16px;color:#333;overflow:auto}.property-panel h4{margin-top:0;margin-bottom:20px;font-size:16px;font-weight:600;color:#1a202c}.properties-form .prop-group{margin-bottom:8px}.properties-form .prop-label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:#4a5568}.properties-form .prop-input{width:100%;padding:8px 10px;border:1px solid #cbd5e0;border-radius:6px;font-size:14px;background:#fff;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.properties-form .prop-input:focus{outline:none;border-color:#38b2ac;box-shadow:0 0 0 2px #38b2ac44}.prop-group-inline{display:flex;gap:12px}.prop-group-inline .prop-item{flex:1}.prop-group-checkbox{display:flex;align-items:center;margin-top:16px}.prop-group-checkbox input[type=checkbox]{margin-right:8px;width:16px;height:16px;cursor:pointer}.prop-group-checkbox label{font-size:14px;cursor:pointer;-webkit-user-select:none;user-select:none}.property-panel textarea{padding:10px;border-radius:6px;font-size:12px;line-height:1.5;word-break:break-all;white-space:pre-wrap;border:1px solid #e2e8f0;min-height:150px;height:100%;overflow-y:auto;font-family:monospace}.no-selection{text-align:center;margin-top:40px;color:#718096}.no-selection p{font-size:15px;font-weight:500;margin-bottom:8px}.no-selection span{font-size:13px;line-height:1.5;display:block;padding:0 10px}.color-picker-wheel-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.color-wheel{height:100%;aspect-ratio:1;border-radius:50%;background:conic-gradient(red,#f0f,#00f,#0ff,#0f0,#ff0,red);mask:radial-gradient(transparent 50%,black 51%);-webkit-mask:radial-gradient(transparent 50%,black 51%);cursor:pointer;box-shadow:0 0 8px #0003;position:relative;flex-shrink:0}.color-handle{position:absolute;width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 4px #0000004d;transform:translate(-50%,-50%);pointer-events:none;z-index:10}.color-picker-wrapper[data-v-085032ac]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.breadcrumb[data-v-085032ac]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f7f8fa;border-radius:6px;margin-bottom:12px}.breadcrumb-buttons[data-v-085032ac]{margin-left:auto}.lock-btn[data-v-085032ac]{padding:4px 12px;border-radius:4px;margin-left:8px;border:none;cursor:pointer;font-size:13px;background:#eef2f7;color:#2570e7}.lock-btn[data-v-085032ac]:hover{background:#dce3ed}*{margin:0;padding:0;box-sizing:border-box}html{height:100%;overflow:hidden}body{background-color:#eff1f7;margin:0;padding:0;height:100%;overflow:hidden;font-family:PingFang SC,Lantinghei SC,Microsoft YaHei,HanHei SC,Helvetica Neue,Open Sans,Hiragino Sans GB,微软雅黑,STHeiti,WenQuanYi Micro Hei,Arial,SimSun,sans-serif}.app-container{width:100%;height:100vh;margin:auto;overflow:auto;background-color:#eff1f7}.app-container.code-editor-layout{height:100vh;padding-bottom:0;overflow:hidden}.app-header{min-width:1280px;position:absolute;top:0;left:0;right:0;z-index:1000;background-color:#166cfe;height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 16px}.app-header-left{display:flex;align-items:center;min-width:300px;text-align:center;line-height:32px}.app-header-left-img{overflow:hidden;margin-right:8px;cursor:pointer}.app-header-left-img img{height:32px;object-fit:fit;display:block}.app-header-left span{font-size:16px;color:#fff;padding-left:8px}.app-header-left a{text-decoration:none;color:#fff;display:flex;align-items:center}.app-header-centent{display:flex;justify-content:center;align-items:center;gap:40px}.app-header-centent ul{width:100%;height:100%;display:flex;justify-content:center;align-items:center;gap:40px;list-style:none}.app-header-centent li.active{display:inline-block;position:relative}.app-header-centent li.active:after{content:"";position:absolute;left:50%;bottom:-9px;width:80%;height:3px;background:#fff;transform:translate(-50%)}.app-header-centent a{color:#fff;text-decoration:none}.app-header-right{display:flex;justify-content:end;flex-shrink:0;min-width:300px}.user-info{display:flex;align-items:center;padding:8px 0;border-radius:8px;transition:all .3s ease}.user-avatar{width:24px;height:24px;border-radius:50%;overflow:hidden;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.user-avatar:hover{border-color:#fff9;box-shadow:0 4px 12px #00000026;transform:scale(1.05)}.user-avatar img{object-position:center}.user-info-text{margin-left:8px}.user-info-text-name{font-size:16px;font-weight:500;color:#fff;cursor:pointer;transition:opacity .2s ease}.user-info-text-name:hover{opacity:.8}.app-centent{margin-top:60px;min-height:calc(100vh - 60px)}.code-editor-layout.app-centent{padding:0!important;margin-top:60px;height:calc(100vh - 90px);overflow:hidden;box-sizing:border-box}.app-centent-main{max-width:1226px;margin:0 auto}.code-editor-layout .app-centent-main{padding:0!important;max-width:none;width:100%;margin:0;height:100%;overflow:hidden}.code-editor-layout .app-header{background:#166cfe;border-bottom:1px solid #404040}*{box-sizing:border-box;margin:0;padding:0}body{font-family:PingFang SC,Lantinghei SC,Microsoft YaHei,HanHei SC,Helvetica Neue,Open Sans,Hiragino Sans GB,微软雅黑,STHeiti,WenQuanYi Micro Hei,Arial,SimSun,sans-serif;background-color:#eff1f7;min-height:100vh;margin:0;padding:0}.micropython-container{max-width:100%;margin:0;display:grid;grid-template-columns:300px 1fr;gap:20px;height:calc(100vh - 60px);padding:20px;box-sizing:border-box}.micropython-container.sidebar-collapsed{grid-template-columns:1fr}.micropython-container.sidebar-collapsed .micropython-sidebar{display:none}.micropython-sidebar{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 8px #00000014;display:flex;flex-direction:column;gap:15px;overflow-y:auto}.micropython-main-content{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 8px #00000014;display:flex;flex-direction:column;overflow:hidden}.device-controls{display:flex;flex-direction:column;gap:10px}.btn{padding:12px 20px;border:none;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}.btn:hover{box-shadow:0 5px 15px #667eea66}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-success{background:linear-gradient(135deg,#38b2ac,#319795)}.btn-danger{background:linear-gradient(135deg,#ed64a6,#d53f8c)}.status-indicator{display:flex;align-items:center;gap:8px;padding:10px;background:#f7fafc;border-radius:8px;font-size:14px}.status-btn{padding:4px 8px;border:none;border-radius:4px;background:transparent;color:#4a5568;font-size:14px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:4px}.status-btn:hover:not(:disabled){background:#e2e8f0;color:#005dfd}.status-btn:disabled{opacity:.5;cursor:not-allowed}.status-btn-primary{color:#667eea}.status-btn-success{color:#38a169}.status-btn-success:hover:not(:disabled){background:#c6f6d5;color:#22543d}.status-dot{width:10px;height:10px;border-radius:50%;background:#e53e3e}.status-dot.connected{background:#38a169;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.file-list{flex:1;background:#f7fafc;border-radius:8px;padding:15px;overflow-y:auto;font-size:13px;color:#2d3748}.file-item{padding:8px 0;margin-bottom:6px;background:#fff;border-radius:6px;cursor:pointer;transition:background-color .15s ease,border-color .15s ease;display:block;-webkit-user-select:none;user-select:none;border:1px solid transparent;box-sizing:border-box}.file-item:hover{background:#edf2f7;border-color:#667eea}.file-item.active{background:#ebf4ff}.file-item.folder-item{font-weight:500}.file-item.selected-folder{background:#e6f3ff}.file-actions{display:flex;gap:4px;margin-left:auto;opacity:1}.icon-btn{padding:2px 4px;border:none;background:transparent;cursor:pointer;border-radius:3px;color:#718096;font-size:12px;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.icon-btn:hover{background:#edf2f7;color:#4a5568}.file-name{flex:1;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:6px;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dir-icon{color:#ffa304}.folder-toggle{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:2px;color:#858585;font-size:10px;transition:transform .15s ease}.folder-toggle:hover{color:#ccc}.file-item-content{width:100%;min-width:0;display:flex;align-items:center}.file-name-input{flex:1;padding:2px 6px;border:1px solid #cbd5e0;border-radius:3px;font-size:13px;font-family:inherit;background:#fff;outline:none;color:#2d3748;transition:border-color .15s ease,box-shadow .15s ease;min-width:0;margin-right:4px}.file-name-input:focus{border-color:#667eea;box-shadow:0 0 0 1px #667eea26}.file-item.renaming{background:#f7fafc;border-color:#cbd5e0}.file-item.renaming .file-actions{opacity:1!important;gap:4px;margin-left:0}.file-item.renaming .confirm-rename-btn,.file-item.renaming .cancel-rename-btn{min-width:24px;min-height:24px;padding:0;border-radius:4px;display:flex;align-items:center;justify-content:center;line-height:1;transition:all .15s ease}.rename-file-btn{color:#667eeacd}.rename-file-btn:hover{color:#2a51ff}.confirm-rename-btn{color:#667eea!important;font-weight:600;font-size:15px;background:#667eea14!important}.confirm-rename-btn:hover{background:#667eea!important;color:#fff!important;transform:scale(1.05)}.cancel-rename-btn{color:#4a5568!important;font-weight:600;font-size:15px;background:#4a556814!important}.cancel-rename-btn:hover{background:#4a5568!important;color:#fff!important;transform:scale(1.05)}.editor-container{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.simulator-container-iframe{flex:1;min-height:0;display:none;flex-direction:column;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;background:#fff;margin-top:15px;height:calc(100% - 60px)}.simulator-container-iframe[style*="display: flex"],.simulator-container-iframe[style*="display:block"]{display:flex!important}.simulator-container-iframe iframe{flex:1;min-height:0;border:none}.editor-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;white-space:nowrap}.micropython-editor{flex:1;min-height:0;border:1px solid #e2e8f0;border-radius:8px;padding:0;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.6;resize:none;-moz-tab-size:4;tab-size:4;min-height:120px;display:flex;flex-direction:column;overflow:hidden;position:relative}.micropython-editor .cm-editor{height:100%;flex:1;min-height:0;display:flex;flex-direction:column}.micropython-editor .cm-scroller{overflow:auto!important;height:100%;flex:1;min-height:0}.output-resizer{flex:0 0 4px;margin-top:10px;margin-bottom:10px;cursor:row-resize;background:#e5e7eb;position:relative;-webkit-user-select:none;user-select:none}.output-resizer:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:40px;height:2px;border-radius:999px;background:#9ca3af}.output-resizer:hover:after{background:#6b7280}.output-panel{margin-top:0;background:#1a202c;border-radius:8px;padding:10px 12px;min-height:100px;max-height:1000px;display:flex;flex-direction:column;box-sizing:border-box;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;color:#cbd5e0}.output-panel-header{display:flex;align-items:center;justify-content:space-between}.output-panel-title{font-size:13px;color:#e5e7eb}.output-clear-btn{padding:2px 10px;font-size:12px}.output-panel-body{display:block;flex:1;min-height:0;overflow-y:auto}.output-panel-body::-webkit-scrollbar{width:8px}.output-panel-body::-webkit-scrollbar-track{background:#111827;border-radius:999px}.output-panel-body::-webkit-scrollbar-thumb{background:#4b5563;border-radius:999px}.output-panel-body::-webkit-scrollbar-thumb:hover{background:#6b7280}.output-line{margin-bottom:4px;white-space:pre-wrap}.output-line.error{color:#fc8181}.output-line.success{color:#68d391}.modal{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background:#00000080;justify-content:center;align-items:center;z-index:2000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:modalFadeIn .2s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.modal.show{display:flex}.modal-content{background:#fff;padding:24px;border-radius:8px;width:90%;max-width:420px;box-shadow:0 10px 40px #00000026,0 0 0 1px #0000000d;animation:modalSlideIn .25s ease;position:relative;max-height:85vh;overflow-y:auto}@keyframes modalSlideIn{0%{transform:translateY(-15px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.modal-title{margin:0 0 20px;color:#1f2937;font-size:18px;font-weight:600;line-height:1.4}.form-group{margin-bottom:16px}.form-group:last-of-type{margin-bottom:20px}.form-label{display:block;margin-bottom:6px;color:#4a5568;font-weight:500;font-size:14px;line-height:1.5}.form-input{width:100%;padding:10px 12px;border:1.5px solid #e2e8f0;border-radius:6px;font-size:14px;transition:all .2s ease;background-color:#fff;color:#2d3748;box-sizing:border-box}.form-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-input::placeholder{color:#a0aec0}.form-input[type=select],select.form-input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%234a5568' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px;align-items:center}.toast{position:fixed!important;bottom:20px!important;right:20px!important;top:auto!important;left:auto!important;transform:translateY(100px) scale(.95);padding:8px 16px;background:#2d3748;color:#fff;border-radius:6px;box-shadow:0 4px 16px #0003,0 0 0 1px #ffffff1a;opacity:0;transition:all .3s cubic-bezier(.34,1.56,.64,1);z-index:3000;min-width:auto;max-width:300px;width:fit-content;font-size:13px;line-height:1.4;word-wrap:break-word;pointer-events:auto;text-align:center}.toast.show{transform:translateY(0) scale(1);opacity:1}.toast.error{background:linear-gradient(135deg,#dc2626,#b91c1c);box-shadow:0 8px 24px #dc262666,0 0 0 1px #ffffff1a}.toast.success{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 8px 24px #10b98166,0 0 0 1px #ffffff1a}.toast.info{background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 8px 24px #3b82f666,0 0 0 1px #ffffff1a}.toast.warning{background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 8px 24px #f59e0b66,0 0 0 1px #ffffff1a;color:#fff}.modal-actions .btn{padding:6px 12px;font-size:13px;min-width:56px;max-width:72px;flex-shrink:0;flex-grow:0;white-space:nowrap;height:auto;line-height:1.4;border-radius:6px;font-weight:500}.modal-actions .btn-danger{background:linear-gradient(135deg,#f56565,#e53e3e)}.modal-actions .btn-success{background:linear-gradient(135deg,#48bb78,#38a169)}.cm-panel.cm-search button[name=next],.cm-panel.cm-search button[name=prev],.cm-panel.cm-search button[name=select],.cm-panel.cm-search button[name=replace],.cm-panel.cm-search button[name=replaceAll]{position:relative;color:transparent!important}.cm-panel.cm-search button[name=next]:after{content:"下一个";position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#fff;color:#000}.cm-panel.cm-search button[name=prev]:after{content:"上一个";position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#fff;color:#000}.cm-panel.cm-search button[name=select]:after{content:"全部";position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#fff;color:#000}.cm-panel.cm-search button[name=replace]:after{content:"替换";position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#fff;color:#000}.cm-panel.cm-search button[name=replaceAll]:after{content:"全部替换";position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#fff;color:#000}.cm-panel.cm-search label{color:transparent!important;width:auto!important;min-width:100px!important;display:inline-block!important;margin-right:8px!important}.cm-panel.cm-search label:has(input[name=case]){position:relative}.cm-panel.cm-search label:has(input[name=case]):after{content:"区分大小写";position:absolute;left:20px;top:50%;transform:translateY(-50%);color:#666;white-space:nowrap}.cm-panel.cm-search label:has(input[name=re]){position:relative}.cm-panel.cm-search label:has(input[name=re]):after{content:"正则表达式";position:absolute;left:20px;top:50%;transform:translateY(-50%);color:#666;white-space:nowrap}.cm-panel.cm-search label:has(input[name=word]){position:relative}.cm-panel.cm-search label:has(input[name=word]):after{content:"全字匹配";position:absolute;left:20px;top:50%;transform:translateY(-50%);color:#666;white-space:nowrap}body.works-page,html.works-page{overflow-y:auto!important;overflow-x:hidden!important;height:auto!important}.works-content.app-centent{overflow:auto;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;align-content:center;position:fixed;left:0;background-color:transparent}.works-content .app-centent-main{max-width:1280px;width:100%}.work-detail-page.app-centent{margin-top:60px;padding:0!important;background-color:#fff!important;min-height:calc(100vh - 60px);width:100%}.work-detail-page .app-centent-main{width:100%!important;max-width:100%!important;margin:0!important;padding:24px 20px 40px!important;background-color:#fff!important;box-sizing:border-box}body.works-page .app-container{height:auto!important}body.work-detail-page{overflow:hidden!important;height:100vh!important}html.work-detail-page{overflow:hidden!important;height:100%!important}body.work-detail-page .app-container{height:100vh!important;overflow:hidden!important}.works-tabs-bar{display:flex;align-items:center;padding:0 24px;height:50px;gap:32px}.works-tab-item{padding:0 0 12px;background:transparent;border:none;color:#333;font-size:14px;cursor:pointer;position:relative;margin-top:12px;transition:color .2s;white-space:nowrap}.works-tab-item:hover,.works-tab-item.active{color:#0a96ff}.works-tab-item.active:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:#0a96ff}.works-tabs-right{margin-left:auto;display:flex;align-items:center;gap:16px}.works-search-icon{width:20px;height:20px;cursor:pointer;color:#666}.works-view-more{font-size:16px;color:#0a96ff;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .2s;text-decoration:none}.works-view-more:hover{color:#0880dd;text-decoration:underline}.works-tab-content{display:none}.works-tab-content.active{display:block}.category-labels-container{padding:0 24px}.categories-container{padding:20px 0;width:100%;display:block}.category-group{margin-bottom:60px;width:100%;display:block}.category-group:last-child{margin-bottom:40px}.category-header{display:flex;justify-content:space-between;align-items:center;margin:32px 32px 24px}.category-title-bar{display:flex;align-items:center;gap:16px;flex:1}.category-title{font-size:24px;font-weight:600;color:#333;padding-left:16px;border-left:4px solid #0A96FF;line-height:1.5}.category-title>span{font-weight:300;cursor:pointer;color:#0a96ff}.category-more-btn{font-size:16px;color:#0a96ff;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .2s;background:transparent;border:none;padding:0}.category-more-btn:hover{color:#0880dd;text-decoration:underline}.category-more-btn.loaded-all{color:#999;cursor:default}.category-more-btn.loaded-all:hover{color:#999;text-decoration:none}.category-label{margin:16px 0;font-size:16px;font-weight:600;color:#333;padding:0 24px}.category-label:first-child{margin-top:0}.category-works-grid{margin-top:0;margin-bottom:0;display:grid;gap:48px;justify-content:space-evenly;padding:32px}@media (max-width: 647px){.category-works-grid{grid-template-columns:repeat(1,1fr)}}@media (min-width: 648px) and (max-width: 1057px){.category-works-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1058px){.category-works-grid{grid-template-columns:repeat(3,1fr)}}.page-header-container{margin-bottom:0;width:100%}.page-header{text-align:left;font-size:24px;font-weight:700;color:#1d2129;opacity:.85;margin:20px 0 24px 24px;padding:0;letter-spacing:0px}.showcase-grid{display:flex;flex-wrap:wrap;padding:0 24px;margin-bottom:40px;gap:0}.project-card{width:calc(33.333% - 43px);margin:0 32px 32px 0;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #00000014;transition:all .3s ease;cursor:pointer;display:flex;flex-direction:column;min-height:400px}.project-card:nth-child(3n){margin-right:0}.project-card:hover{transform:translateY(-4px);box-shadow:0 4px 12px #00000026}.project-preview{position:relative;height:200px;overflow:hidden;border-radius:8px 8px 0 0;width:100%;background:#f5f5f5}.codeCard{border-radius:5px;font-size:12px;width:100%;height:100%;background-color:#fff;box-shadow:0 0 10px #707d9140}.codeCard .cardTop{display:flex;border-radius:5px;text-align:center;font-size:14px;color:#5e5e5e;font-weight:600;vertical-align:middle;align-items:center;justify-content:center;background-color:#fff;position:relative}.codeCard .cardTop .image{width:100%;height:100%;border-radius:5px 5px 0 0;aspect-ratio:3/2;object-fit:cover}.codeCard .cardTop .discription{display:flex;text-align:justify;background-color:transparent;align-items:center;justify-content:center;border-radius:5px;padding:8px;overflow:hidden;font-size:14px;font-weight:400;height:100%;width:100%;aspect-ratio:3/2;color:#fff}.codeEyeText{position:absolute;padding:5px 12px;background:#1a96ff;opacity:1;top:8px;border-radius:16px;overflow:hidden;color:#fff;cursor:pointer;z-index:10}.codeCard .infoBar{background-color:transparent;font-size:12px;padding:8px 16px}.codeCardTitleBar{display:flex;width:100%;justify-content:space-between}.codeCardTitle{width:100%;font-weight:600;margin:5px 0 8px;font-size:18px;color:#333}.codeCard .labelsBar{display:flex;justify-content:space-between;margin:8px 0;font-size:12px;overflow:hidden}.labelsGroup{display:flex;flex-direction:row;overflow:hidden}.level{display:flex;color:#fff;background-color:#0a96ff;margin-right:4px;font-size:12px;text-align:center;padding:2px 3px;border-radius:4px;align-items:center}.label{display:flex;font-size:12px;margin-right:4px;padding:2px 3px;background-color:transparent;color:#666;border-radius:4px;white-space:nowrap;overflow:hidden;align-items:center}.author{display:flex;font-size:12px;float:right;overflow:hidden;text-wrap:nowrap;color:#666;height:100%;align-items:center}.diselect{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.codesGrid{display:grid;gap:48px;justify-content:space-evenly;padding:32px;margin-bottom:98px}@media (max-width: 647px){.codesGrid{grid-template-columns:repeat(1,1fr)}}@media (min-width: 648px) and (max-width: 1057px){.codesGrid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1058px){.codesGrid{grid-template-columns:repeat(3,1fr)}}.project-preview img{width:100%;height:100%;object-fit:contain;padding:20px;transition:transform .3s ease;background:transparent}.project-info{position:relative;padding:16px;flex:1;display:flex;flex-direction:column}.info-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.project-name{font-size:16px;font-weight:600;color:#1d2129;margin:0 8px 0 0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.project-stats{display:flex;gap:12px;margin-left:12px;color:#999;font-size:12px;white-space:nowrap}.project-stats .stat{white-space:nowrap}.info-bottom{display:flex;justify-content:space-between;align-items:flex-end;margin-top:auto;padding-top:8px}.project-features{display:flex;flex-wrap:wrap;gap:6px;max-width:70%}.feature-tag{display:inline-block;padding:2px 8px;background:#f5f5f5;color:#666;border-radius:4px;font-size:12px;font-weight:400;line-height:1.4}.project-user{display:flex;align-items:center;gap:8px}.project-user .avatar{width:24px;height:24px;border-radius:50%;background:#dfe6ee;display:inline-block}.project-user .username{font-size:12px;color:#999}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:2000;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.code-view-container{animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-overlay.hidden{display:none}.modal-container{width:900px;max-width:90vw;background:#fff;border-radius:8px;overflow:hidden;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 10px 40px #00000026}.modal-topbar{height:50px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.topbar-left{display:flex;align-items:center;gap:10px}.modal-title{font-size:18px;color:#1f2937;font-weight:600}.modal-type{font-size:14px;padding:2px 8px;color:#fff;border-radius:4px;background:#0a96ff}.topbar-close-btn{background:transparent;border:none;cursor:pointer;color:#909399;padding:4px;display:flex;align-items:center;justify-content:center;transition:color .2s}.topbar-close-btn:hover{color:#606266}.modal-content{flex:1;overflow-y:auto}.tab-navigation{display:flex;gap:0;border-bottom:1px solid #eef0f3;padding:0 24px;margin-top:0}.tab-btn{padding:12px 24px;background:transparent;border:none;border-bottom:2px solid transparent;color:#5a6c7d;font-size:14px;cursor:pointer;transition:all .2s;position:relative;top:1px}.tab-btn:hover{color:#1f2d3d}.tab-btn.active{color:#0a96ff;border-bottom-color:#0a96ff;font-weight:500}.tab-content{padding:0}.tab-pane{display:none}.tab-pane.active{display:block}.content-section{display:grid;grid-template-columns:70px 1fr;column-gap:100px;row-gap:24px;padding:24px 24px 0 60px;align-items:start}.content-section.first{padding-top:54px}.section-label{width:70px;font-size:14px;line-height:1;color:#1f2d3d;font-weight:500}.section-body{font-size:14px;color:#5a6c7d;line-height:1.8}.body-text{margin:0;word-wrap:break-word;word-break:break-word;white-space:pre-wrap}.author-line{color:#5a6c7d;font-size:14px}.modal-actions{width:100%;display:flex;justify-content:center;gap:21px;padding:0 24px;flex-shrink:0}.review-drawer{position:fixed;top:0;left:0;right:0;bottom:0;z-index:2000;pointer-events:none}.review-drawer.hidden{display:none}.review-drawer.active{pointer-events:auto}.review-drawer-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#00000080;opacity:0;transition:opacity .3s ease}.review-drawer.active .review-drawer-overlay{opacity:1}.review-drawer-content{position:absolute;top:0;right:0;bottom:0;width:400px;max-width:90vw;background:#fff;box-shadow:-2px 0 8px #00000026;transform:translate(100%);transition:transform .3s ease;display:flex;flex-direction:column;z-index:2001}.review-drawer.active .review-drawer-content{transform:translate(0)}.review-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e5e5;flex-shrink:0}.review-drawer-close{background:transparent;border:none;cursor:pointer;color:#909399;padding:4px;display:flex;align-items:center;justify-content:center;transition:color .2s}.review-drawer-close:hover{color:#606266}.review-drawer-body{flex:1;overflow-y:auto;padding:20px}.review-form,.review-form-item{margin-bottom:20px}.review-label{display:block;font-size:14px;font-weight:500;color:#1f2d3d;margin-bottom:8px}.review-value{font-size:14px;color:#5a6c7d;padding:8px 0}.review-select{width:100%;padding:8px 12px;border:1px solid #e5e5e5;border-radius:4px;font-size:14px;background:#fff;color:#333;cursor:pointer;height:32px;box-sizing:border-box}.review-select:focus{outline:none;border-color:#0a96ff}.review-textarea{width:100%;min-height:80px;padding:8px 12px;border:1px solid #e5e5e5;border-radius:4px;font-size:14px;font-family:inherit;resize:vertical;line-height:1.5;box-sizing:border-box}.review-textarea:focus{outline:none;border-color:#0a96ff}.review-drawer-actions{display:flex;flex-direction:row;margin:32px auto 0;width:100%;justify-content:center}.modifyBtn{background-color:#0a96ff;color:#fff;border-radius:5px;padding:8px 20px;margin:0 16px;text-align:center;cursor:pointer;font-size:14px;width:100px;border:none;transition:background-color .2s}.modifyBtn:hover{background-color:#0a96ffe6}.closeBtn{background-color:#7a7a7a;color:#fff;border-radius:5px;padding:8px 20px;margin:0 16px;text-align:center;cursor:pointer;font-size:14px;width:80px;border:none;transition:background-color .2s}.closeBtn:hover{background-color:#646464}.action-btn{box-sizing:border-box;padding:9px 30px;border:1px solid rgba(229,229,229,1);border-radius:35px;background:#fff;color:#1f2d3d;cursor:pointer;font-size:14px;transition:all .2s}.action-btn:hover{background:#f5f7fa}.action-btn.primary{background:#0a96ff;color:#fff;border-color:#0a96ff}.action-btn.primary:hover{background:#0a96ffe6}.empty-works-state{grid-column:1 / -1;text-align:center;padding:80px 20px;color:#999}.empty-works-state .empty-icon{font-size:64px;margin-bottom:16px}.empty-works-state .empty-text{font-size:16px;color:#666}.code-view-container{width:1400px;max-width:98vw;max-height:95vh;display:flex;flex-direction:column;background:#fff;border-radius:16px;box-shadow:0 20px 60px #00000026,0 0 0 1px #0000000d;overflow:hidden}.code-view-container .modal-topbar{height:64px;padding:0 28px;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:none;display:flex;align-items:center;justify-content:space-between}.code-view-container .topbar-left{display:flex;align-items:center;gap:12px}.code-view-container .modal-title{font-size:20px;color:#fff;font-weight:600;letter-spacing:-.3px}.code-view-container .modal-type{font-size:13px;padding:4px 12px;color:#fffffff2;border-radius:6px;background:#fff3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-weight:500;border:1px solid rgba(255,255,255,.3)}.code-view-container .topbar-close-btn{width:36px;height:36px;border-radius:8px;background:#ffffff26;color:#fff;transition:all .2s;display:flex;align-items:center;justify-content:center}.code-view-container .topbar-close-btn:hover{background:#ffffff40;transform:scale(1.05)}.code-view-container .tab-navigation{display:flex;gap:0;border-bottom:2px solid #f0f0f0;padding:0 28px;background:#fafbfc}.code-view-container .tab-btn{padding:16px 28px;background:transparent;border:none;border-bottom:3px solid transparent;color:#64748b;font-size:15px;font-weight:500;cursor:pointer;transition:all .2s;position:relative;top:2px;letter-spacing:-.2px}.code-view-container .tab-btn:hover{color:#0a96ff;background:#0a96ff0d}.code-view-container .tab-btn.active{color:#0a96ff;border-bottom-color:#0a96ff;background:transparent}.code-view-tabs{display:flex;flex-direction:column;flex:1;overflow:hidden;background:#fff}.code-view-tab-pane{display:none;flex:1;overflow:hidden;flex-direction:column}.code-view-tab-pane.active{display:flex}.code-view-content{flex:1;overflow-y:auto;padding:32px;background:#f8f9fa;position:relative}.code-view-content::-webkit-scrollbar{width:8px}.code-view-content::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.code-view-content::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.code-view-content::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.code-view-pre{margin:0;padding:0;background:transparent;border:none}.code-view-code{display:block;padding:24px;background:#1e1e1e;border-radius:12px;box-shadow:0 4px 12px #0000001a;color:#d4d4d4;font-family:Consolas,Monaco,Courier New,monospace;font-size:14px;line-height:1.8;white-space:pre-wrap;word-wrap:break-word;overflow-x:auto;border:1px solid #2d2d2d}.code-view-code::-webkit-scrollbar{height:8px}.code-view-code::-webkit-scrollbar-track{background:#1e1e1e;border-radius:4px}.code-view-code::-webkit-scrollbar-thumb{background:#424242;border-radius:4px}.code-view-code::-webkit-scrollbar-thumb:hover{background:#555}.circuit-view-content{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#fff;min-height:0;position:relative}.circuit-view-container{flex:1;position:relative;overflow:hidden;background:#f8f9fa;min-height:0;height:100%;display:flex;flex-direction:column}.circuit-view-placeholder{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);color:#94a3b8}.circuit-view-placeholder.hidden{display:none}.circuit-placeholder-icon{font-size:80px;margin-bottom:20px;opacity:.4;filter:grayscale(100%)}.circuit-placeholder-text{font-size:16px;color:#64748b;font-weight:500}.circuit-view-frame{width:100%;height:100%;min-height:800px;border:none;background:#fff;display:block;flex:1;min-height:0}.circuit-view-frame.hidden{display:none}.code-view-container .modal-actions{padding:20px 28px;background:#fafbfc;border-top:1px solid #e2e8f0;display:flex;justify-content:flex-end;gap:12px}.code-view-container .action-btn{padding:10px 24px;border-radius:8px;font-size:14px;font-weight:500;transition:all .2s;border:1px solid #e2e8f0;background:#fff;color:#475569;cursor:pointer}.code-view-container .action-btn:hover{background:#f1f5f9;border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 2px 4px #0000000d}.code-view-container .action-btn.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;box-shadow:0 4px 12px #667eea66}.code-view-container .action-btn.primary:hover{transform:translateY(-2px);box-shadow:0 6px 16px #667eea80}.dialogContent{line-height:2;margin:16px 32px;font-size:16px;max-width:500px;min-width:400px}.dialog-footer{font-size:16px!important;border-radius:16px;padding:8px 32px;margin-left:16px!important}
