@charset "UTF-8";.canvas-object-wrapper{position:absolute;overflow:visible;cursor:move;-webkit-user-select:none;user-select:none;touch-action:none}.canvas-object-wrapper.canvas-object-wrapper-dragging{cursor:grabbing}.canvas-object{position:absolute;border:1px solid rgba(0,0,0,.12);border-radius:4px;box-shadow:0 2px 4px #00000063;overflow:hidden;transition:transform .35s ease-in-out;transform-origin:50% 50%}.canvas-object.canvas-object-selected{outline:2px solid var(--selection-color, #0a84ff);outline-offset:2px}.canvas-object.has-image{background:none;box-shadow:none;border:none;overflow:visible}.canvas-object.has-image .canvas-object-image{width:100%;height:100%;object-fit:cover;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.7))}.canvas-grid{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;--grid-size: 10px;background-image:linear-gradient(to right,rgba(255,255,255,.35) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.35) 1px,transparent 1px),linear-gradient(to right,rgba(255,255,255,.18) .5px,transparent .5px),linear-gradient(to bottom,rgba(255,255,255,.18) .5px,transparent .5px);background-size:calc(10 * var(--grid-size)) calc(10 * var(--grid-size)),calc(10 * var(--grid-size)) calc(10 * var(--grid-size)),var(--grid-size) var(--grid-size),var(--grid-size) var(--grid-size)}.ruler-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10001;cursor:crosshair;pointer-events:auto;touch-action:none}.ruler-rect{position:absolute;border:2px solid #e67e22;background:#e67e221f;pointer-events:auto;cursor:grab}.ruler-overlay.ruler-overlay--grabbing,.ruler-overlay.ruler-overlay--grabbing .ruler-rect{cursor:grabbing}.ruler-diagonal{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.ruler-popup{position:absolute;background:#1c1c20f2;color:#e8e8e8;padding:4px 8px;border-radius:4px;font-size:.7rem;white-space:nowrap;box-shadow:0 2px 6px #0006;pointer-events:none}.ruler-popup-row{display:flex;justify-content:space-between;gap:10px}.ruler-popup-row span:first-child{color:#aaa;margin-right:6px}.cable-layer-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10001;cursor:crosshair;pointer-events:none;touch-action:none}.cable-layer-overlay.cable-layer-active{pointer-events:auto}.cable-layer-overlay.cable-layer-modal-open{pointer-events:none}.cable-layer-overlay .cable-layer-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.cable-layer-overlay .cable-endpoint-dot{stroke:#00000040;stroke-width:1}.cable-layer-overlay .cable-layer-actions{position:absolute;bottom:72px;left:50%;transform:translate(-50%);pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:4px}.cable-layer-overlay .cable-layer-buttons{display:flex;flex-direction:row;align-items:center;gap:10px}.cable-layer-overlay .cable-layer-cancel-btn{padding:8px 16px;font-size:.85rem;font-weight:600;color:#fffffff2;background:transparent;border:1px solid rgba(255,255,255,.6);border-radius:8px;cursor:pointer;box-shadow:0 2px 6px #0003;transition:background .15s,border-color .15s,transform .1s}.cable-layer-overlay .cable-layer-cancel-btn:hover{background:#ffffff26;border-color:#fffc}.cable-layer-overlay .cable-layer-cancel-btn:active{transform:scale(.98)}.cable-layer-overlay .cable-layer-hint{margin:0;font-size:.7rem;color:#ffffffd9;text-shadow:0 1px 2px rgba(0,0,0,.5)}.cable-layer-overlay .cable-layer-add-btn{padding:8px 16px;font-size:.85rem;font-weight:600;color:#fff;background:#333;border:none;border-radius:8px;cursor:pointer;box-shadow:0 2px 8px #0000004d;transition:background .15s,transform .1s}.cable-layer-overlay .cable-layer-add-btn:hover{background:#555}.cable-layer-overlay .cable-layer-add-btn:active{transform:scale(.98)}.cable-paths-svg .cable-connector-label-icon{opacity:.56;filter:drop-shadow(0 0 1.4px rgba(255,255,255,.98)) drop-shadow(0 0 3.4px rgba(255,255,255,.76))}.cable-paths-svg .cable-connector-label{fill:#333;font-size:6px;font-family:inherit;font-weight:600;-webkit-user-select:none;user-select:none;paint-order:stroke;stroke:#fffffffa;stroke-width:1.2}.cable-paths-svg .cable-handle-halo{fill:#ffffff14;stroke:#0a84ffb3;stroke-width:1.5;cursor:grab;pointer-events:all}.cable-paths-svg .cable-handle-dot{stroke:#00000073;stroke-width:1;cursor:grab;pointer-events:all}.cable-paths-svg .cable-handle-dot--pressing{stroke:#0a84fff2;stroke-width:2.5}.cable-paths-svg .cable-insert-flash{fill:#ffffff80;stroke:#0a84ffe6;stroke-width:1.5;animation:cable-insert-flash .3s ease-out}@keyframes cable-insert-flash{0%{r:4;opacity:.9}to{r:10;opacity:0}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:24px}.modal-overlay .modal-content{display:flex;flex-direction:column;max-width:90vw;max-height:90vh;overflow:hidden;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003}.modal-overlay .modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.modal-overlay .modal-title{font-size:.9rem;font-weight:700;color:#222;margin:0}.modal-overlay .modal-close{width:28px;height:28px;border:none;border-radius:6px;background:transparent;font-size:1.25rem;line-height:1;color:#555;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.modal-overlay .modal-close:hover{background:#0000000f;color:#222}.modal-overlay .modal-close.modal-close--compact{width:26px;height:26px;font-size:1.15rem}.modal-overlay .modal-body{padding:16px;overflow-y:auto;flex:1}.modal-dialog{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:none;background:transparent;display:flex;align-items:center;justify-content:center;z-index:11000}.modal-dialog::backdrop{background:#00000080;animation:modal-backdrop-fade-in .15s ease-out}.modal-dialog .modal-content{display:flex;flex-direction:column;max-width:90vw;max-height:90vh;overflow:hidden;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003}.modal-dialog .modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.modal-dialog .modal-title{font-size:.9rem;font-weight:700;color:#222;margin:0}.modal-dialog .modal-close{width:28px;height:28px;border:none;border-radius:6px;background:transparent;font-size:1.25rem;line-height:1;color:#555;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.modal-dialog .modal-close:hover{background:#0000000f;color:#222}.modal-dialog .modal-close.modal-close--compact,.modal-dialog.modal-dialog--compact-close .modal-close{width:26px;height:26px;font-size:1.15rem}.modal-dialog .modal-body{padding:16px;overflow-y:auto;flex:1}.modal-dialog[open] .modal-content{animation:modal-slide-in .2s ease-out}@keyframes modal-backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.add-cable-modal.modal-dialog,.add-cable-modal .modal-content{pointer-events:auto}.add-cable-modal .modal-body{-webkit-user-select:text;user-select:text;padding:20px 24px 24px}.add-cable-modal .add-cable-name{user-select:text;-webkit-user-select:text}.add-cable-modal .modal-content{border-radius:14px;box-shadow:0 24px 48px #0000001f,0 0 0 1px #0000000a;width:100%;max-width:min(320px,90vw)}@media (min-width: 600px){.add-cable-modal .modal-content{max-width:min(420px,90vw)}}@media (min-width: 900px){.add-cable-modal .modal-content{max-width:min(480px,90vw)}}.add-cable-form{display:flex;flex-direction:column;gap:20px;min-width:260px;max-width:100%}.add-cable-label{display:block;font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--add-cable-muted, #6b7280);margin-bottom:8px}.add-cable-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.add-cable-row.add-cable-color-row{display:flex;flex-direction:column;gap:8px}.add-cable-color-swatches{display:flex;flex-wrap:wrap;gap:6px}.add-cable-color-swatch-btn{width:18px;height:18px;min-width:18px;min-height:18px;border:2px solid var(--add-cable-border, #e5e7eb);border-radius:5px;cursor:pointer;padding:0;transition:border-color .15s,box-shadow .15s}.add-cable-color-swatch-btn:hover{border-color:var(--add-cable-muted, #9ca3af)}.add-cable-color-swatch-btn-selected,.add-cable-color-swatch-btn:focus{outline:none;border-color:var(--add-cable-focus, #3b82f6);box-shadow:0 0 0 3px #3b82f640}.add-cable-endpoints{display:flex;flex-direction:column;gap:10px}.add-cable-endpoints-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.add-cable-endpoints-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.add-cable-endpoints-head .add-cable-label{margin-bottom:0}.add-cable-endpoints-actions{display:flex;align-items:center;gap:8px}.add-cable-template-select{min-width:110px;min-height:32px;flex-shrink:0;pointer-events:auto;position:relative;z-index:1;padding:4px 8px;font-size:.75rem;font-family:inherit;color:#374151;background:#fff;border:1px solid var(--add-cable-border, #e5e7eb);border-radius:8px;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:auto}.add-cable-template-select:hover{border-color:var(--add-cable-muted, #9ca3af)}.add-cable-template-select:focus{outline:none;border-color:var(--add-cable-focus, #3b82f6);box-shadow:0 0 0 3px #3b82f626}.add-cable-swap-btn{min-height:32px;padding:6px 10px;font-size:.75rem;font-weight:600;color:var(--add-cable-muted, #6b7280);background:#fff;border:1px solid var(--add-cable-border, #e5e7eb);border-radius:8px;cursor:pointer;transition:border-color .15s,color .15s,background .15s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.add-cable-swap-btn:hover{color:#374151;border-color:var(--add-cable-muted, #9ca3af);background:var(--add-cable-badge-bg, #f3f4f6)}.add-cable-swap-btn:focus{outline:none;border-color:var(--add-cable-focus, #3b82f6);box-shadow:0 0 0 3px #3b82f626}.add-cable-endpoint{display:flex;flex-direction:column;gap:10px;min-width:0}.add-cable-endpoint-head-row{display:flex;align-items:center;gap:8px;min-width:0}.add-cable-endpoint-head-row .add-cable-connector-picker{flex:1;min-width:0;max-width:none}.add-cable-endpoint-badge{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:var(--add-cable-muted, #6b7280);background:var(--add-cable-badge-bg, #f3f4f6);border-radius:8px;flex-shrink:0}.add-cable-name{min-width:6rem;width:100%;padding:8px 12px;font-size:.8125rem;font-family:inherit;border:1px solid var(--add-cable-border, #e5e7eb);border-radius:8px;background:#fff;color:#374151;box-sizing:border-box;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.add-cable-name::placeholder{color:var(--add-cable-muted, #9ca3af)}.add-cable-name:focus{outline:none;border-color:var(--add-cable-focus, #3b82f6)}.add-cable-connector-picker{position:relative;min-width:0;max-width:150px}.add-cable-connector-trigger-btn{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:8px 12px;font-family:inherit;color:#111;background:#fff;border:1px solid var(--add-cable-border, #e5e7eb);border-radius:8px;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;text-align:left}.add-cable-connector-trigger-btn:focus{outline:none;border-color:var(--add-cable-focus, #3b82f6);box-shadow:0 0 0 3px #3b82f626}.add-cable-connector-trigger-content{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1;min-width:0}.add-cable-connector-trigger-icon{flex-shrink:0;object-fit:contain}.add-cable-connector-trigger-label{font-size:.625rem;font-weight:500;color:var(--add-cable-muted, #6b7280);line-height:1.2;text-align:center}.add-cable-connector-chevron{flex-shrink:0;color:var(--add-cable-muted, #9ca3af);font-size:.75rem}.add-cable-connector-picker-label{display:block;font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--add-cable-muted, #6b7280);margin-bottom:6px}.add-cable-connector-native-wrap{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 2px 0 0;border:1px solid var(--add-cable-border, #e5e7eb);border-radius:8px;background:#fff;-webkit-tap-highlight-color:transparent}.add-cable-connector-native-wrap:focus-within{border-color:var(--add-cable-focus, #3b82f6);box-shadow:0 0 0 3px #3b82f626;outline:none}.add-cable-connector-native-icon{flex-shrink:0;margin-left:8px;object-fit:contain;opacity:.9}.add-cable-connector-native-select{flex:1;min-width:0;min-height:42px;padding:8px 28px 8px 4px;font-size:.8125rem;font-family:inherit;color:#111;background:transparent;border:none;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='%239ca3af' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.add-cable-connector-native-select:focus{outline:none}.add-cable-connector-native-select:hover{color:#111}.add-cable-label-combo{position:relative;min-width:4rem;width:100%;display:flex;align-items:stretch;border:1px solid var(--add-cable-border, #e5e7eb);border-radius:8px;background:#fff;-webkit-tap-highlight-color:transparent}.add-cable-label-combo:focus-within{border-color:var(--add-cable-focus, #3b82f6);box-shadow:0 0 0 3px #3b82f626;outline:none}.add-cable-label-combo-input{flex:1;min-width:0;min-height:40px;border:none;border-radius:8px 0 0 8px;padding:6px 8px;font-size:.8125rem;-webkit-user-select:text;user-select:text;touch-action:manipulation}.add-cable-label-combo-input:focus{outline:none;box-shadow:none}.add-cable-label-combo-btn{flex-shrink:0;width:28px;min-height:40px;padding:0;border:none;border-left:1px solid var(--add-cable-border, #e5e7eb);border-radius:0 8px 8px 0;background:transparent;font-size:.7rem;color:var(--add-cable-muted, #9ca3af);cursor:pointer;display:flex;align-items:center;justify-content:center}.add-cable-label-combo-btn:hover{background:var(--add-cable-badge-bg, #f3f4f6);color:#6b7280}.add-cable-label-combo-list{position:absolute;top:100%;left:0;right:0;margin:4px 0 0;padding:6px;list-style:none;background:#fff;border:1px solid var(--add-cable-border, #e5e7eb);border-radius:10px;box-shadow:0 10px 24px #0000001a,0 0 0 1px #0000000a;max-height:min(220px,50vh);overflow-y:auto;z-index:1000;-webkit-overflow-scrolling:touch}.add-cable-label-combo-list-portaled{margin:0}.add-cable-label-combo-option{padding:10px 12px;font-size:.8125rem;cursor:pointer;border-radius:6px;min-height:44px;display:flex;align-items:center;-webkit-tap-highlight-color:transparent}.add-cable-label-combo-option:hover,.add-cable-label-combo-option[aria-selected=true]{background:var(--add-cable-badge-bg, #f3f4f6)}.add-cable-label-combo-option[aria-selected=true]{background:#3b82f61a;color:#1d4ed8}.add-cable-picker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:12000;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;background:#00000080;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.add-cable-picker-overlay-panel{width:100%;max-width:360px;max-height:85vh;display:flex;flex-direction:column;background:#fff;border-radius:14px;box-shadow:0 24px 48px #0003;overflow:hidden}.add-cable-picker-overlay-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--add-cable-border, #e5e7eb);flex-shrink:0}.add-cable-picker-overlay-title{font-size:1rem;font-weight:600;color:#111}.add-cable-picker-overlay-close{width:40px;height:40px;padding:0;border:none;border-radius:8px;background:transparent;font-size:1.5rem;line-height:1;color:var(--add-cable-muted, #6b7280);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.add-cable-picker-overlay-close:hover{background:var(--add-cable-badge-bg, #f3f4f6);color:#374151}.add-cable-picker-overlay-list{list-style:none;margin:0;padding:12px;overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1;min-height:0}.add-cable-picker-overlay-option{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:12px 16px;font-size:.9375rem;font-family:inherit;text-align:left;color:#111;background:transparent;border:none;border-radius:10px;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.add-cable-picker-overlay-option:hover,.add-cable-picker-overlay-option:focus{background:var(--add-cable-badge-bg, #f3f4f6);outline:none}.add-cable-picker-overlay-option[aria-selected=true]{background:#3b82f61f;color:#1d4ed8}.add-cable-picker-overlay-icon{flex-shrink:0;object-fit:contain}.add-cable-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:4px;padding-top:16px;border-top:1px solid var(--add-cable-border, #e5e7eb)}.add-cable-btn{padding:8px 18px;font-size:.8125rem;font-weight:600;border:none;border-radius:10px;cursor:pointer;transition:background .15s,color .15s}.add-cable-cancel{background:transparent;color:var(--add-cable-muted, #6b7280)}.add-cable-cancel:hover{background:var(--add-cable-badge-bg, #f3f4f6);color:#374151}.add-cable-confirm{background:#2563eb;color:#fff}.add-cable-confirm:hover{background:#1d4ed8}.add-cable-confirm:focus{outline:none;box-shadow:0 0 0 3px #2563eb4d}.selection-toolbar-btn{display:flex;align-items:center;justify-content:center;width:32px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;color:#e0e0e0;cursor:pointer;transition:background .15s,color .15s}.selection-toolbar-btn:hover{background:#ffffff1f;color:#fff}.selection-toolbar-btn-danger:hover{background:#dc354566;color:#ff6b7a}.selection-toolbar-btn-icon{font-size:1.125rem;line-height:1}.selection-toolbar{position:absolute;z-index:50000;display:flex;align-items:center;gap:4px;padding:4px;background:var(--toolbar-bg, #2d2d2d);border-radius:8px;box-shadow:0 4px 12px #0000004d;pointer-events:auto}body.catalog-dragging{cursor:grabbing!important;-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none}body.catalog-dragging .canvas{pointer-events:none}body.catalog-dragging *{cursor:grabbing!important}.catalog-drag-ghost{position:fixed;z-index:70000;pointer-events:none;display:flex;align-items:center;justify-content:center;border-radius:6px;overflow:visible;opacity:.7}.catalog-drag-ghost-wrapper .catalog-drag-ghost{position:relative;z-index:0}.catalog-drag-ghost-image{width:100%;height:100%;object-fit:contain;object-position:center;-webkit-user-drag:none;user-drag:none;pointer-events:none;filter:drop-shadow(0 16px 48px rgba(0,0,0,.35))}.catalog-drag-ghost-placeholder{width:100%;height:100%;display:block;box-shadow:0 16px 48px #00000059}.canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:hidden;cursor:default;touch-action:none}.canvas.canvas-grab{cursor:grab}.canvas.canvas-grabbing{cursor:grabbing}.canvas-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#1f2328;background-position:0 0;pointer-events:none}.canvas-viewport{position:absolute;left:0;top:0;width:100%;height:100%;transform-origin:0 0}.canvas-animating .canvas-viewport{transition:transform .25s ease-out}.canvas-animating .canvas-bg{transition:background-size .25s ease-out,background-position .25s ease-out}.canvas-viewport-zoom{position:absolute;left:0;top:0;width:100%;height:100%}.modal-dialog.gpt-modal .modal-content{font-size:.72rem;min-width:320px;max-width:min(560px,100vw - 48px);width:100%;max-height:calc(100vh - 48px);box-shadow:0 8px 32px #00000040;animation:gpt-modal-scale-in .2s ease-out}.modal-dialog.gpt-modal .gpt-modal-intro{margin:0 0 12px;color:#444;line-height:1.4;font-size:1em}.modal-dialog.gpt-modal .gpt-modal-options{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.modal-dialog.gpt-modal .gpt-modal-check{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:500;color:#333}.modal-dialog.gpt-modal .gpt-modal-check input{width:16px;height:16px;accent-color:#0a84ff}.modal-dialog.gpt-modal .gpt-modal-location-row{display:flex;gap:8px;margin-left:26px;margin-top:4px}.modal-dialog.gpt-modal .gpt-modal-location-input{flex:1;padding:6px 8px;border:1px solid rgba(0,0,0,.2);border-radius:6px;font-size:1em;font-family:inherit}.modal-dialog.gpt-modal .gpt-modal-location-input:focus{outline:none;border-color:#0a84ff;box-shadow:0 0 0 2px #0a84ff40}.modal-dialog.gpt-modal .gpt-modal-location-btn{flex-shrink:0;padding:6px 10px;border:1px solid rgba(0,0,0,.15);border-radius:6px;background:#f5f5f5;font-size:1em;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.modal-dialog.gpt-modal .gpt-modal-location-btn:hover:not(:disabled){background:#eee;border-color:#00000040}.modal-dialog.gpt-modal .gpt-modal-location-btn:disabled{opacity:.7;cursor:not-allowed}.modal-dialog.gpt-modal .gpt-modal-error{margin:4px 0 0 22px;font-size:.95em;color:#c00}.modal-dialog.gpt-modal .gpt-modal-prompt-wrap{margin-bottom:16px}.modal-dialog.gpt-modal .gpt-modal-label{display:block;font-weight:600;color:#333;margin-bottom:6px;font-size:1em}.modal-dialog.gpt-modal .gpt-modal-textarea{width:100%;padding:8px 10px;border:1px solid rgba(0,0,0,.2);border-radius:8px;font-size:1em;font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,monospace;line-height:1.45;resize:vertical;min-height:200px;box-sizing:border-box}.modal-dialog.gpt-modal .gpt-modal-textarea:focus{outline:none;border-color:#0a84ff;box-shadow:0 0 0 2px #0a84ff40}.modal-dialog.gpt-modal .gpt-modal-actions{display:flex;gap:10px;flex-wrap:wrap}.modal-dialog.gpt-modal .gpt-modal-copy-btn,.modal-dialog.gpt-modal .gpt-modal-close-btn{padding:8px 14px;border-radius:8px;font-size:1em;font-weight:600;cursor:pointer;transition:background .15s,color .15s;border:none}.modal-dialog.gpt-modal .gpt-modal-copy-btn{background:#0a84ff;color:#fff}.modal-dialog.gpt-modal .gpt-modal-copy-btn:hover{background:#06c}.modal-dialog.gpt-modal .gpt-modal-close-btn{background:#f0f0f0;color:#333}.modal-dialog.gpt-modal .gpt-modal-close-btn:hover{background:#e0e0e0}@keyframes gpt-modal-scale-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.modal-dialog.help-modal .modal-content{width:min(1000px,95vw);max-height:min(90vh,900px);box-shadow:0 8px 32px #00000040}.modal-dialog.help-modal .modal-body{display:flex;flex-direction:column;gap:14px;padding:14px;overflow:hidden}.help-modal-shell{display:grid;grid-template-columns:210px minmax(0,1fr);gap:10px;min-height:0;flex:1}.help-modal-page-nav{display:flex;flex-direction:column;gap:4px;padding:3px;border:1px solid rgba(0,0,0,.12);border-radius:10px;background:#f5f5f5;overflow:auto}.help-modal-page-tab{display:flex;flex-direction:column;align-items:stretch;gap:2px;width:100%;border:1px solid transparent;border-radius:7px;background:transparent;color:#333;padding:5px 7px;font:inherit;text-align:left;cursor:pointer;transition:background .15s,border-color .15s}.help-modal-page-tab:hover{background:#0000000a}.help-modal-page-tab.is-active{background:#fff;border-color:#0000001f}.help-modal-page-main{display:flex;align-items:center;gap:6px;min-width:0}.help-modal-page-number{width:18px;height:18px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.64rem;font-weight:700;color:#fff;background:#0a84ff;flex-shrink:0}.help-modal-page-label{font-size:.72rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.help-modal-page-subchapters{display:flex;flex-direction:column;gap:1px;padding-left:24px}.help-modal-page-subchapter{font-size:.62rem;line-height:1.2;color:#444;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.86}.help-modal-page-tab:not(.is-active) .help-modal-page-subchapter{opacity:.72}.help-modal-page{border:1px solid rgba(0,0,0,.12);border-radius:10px;padding:12px;background:#fff;overflow:auto}.help-modal-page-head{margin-bottom:10px}.help-modal-page-title{margin:0 0 4px;font-size:1rem;color:#333}.help-modal-page-subtitle{margin:0;color:#444;font-size:.8rem;line-height:1.4}.help-modal-shot{margin:0 0 12px;border:1px solid rgba(0,0,0,.12);border-radius:10px;overflow:hidden;background:#f5f5f5}.help-modal-shot img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover;background:#f0f0f0}.help-modal-shot figcaption{margin:0;padding:8px 10px;font-size:.74rem;line-height:1.35;color:#444;border-top:1px solid rgba(0,0,0,.12);background:#fff}.help-modal-sections{display:flex;flex-direction:column;gap:10px}.help-modal-section h4{margin:0 0 5px;font-size:.82rem;color:#333}.help-modal-section ul{margin:0;padding-left:18px;color:#444;font-size:.76rem;line-height:1.45}.help-modal-section li{margin-bottom:4px}.help-modal-actions{display:flex;align-items:center;gap:8px;border-top:1px solid rgba(0,0,0,.1);padding-top:10px}.help-modal-progress{margin-left:auto;margin-right:auto;font-size:.76rem;color:#444}.help-modal-btn{border:1px solid rgba(0,0,0,.15);border-radius:8px;padding:7px 12px;font:inherit;font-size:.75rem;font-weight:600;cursor:pointer}.help-modal-btn:disabled{opacity:.45;cursor:not-allowed}.help-modal-btn-secondary{color:#333;background:#fff}.help-modal-btn-secondary:hover:not(:disabled){background:#f5f5f5}.help-modal-btn-primary{color:#fff;background:#0a84ff;border-color:#0a84ff}.help-modal-btn-primary:hover{background:#06c}@media (max-width: 900px){.help-modal-shell{grid-template-columns:1fr}.help-modal-page-nav{flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap}.help-modal-page-tab{min-width:160px;padding:6px 8px}.help-modal-page-subchapters{display:none}}@media (max-width: 640px){.modal-dialog.help-modal .modal-content{width:96vw}.modal-dialog.help-modal .modal-body{padding:10px;gap:10px}.help-modal-actions{flex-wrap:wrap}.help-modal-progress{order:4;width:100%;text-align:center}}.info-modal-backdrop{z-index:60000;background:#00000059;animation:info-modal-fade-in .15s ease-out}.info-modal{font-size:.72rem;min-width:320px;max-width:min(480px,100vw - 48px);width:100%;max-height:calc(100vh - 48px);box-shadow:0 8px 32px #00000040;animation:info-modal-scale-in .2s ease-out}.info-modal .info-modal-intro{margin:0 0 14px;color:#444;line-height:1.45;font-size:1em}.info-modal .info-modal-heading{font-size:.85em;font-weight:700;color:#333;margin:14px 0 6px}.info-modal .info-modal-list{margin:0 0 4px;padding-left:1.25em;line-height:1.5;color:#444}.info-modal .info-modal-list li{margin-bottom:4px}.info-modal .info-modal-author{margin:4px 0 0;color:#444}.info-modal .info-modal-author a{color:#0a84ff;text-decoration:none}.info-modal .info-modal-author a:hover{text-decoration:underline}.info-modal .info-modal-disclaimers{margin-top:18px;padding-top:14px;border-top:1px solid rgba(0,0,0,.08)}.info-modal .info-modal-disclaimer{margin:0 0 10px;font-size:.9em;color:#666;line-height:1.4}.info-modal .info-modal-disclaimer:last-child{margin-bottom:0}@keyframes info-modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes info-modal-scale-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.board-menu-wrap{position:fixed;top:24px;right:24px;z-index:100}.board-menu{position:relative;display:flex;align-items:center;gap:4px;padding:6px 10px;background:#ffffffe6;border-radius:8px;box-shadow:0 2px 8px #0003}.board-menu-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:6px;background:transparent;font-size:1.1rem;line-height:1;color:#333;cursor:pointer;transition:background .15s ease}.board-menu-btn:hover{background:#0000000f}.board-menu-btn:active{background:#0000001a}.board-menu-btn:disabled{opacity:.55;cursor:progress}.board-menu-file-input{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.board-menu-error{position:absolute;left:0;top:calc(100% + 4px);margin:0;padding:4px 8px;border-radius:4px;background:#fee;color:#b71c1c;border:1px solid #d32f2f;font-size:.75rem;line-height:1.3;box-shadow:0 2px 6px #0000001f;z-index:1000}.catalog-mode-switch{display:flex;border-radius:6px;overflow:hidden;box-shadow:0 2px 8px #0003;background:#ffffffe6;margin-bottom:6px}.catalog-mode-switch .catalog-mode-btn{flex:1;padding:4px 8px;border:none;background:transparent;font-size:.6rem;font-weight:600;color:#666;cursor:pointer;transition:background .15s,color .15s;text-transform:uppercase}.catalog-mode-switch .catalog-mode-btn:hover{background:#0000000f;color:#333}.catalog-mode-switch .catalog-mode-btn.active{background:#6478c840;color:#334}@media (max-width: 768px){.catalog-mode-switch .catalog-mode-btn{font-size:.91rem}}.text-filter-wrapper{position:relative}.text-filter-wrapper .dropdown.text-filter{padding:4px 20px 4px 6px;background-image:none;cursor:text}.text-filter-wrapper .text-filter-clear{position:absolute;top:50%;right:6px;transform:translateY(-50%);width:12px;height:12px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:.6rem;font-weight:600;color:#555;background:none;border:none;cursor:pointer}.text-filter-wrapper .text-filter-clear:hover{color:#333}.text-filter-wrapper .text-filter-clear:focus-visible{outline:1px solid #666;border-radius:2px}.catalog-list-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.catalog-list-header .dropdown-label{margin:0;flex:1}.catalog-view-toggle{display:flex;gap:2px}.catalog-view-btn{width:24px;height:24px;padding:0;border:1px solid #ccc;border-radius:4px;background:#fff;font-size:.75rem;line-height:1;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s,color .15s}.catalog-view-btn:hover{background:#f0f0f0;border-color:#aaa}.catalog-view-btn.active{background:#e0e0e0;border-color:#888;color:#333}.catalog-list{width:100%;max-height:14em;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px 0;border:1px solid #ccc;border-radius:4px;background:#fff;font-size:.85rem}.catalog-list-empty{padding:6px 8px;color:#666;font-size:.85rem}.catalog-list-hint{margin:4px 0 0;padding:0;font-size:.6rem;color:#999;text-align:center}.catalog-list--text .catalog-list-item{width:100%;padding:4px 8px;text-align:left;border:none;border-radius:0;background:transparent;font:inherit;color:#333;cursor:pointer;-webkit-user-select:none;user-select:none;display:block}.catalog-list--text .catalog-list-item:hover{background:#0000000f}.catalog-list--text .catalog-list-item-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.catalog-list--list .catalog-list-item{width:100%;padding:4px 8px;text-align:left;border:none;border-radius:0;background:transparent;font:inherit;color:#333;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:8px}.catalog-list--list .catalog-list-item:hover{background:#0000000f}.catalog-list--list .catalog-list-item-thumb{overflow:hidden;background:transparent;display:flex;align-items:center;justify-content:center}.catalog-list--list .catalog-list-item-thumb img{width:100%;height:100%;object-fit:contain}.catalog-list--list .catalog-list-item-thumb .catalog-list-item-placeholder{display:block;max-width:100%;max-height:100%;border-radius:3px}.catalog-list--list .catalog-list-item-thumb{flex:0 0 36px;width:36px;height:36px;border-radius:4px}.catalog-list--list .catalog-list-item-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.catalog-panel.panel-expanded .catalog-list--text,.catalog-panel.panel-expanded .catalog-list--list{display:grid;grid-template-columns:1fr 1fr;gap:0 8px}.catalog-list--grid{display:flex;flex-wrap:wrap;gap:6px;padding:6px;align-content:flex-start}.catalog-list--grid .catalog-list-group{width:100%}.catalog-list--grid .catalog-list-group-grid{display:flex;flex-wrap:wrap;gap:6px}.catalog-list--grid .catalog-list-item{display:flex;flex-direction:column;align-items:center;gap:4px;width:64px;padding:4px;border:1px solid rgba(0,0,0,.08);border-radius:6px;background:#fff;font:inherit;color:#333;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center;touch-action:pan-y;transition:border-color .15s,background .15s}.catalog-list--grid .catalog-list-item:hover{border-color:#0003;background:#fafafa}.catalog-list--grid .catalog-list-item-thumb{overflow:hidden;background:transparent;display:flex;align-items:center;justify-content:center}.catalog-list--grid .catalog-list-item-thumb img{width:100%;height:100%;object-fit:contain}.catalog-list--grid .catalog-list-item-thumb .catalog-list-item-placeholder{display:block;max-width:100%;max-height:100%;border-radius:3px}.catalog-list--grid .catalog-list-item-thumb{width:48px;height:48px;border-radius:4px;flex-shrink:0}.catalog-list--grid .catalog-list-item-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.6rem;line-height:1.2;max-width:100%}.catalog-list--large{display:flex;flex-wrap:wrap;gap:8px;padding:8px;align-content:flex-start}.catalog-list--large .catalog-list-group{width:100%}.catalog-list--large .catalog-list-group-grid{display:flex;flex-wrap:wrap;gap:8px}.catalog-list--large .catalog-list-item{display:flex;flex-direction:column;align-items:center;gap:6px;width:96px;padding:6px;border:1px solid rgba(0,0,0,.08);border-radius:8px;background:#fff;font:inherit;color:#333;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center;touch-action:pan-y;transition:border-color .15s,background .15s}.catalog-list--large .catalog-list-item:hover{border-color:#0003;background:#fafafa}.catalog-list--large .catalog-list-item-thumb{overflow:hidden;background:transparent;display:flex;align-items:center;justify-content:center}.catalog-list--large .catalog-list-item-thumb img{width:100%;height:100%;object-fit:contain}.catalog-list--large .catalog-list-item-thumb .catalog-list-item-placeholder{display:block;max-width:100%;max-height:100%;border-radius:3px}.catalog-list--large .catalog-list-item-thumb{width:72px;height:72px;border-radius:6px;flex-shrink:0}.catalog-list--large .catalog-list-item-text{font-size:.7rem;line-height:1.3;max-width:100%;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.catalog-list-group{padding:2px 0}.catalog-list-group-label{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;padding:4px 8px 2px;font-size:.7rem;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.04em;background:#0000000a;border:none;cursor:pointer;text-align:left;transition:background .15s ease}.catalog-list-group-label:hover{background:#00000014}.catalog-list-group-label:active{background:#0000001a}.catalog-list-group-label-text{flex:1;min-width:0}.catalog-list-group-label-icons{display:flex;align-items:center;gap:6px;flex-shrink:0}.catalog-list-group-icon{flex-shrink:0;font-size:.65rem;color:#888}.catalog-list-group-chevron{flex-shrink:0;font-size:.55rem;color:#999;transition:transform .2s ease}.catalog-list-group-inner{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease-out;min-height:0}.catalog-list-group-inner.collapsed{grid-template-rows:0fr}.catalog-list-group-content{min-height:0;overflow:hidden}.catalog-list-item{touch-action:pan-y;-webkit-touch-callout:none}.catalog-list-item:focus-visible{outline:2px solid #0a84ff;outline-offset:-2px}.catalog-list-item.catalog-item-pressing{transform:scale(.97);background:#0a84ff14;transition:transform .15s ease-out,background .15s ease-out}.catalog-list-item.catalog-item-activated{animation:catalog-item-pulse .2s ease-out}.catalog-list--grid .catalog-list-item.catalog-item-pressing,.catalog-list--large .catalog-list-item.catalog-item-pressing{border-color:#0a84ff66;box-shadow:0 0 0 2px #0a84ff26}@keyframes catalog-item-pulse{0%{transform:scale(.97);background:#0a84ff26}50%{transform:scale(1.02);background:#0a84ff40}to{transform:scale(1);background:transparent}}.size-filters{display:flex;flex-direction:column;gap:4px;width:100%;max-width:100%}.size-filters .size-filter-row{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.size-filters .size-filter-row .dropdown-label{margin:0}.size-filters .size-bounds{font-size:.7rem;color:#555;font-variant-numeric:tabular-nums}.size-filters .size-slider-row{display:block;align-items:center}.size-filters .size-slider{position:relative;display:flex;align-items:center;width:100%;max-width:100%;height:20px;margin:0;touch-action:none;-webkit-user-select:none;user-select:none}.size-filters .size-slider-track{position:relative;flex:1;height:6px;border-radius:999px;background:#e0e0e0}.size-filters .size-slider-range{position:absolute;height:100%;border-radius:999px;background:#6478c8}.size-filters .size-slider-thumb{display:block;width:14px;height:14px;border-radius:999px;border:1px solid #aaa;background:#fff;cursor:pointer;box-shadow:0 1px 2px #0003}.size-filters .size-slider-thumb:focus-visible{outline:none;border-color:#6478c8;box-shadow:0 0 0 3px #6478c840}@media (max-width: 768px){.size-filters .size-bounds{font-size:.91rem}}.floating-dropdowns{top:24px;left:24px;max-height:calc(100vh - 48px);overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:12px;background:#ffffffe6;border-radius:8px;box-shadow:0 2px 8px #0003;transition:width .2s ease}.floating-dropdowns.floating-controls{position:fixed;z-index:100}.floating-dropdowns .catalog-content{display:flex;flex-direction:column;gap:4px;width:100%}.catalog-switches-row{display:flex;flex-direction:row;align-items:center;gap:8px}.catalog-switches-row .catalog-mode-switch,.catalog-switches-row .unit-switch{margin-bottom:0}.dropdown-group{width:100%}.dropdown-group .dropdown-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#555}.dropdown-group .dropdown{width:100%;max-width:100%;padding:4px 20px 4px 6px;font-size:.65rem;color:#333;background:#fff;border:1px solid #ccc;border-radius:4px;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='%23333' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 4px center;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}.dropdown-group .dropdown.text-filter{padding:4px 20px 4px 6px;background-image:none;cursor:text}.dropdown-group .dropdown:hover{border-color:#999}.dropdown-group .dropdown:focus{outline:none;border-color:#666}.dropdown-group .dropdown.dropdown-list{height:auto;min-height:5em;padding:2px 6px;font-size:.85rem;background-image:none;overflow-y:auto}.device-type-brand-row{display:flex;gap:8px;width:100%}.device-filter-field{flex:1;min-width:0}.device-filter-field .dropdown{width:100%}@media (max-width: 767px){.dropdown-group .dropdown.dropdown-list{min-height:0;height:auto;padding:4px 20px 4px 6px;font-size:.845rem;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='%23333' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 4px center}}.filter-reset{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-top:2px;padding:2px 0;color:#666;background:none;border:none;cursor:pointer}.filter-reset:hover:not(:disabled){color:#333;text-decoration:underline}.filter-reset:disabled{color:#aaa;cursor:default}.collapsible-toggle{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:6px;margin-top:8px;padding:4px 0;color:#555;background:none;border:none;cursor:pointer;transition:opacity .15s ease}.collapsible-toggle:hover{color:#333}.collapsible-toggle:active{opacity:.7}.collapsible-chevron{font-size:.6rem;line-height:1;display:inline-block;transition:transform .3s ease-in-out}.collapsible-chevron.expanded{transform:rotate(180deg)}.collapsible-content{display:grid;grid-template-rows:0fr;margin-top:4px;overflow:hidden;transition:grid-template-rows .3s ease-in-out}.collapsible-content.expanded{grid-template-rows:1fr}.collapsible-content .collapsible-inner{min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:4px}.custom-section{margin-top:12px;padding-top:12px;border-top:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;gap:6px}.custom-section .collapsible-toggle{margin-top:0}.custom-form-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.custom-form-row .dropdown-label{margin:0;min-width:52px}.custom-input{font-size:.65rem;padding:4px 6px;border:1px solid #ccc;border-radius:4px;width:72px;box-sizing:border-box}.custom-input[type=text]{width:120px;flex:1;min-width:80px}.custom-color-input{width:32px;height:22px;padding:0;border:1px solid #ccc;border-radius:4px;cursor:pointer;background:transparent}.custom-create-btn{margin-top:4px;padding:6px 12px;font-size:.7rem;font-weight:600;color:#fff;background:#333;border:none;border-radius:4px;cursor:pointer;align-self:flex-start}.custom-create-btn:hover{background:#555}@media (max-width: 768px){.dropdown-group .dropdown-label,.dropdown-group .dropdown,.filter-reset{font-size:.845rem}}.side-control{width:var(--side-control-size, 44px);height:var(--side-control-size, 44px);min-width:var(--side-control-size, 44px);min-height:var(--side-control-size, 44px);flex-shrink:0;border:none;border-radius:50%;background:#ffffffe6;box-shadow:0 2px 6px #0003,0 4px 16px #0000001f;font-size:calc(var(--side-control-size, 44px) * .52);font-weight:300;line-height:1;cursor:pointer;color:#333;display:flex;align-items:center;justify-content:center;transition:transform .15s ease,box-shadow .15s ease;box-sizing:border-box;aspect-ratio:1}.side-control:hover{transform:scale(1.08);box-shadow:0 4px 12px #00000038,0 6px 20px #00000026}.side-control:active{transform:scale(.96)}.side-control.active{background:#6478c840;color:#334}.side-control.cables-visible-toggle--dim{background:#6478c82e;color:#334c;box-shadow:inset 0 0 0 2px #6478c859}.side-control.zoom-in{padding-bottom:2px}.side-control.zoom-out{font-size:calc(var(--side-control-size, 44px) * .68);padding-bottom:2px}.component-list-modal-backdrop{z-index:60000;background:#00000073}.component-list-modal{font-size:.75rem;min-width:360px;max-width:min(720px,100vw - 48px);width:100%;max-height:calc(100vh - 48px);box-shadow:0 8px 32px #00000040}.component-list-modal .component-list-modal-header-actions{display:flex;align-items:center;gap:8px}.component-list-modal .component-list-modal-export-btn{padding:6px 10px;border:1px solid rgba(0,0,0,.2);border-radius:6px;background:#fff;font-size:.75rem;font-weight:600;color:#333;cursor:pointer;transition:background .15s,border-color .15s}.component-list-modal .component-list-modal-export-btn:hover{background:#0000000a;border-color:#0000004d}.component-list-modal .component-list-modal-export-btn-icon{margin-right:6px}.component-list-modal .component-list-modal-empty{color:#666;margin:0}.component-list-modal .component-list-table{width:100%;border-collapse:collapse;margin-bottom:20px}.component-list-modal .component-list-table th,.component-list-modal .component-list-table td{padding:2px 6px;text-align:left;border-right:1px solid rgba(0,0,0,.12);font-size:.7rem}.component-list-modal .component-list-table th:last-child,.component-list-modal .component-list-table td:last-child{border-right:none}.component-list-modal .component-list-table th{font-weight:600;color:#444;background:#e8e8e8}.component-list-modal .component-list-table tbody tr:nth-child(odd) td{background:#fff;font-family:Roboto,sans-serif}.component-list-modal .component-list-table tbody tr:nth-child(2n) td{background:#f5f5f5;font-family:Roboto,sans-serif}.component-list-modal .component-list-table tbody tr:hover td{background:#e8f0f8}.component-list-modal .component-list-thumbnail-col{width:44px;padding:4px 6px}.component-list-modal .component-list-thumbnail-cell{width:44px;padding:4px 6px;vertical-align:middle}.component-list-modal .component-list-thumbnail{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:4px;overflow:hidden;background:transparent;border:none}.component-list-modal .component-list-thumbnail-img{width:100%;height:100%;object-fit:contain;display:block}.component-list-modal .component-list-thumbnail-color{display:block;width:100%;height:100%}.component-list-modal .component-list-actions,.component-list-modal .connectors-actions,.component-list-modal .connectors-icons-cell{width:1%;white-space:nowrap}.component-list-modal .component-list-remove-btn{padding:4px 8px;font-size:.85em;border:1px solid rgba(0,0,0,.15);border-radius:4px;background:#f5f5f5;cursor:pointer;transition:background .15s;color:#c00}.component-list-modal .component-list-remove-btn:hover{background:#fee}.component-list-modal .component-list-remove-btn-icon{padding:2px 4px;min-width:24px;line-height:1;font-size:1rem}.component-list-modal .component-list-remove-btn-icon span{display:inline-block;line-height:1}.component-list-modal .component-list-row-clickable{cursor:pointer}.component-list-modal .connectors-section{margin-top:8px}.component-list-modal .connectors-section-title{font-size:.85rem;font-weight:600;color:#333;margin:0 0 10px}.component-list-modal .connectors-empty{color:#666;margin:0 0 10px}.component-list-modal .connectors-table{width:100%;border-collapse:collapse;margin-bottom:12px}.component-list-modal .connectors-table th,.component-list-modal .connectors-table td{padding:2px 6px;text-align:left;border-right:1px solid rgba(0,0,0,.12);font-size:.7rem}.component-list-modal .connectors-table th:last-child,.component-list-modal .connectors-table td:last-child{border-right:none}.component-list-modal .connectors-table th{font-weight:600;color:#444;background:#e8e8e8}.component-list-modal .connectors-table tbody tr:nth-child(odd) td{background:#fff;font-family:Roboto,sans-serif}.component-list-modal .connectors-table tbody tr:nth-child(2n) td{background:#f5f5f5;font-family:Roboto,sans-serif}.component-list-modal .connectors-table tbody tr:hover td{background:#e8f0f8}.component-list-modal .connectors-icons{display:flex;align-items:center;gap:4px}.component-list-modal .connectors-icons-with-name{flex-direction:row;align-items:center;gap:6px}.component-list-modal .connector-name{font-size:.75rem;color:#555;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.component-list-modal .connector-icon{width:24px;height:24px;object-fit:contain}.component-list-modal .connectors-btn{padding:4px 8px;font-size:.85em;border:1px solid rgba(0,0,0,.15);border-radius:4px;background:#f5f5f5;cursor:pointer;transition:background .15s;color:#333;margin-right:4px}.component-list-modal .connectors-btn:hover{background:#eee}.component-list-modal .connectors-btn-icon{padding:2px 4px;min-width:24px;line-height:1;font-size:.95rem}.component-list-modal .connectors-btn-icon span{display:inline-block;line-height:1}.component-list-modal .connectors-btn-remove{color:#c00}.component-list-modal .connectors-btn-remove:hover{background:#fee}.component-list-modal .connectors-add-btn{padding:8px 12px;font-size:.9em;border:1px dashed rgba(0,0,0,.3);border-radius:6px;background:#fafafa;color:#555;cursor:pointer;transition:border-color .15s,background .15s}.component-list-modal .connectors-add-btn:hover:not(:disabled){border-color:#0006;background:#f0f0f0}.component-list-modal .connectors-add-btn:disabled{opacity:.6;cursor:not-allowed}.component-list-modal .connectors-form{padding:12px;background:#f9f9f9;border-radius:8px;margin-bottom:12px}.component-list-modal .connectors-form-title{font-size:.85rem;font-weight:600;margin:0 0 10px;color:#333}.component-list-modal .connectors-form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px 16px;margin-bottom:12px}.component-list-modal .connectors-form-row{display:flex;flex-direction:column;gap:4px}.component-list-modal .connectors-form-row label{font-size:.8em;font-weight:500;color:#555}.component-list-modal .connectors-form-row select{padding:6px 8px;border:1px solid rgba(0,0,0,.2);border-radius:4px;font-size:.9em;background:#fff}.component-list-modal .connectors-form-section-title{font-size:.8em;font-weight:600;color:#555;margin:8px 0 6px}.component-list-modal .connector-visual-picker{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.component-list-modal .connector-visual-option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 8px;border:2px solid rgba(0,0,0,.15);border-radius:6px;background:#fff;cursor:pointer;transition:border-color .15s,background .15s}.component-list-modal .connector-visual-option:hover{border-color:#00000040}.component-list-modal .connector-visual-option.selected{border-color:#0a84ff;background:#0a84ff14}.component-list-modal .connector-visual-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center}.component-list-modal .connector-visual-icon img{width:24px;height:24px;object-fit:contain}.component-list-modal .connector-visual-label{font-size:.7em;color:#555;text-align:center;max-width:70px}.component-list-modal .connectors-form-actions{display:flex;gap:8px;margin-top:12px}.component-list-modal .connectors-btn-primary{background:#0a84ff;color:#fff;border-color:#0a84ff}.component-list-modal .connectors-btn-primary:hover:not(:disabled){background:#06c;border-color:#06c}.component-list-modal .connectors-btn-primary:disabled{opacity:.5;cursor:not-allowed}.component-list-modal .connectors-btn-secondary{background:#fff}.component-list-modal .cables-section{margin-top:16px}.component-list-modal .cable-color-swatch{display:inline-block;width:16px;height:16px;border-radius:3px;border:1px solid rgba(0,0,0,.2);vertical-align:middle;margin-right:6px}.component-list-modal .cable-color-hex{font-size:.85em;color:#555}.side-controls.floating-controls{position:fixed;z-index:10100}.side-controls{--side-control-size: 44px;--side-control-gap: 8px;bottom:24px;right:24px;display:flex;flex-direction:column;align-items:flex-end;gap:var(--side-control-gap)}.view-tools-group,.mini3d-tools-group,.measurement-tools-group{display:flex;flex-direction:row-reverse;align-items:center;gap:var(--side-control-gap)}.view-tools-secondary,.mini3d-tools-secondary,.measurement-tools-secondary{display:flex;flex-direction:row;align-items:center;gap:var(--side-control-gap);max-width:0;overflow:hidden;opacity:0;transition:max-width .25s ease-out,opacity .15s ease-out}.view-tools-group.expanded .view-tools-secondary{max-width:calc(var(--side-control-size) * 4 + var(--side-control-gap) * 3);overflow:visible;opacity:1;transition:max-width .35s ease-out,opacity .15s ease-in}.mini3d-tools-group.expanded .mini3d-tools-secondary{max-width:calc(var(--side-control-size) * 5 + var(--side-control-gap) * 4);overflow:visible;opacity:1;transition:max-width .35s ease-out,opacity .15s ease-in}.side-control.mini3d-high-resource-toggle{position:relative}.side-control.mini3d-high-resource-toggle:after{content:"HQ";position:absolute;right:2px;bottom:2px;padding:1px 2px;border-radius:4px;background:#0c1018d1;color:#fff;font-size:.42em;font-weight:700;letter-spacing:.03em;line-height:1;pointer-events:none}.side-control.mini3d-high-resource-toggle.mode-lq:after{content:"LQ";background:#0c1018bd;color:#ffd48f}.measurement-tools-group.expanded .measurement-tools-secondary{max-width:calc(var(--side-control-size) * 2 + var(--side-control-gap));overflow:visible;opacity:1;transition:max-width .35s ease-out,opacity .15s ease-in}.side-control.view-group-toggle,.side-control.measurement-group-toggle{transition:color .15s ease}.side-control.view-group-toggle.open,.side-control.measurement-group-toggle.open{color:#999}.side-control.view-group-toggle.open:hover,.side-control.measurement-group-toggle.open:hover{color:#777}.side-control.view-group-toggle.open.active,.side-control.measurement-group-toggle.open.active{color:#668}@media (max-width: 1024px){.side-controls{--side-control-size: 40px;--side-control-gap: 6px;bottom:12px;right:12px}}@media (max-width: 768px){.side-controls{--side-control-size: 34px;--side-control-gap: 4px}}.info-row{display:flex;justify-content:space-between;gap:12px;font-size:.75rem;margin-bottom:4px}.info-label{color:#666;font-weight:500}.info-value{color:#111;font-weight:600;font-variant-numeric:tabular-nums}.selection-info-popup{position:fixed;top:24px;right:24px;z-index:1000;background:#ffffffe6;padding:12px 16px;border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:180px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid rgba(0,0,0,.05);animation:info-popup-in .2s ease-out}.selection-info-popup .info-title{font-size:.85rem;font-weight:700;color:#333;margin-bottom:8px;border-bottom:1px solid rgba(0,0,0,.1);padding-bottom:4px}@keyframes info-popup-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.bottom-control{width:var(--bottom-control-size, 30px);height:var(--bottom-control-size, 30px);border:none;border-radius:50%;background:transparent;font-size:calc(var(--bottom-control-size, 30px) * .62);color:#333;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .1s,opacity .15s}.bottom-control:hover:not(:disabled){background:#0000000f}.bottom-control:active:not(:disabled){transform:scale(.92)}.bottom-control:disabled{opacity:.3;cursor:default}.bottom-controls.floating-controls{position:fixed;z-index:10200}.bottom-controls{--bottom-control-size: 30px;--bottom-controls-gap: 6px;--bottom-controls-padding: 4px;bottom:24px;left:50%;transform:translate(-50%);display:flex;gap:var(--bottom-controls-gap);padding:var(--bottom-controls-padding);background:#ffffffe6;border-radius:24px;box-shadow:0 2px 8px #0003}@media (max-width: 1024px){.bottom-controls{--bottom-control-size: 28px;--bottom-controls-gap: 4px;--bottom-controls-padding: 2px;bottom:12px}}@media (max-width: 768px){.bottom-controls{--bottom-control-size: 24px}}.mini3d-overlay{position:fixed;top:auto;right:auto;left:24px;width:clamp(180px,50vw,420px);height:clamp(140px,50vh,320px);top:calc(100vh - 24px - clamp(140px,50vh,320px));z-index:500;cursor:default;touch-action:none;opacity:0;background:#131a24;border-radius:6px;overflow:hidden;transform:translate(var(--mini3d-drag-x, 0px),var(--mini3d-drag-y, 0px));transform-origin:left bottom;transition:opacity var(--mini3d-open-fade-ms, .5s) ease,background .36s ease,width .36s ease,height .36s ease,left .36s ease,top .36s ease;will-change:opacity,transform}.mini3d-titlebar{position:absolute;top:0;left:0;right:0;height:24px;border-radius:0;background:#00000080;cursor:move;display:flex;justify-content:flex-end;align-items:center;gap:3px;padding-right:8px;z-index:2;touch-action:none}.mini3d-titlebar-actions{display:flex;align-items:center;gap:3px}.mini3d-titlebar-btn{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:#ffffff38;color:#ffffffeb;font-size:11px;line-height:1;padding:0;cursor:pointer}.mini3d-titlebar-btn:hover{background:#ffffff61}.mini3d-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:499;background:#000000b0;opacity:0;transition:opacity var(--mini3d-open-fade-ms, .5s) ease,background .36s ease;pointer-events:none}.mini3d-overlay.mini3d-overlay--opening,.mini3d-overlay.mini3d-overlay--open{opacity:var(--mini3d-overlay-opacity, .85)}.mini3d-backdrop.mini3d-backdrop--fullscreen.mini3d-backdrop--opening,.mini3d-backdrop.mini3d-backdrop--fullscreen.mini3d-backdrop--open{opacity:1}.mini3d-overlay.mini3d-overlay--closing,.mini3d-backdrop.mini3d-backdrop--fullscreen.mini3d-backdrop--closing{opacity:0;transition-duration:var(--mini3d-close-fade-ms, .6s);transition-timing-function:linear}.mini3d-instruction{position:absolute;left:8px;right:8px;bottom:8px;padding:6px 8px;font-size:12px;line-height:1.3;text-align:center;color:#f5f5f5;background:#00000073;border-radius:6px;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.35);z-index:1}.mini3d-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px;background:#080a0ee0;color:#f5f5f5;z-index:1}.mini3d-fallback__text{max-width:280px;text-align:center;font-size:13px;line-height:1.35}.mini3d-fallback__retry{border:1px solid rgba(255,255,255,.3);background:#ffffff1a;color:#fff;border-radius:8px;padding:6px 12px;font-size:12px;line-height:1;cursor:pointer}.mini3d-fallback__retry:active{transform:translateY(1px)}@media (max-width: 768px){.mini3d-overlay{left:12px;width:clamp(160px,35vw,320px);height:clamp(120px,35vh,260px);top:calc(100vh - 12px - clamp(120px,35vh,260px))}.mini3d-instruction{left:6px;right:6px;bottom:6px;font-size:11px}}.mini3d-overlay.mini3d-overlay--fullscreen{top:0;left:0;width:100vw;height:100vh;background:#131a24;border-radius:0;transform:none;cursor:zoom-out}.overlay-message{position:fixed;top:8px;left:50%;transform:translate(-50%);z-index:100;margin:0;padding:4px 12px;font-size:.7rem;color:#ffffffb3;background:#00000059;border-radius:6px;pointer-events:none;white-space:nowrap;max-width:calc(100vw - 24px);overflow:hidden;text-overflow:ellipsis}.confirmation-dialog{border:none;border-radius:12px;padding:0;background:#fff;box-shadow:0 8px 32px #00000040;min-width:320px;max-width:min(400px,100vw - 48px);position:fixed;top:50%;left:50%;translate:-50% -50%;margin:0}.confirmation-dialog::backdrop{background:#00000059;animation:confirmation-fade-in .15s ease-out}@keyframes confirmation-fade-in{0%{opacity:0}to{opacity:1}}.confirmation-dialog[open]{animation:confirmation-scale-in .2s ease-out}@keyframes confirmation-scale-in{0%{opacity:0;scale:.98}to{opacity:1;scale:1}}.confirmation-content{padding:20px 24px}.confirmation-title{font-size:.95rem;font-weight:700;color:#222;margin:0 0 10px}.confirmation-message{font-size:.85rem;color:#444;line-height:1.45;margin:0 0 20px}.confirmation-actions{display:flex;gap:10px;justify-content:flex-end}.confirmation-btn{padding:8px 16px;border-radius:8px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s;border:none}.confirmation-cancel{background:#0000000f;color:#444}.confirmation-cancel:hover{background:#0000001a;color:#222}.confirmation-confirm{background:#0a84ff;color:#fff}.confirmation-confirm:hover{background:#0070e0}.confirmation-confirm.confirmation-danger{background:#d32f2f}.confirmation-confirm.confirmation-danger:hover{background:#b71c1c}.modal-dialog.settings-modal{padding:24px;box-sizing:border-box}.modal-dialog.settings-modal .modal-content{font-size:.72rem;min-width:min(520px,100vw - 48px);max-width:min(720px,100vw - 48px);width:100%;max-height:calc(100vh - 48px);box-shadow:0 8px 32px #00000040;animation:settings-modal-scale-in .2s ease-out}.modal-dialog.settings-modal .settings-param{margin-bottom:16px}.modal-dialog.settings-modal .settings-param:last-child{margin-bottom:0}.modal-dialog.settings-modal .settings-param-label{display:block;font-size:.85em;font-weight:600;color:#333;margin-bottom:6px}.modal-dialog.settings-modal .settings-param-select{display:block;width:100%;max-width:220px;padding:8px 10px;font-size:.95em;font-family:inherit;color:#333;background:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;cursor:pointer;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;transition:border-color .15s,box-shadow .15s}.modal-dialog.settings-modal .settings-param-select:hover{border-color:#00000059}.modal-dialog.settings-modal .settings-param-select:focus{outline:none;border-color:#0a84ff;box-shadow:0 0 0 2px #0a84ff40}.modal-dialog.settings-modal .settings-param-desc{margin:6px 0 0;font-size:.9em;color:#666;line-height:1.4}.modal-dialog.settings-modal .settings-bg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px}.modal-dialog.settings-modal .settings-bg-option{display:flex;flex-direction:column;align-items:stretch;padding:4px;border:1px solid rgba(0,0,0,.2);border-radius:7px;background:#fff;color:#333;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .1s}.modal-dialog.settings-modal .settings-bg-option:hover{border-color:#00000059}.modal-dialog.settings-modal .settings-bg-option:focus-visible{outline:none;border-color:#0a84ff;box-shadow:0 0 0 2px #0a84ff40}.modal-dialog.settings-modal .settings-bg-option:active{transform:translateY(1px)}.modal-dialog.settings-modal .settings-bg-option.is-active{border-color:#0a84ff;box-shadow:0 0 0 1px #0a84ff}.modal-dialog.settings-modal .settings-bg-preview{display:block;width:100%;aspect-ratio:1/1;border-radius:5px;border:1px solid rgba(0,0,0,.2);background-position:center}.modal-dialog.settings-modal .settings-bg-name{margin-top:4px;font-size:.78em;text-align:left;line-height:1.15}@keyframes settings-modal-scale-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.app-content{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.catalog-panel{position:fixed;top:24px;left:24px;z-index:600;width:240px;min-width:240px;display:flex;flex-direction:column;background:#ffffffe6;border-radius:8px;box-shadow:0 2px 8px #0003;overflow:hidden;transition:transform .25s ease-out,opacity .25s ease-out,width .15s ease-out,max-width .15s ease-out}body.catalog-dragging .catalog-panel{transform:translate(calc(-100% - 24px));opacity:.3;transition:transform .15s ease-in,opacity .15s ease-in}@media (max-width: 767px){body.catalog-dragging .catalog-panel{transform:translateY(calc(-100% - 24px))}}@media (min-width: 1024px){.catalog-panel{width:280px;min-width:280px}}@media (min-width: 1440px){.catalog-panel{width:320px}}@media (min-width: 1920px){.catalog-panel{width:400px;min-width:400px}}.catalog-panel-head{flex:0 0 auto;padding:6px 10px;display:flex;align-items:center;justify-content:flex-start;gap:8px;border-bottom:1px solid rgba(0,0,0,.06)}.catalog-panel-head .board-menu{flex:1;min-width:0;padding:0;background:transparent;box-shadow:none;border-radius:0}.panel-expand-btn{flex-shrink:0;margin-left:auto;padding:6px 10px;color:#444;background:#0000000a;border:1px solid rgba(0,0,0,.15);border-radius:4px;cursor:pointer;transition:background .15s ease,color .15s ease;font-size:1rem;min-width:36px;min-height:32px;display:flex;align-items:center;justify-content:center}.panel-expand-btn svg{display:block;width:.9em;height:.9em}.panel-expand-btn:hover{background:#0000000d;color:#333}.catalog-panel.panel-expanded{width:calc(100vw - 48px);max-width:800px}@media (max-width: 480px){.panel-expand-btn{display:none}}.catalog-panel-toggle{padding:4px 8px;border:none;border-radius:4px;background:transparent;font-size:.75rem;font-weight:600;color:#333;cursor:pointer;transition:background .15s ease}.catalog-panel-toggle:hover{background:#0000000f}.catalog-panel-toggle-icon{display:block}.catalog-panel-body{max-height:75vh;overflow-y:auto;overflow-x:hidden;transition:max-height .35s ease-out}.catalog-panel-body.minimized{max-height:0;pointer-events:none}.catalog-panel-body .floating-dropdowns{position:relative;top:0;left:0;width:100%;border-radius:0;box-shadow:none;overflow:visible;max-height:none}@media (max-width: 768px){.catalog-panel-toggle{font-size:.975rem}}@media (max-width: 768px) and (orientation: portrait){.catalog-panel{left:12px;right:12px;width:auto;max-width:min(300px,100vw - 24px)}}@media (max-width: 767px) and (orientation: landscape){.catalog-panel{max-height:85vh}.catalog-panel-body{max-height:50vh;overflow-y:auto}}.copyright{position:fixed;bottom:8px;left:12px;z-index:100;font-size:.9rem;color:#fff9;font-weight:500}.copyright a{color:#ffffffbf;text-decoration:none}.copyright a:hover{text-decoration:underline}:root{font-family:Open Sans,system-ui,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;text-size-adjust:100%}*{margin:0;padding:0;box-sizing:border-box}button,input,select,textarea{font-family:inherit}html{height:100%;overflow:hidden}body,#root{height:100%;overflow:hidden;position:relative}.app-content{touch-action:pan-x pan-y}
