.sodo-editor-wrapper{background:#fff;border:1px solid #dee2e6;border-radius:8px;overflow:hidden}.sodo-toolbar{background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:8px 8px 0 0;flex-wrap:wrap;gap:6px;padding:8px 12px;display:flex}.sodo-toolbar-label{font-size:var(--app-fs-body);line-height:32px}.sodo-toolbar-btn{font-size:var(--app-fs-2xs);border-radius:6px;align-items:center;gap:4px;padding:3px 10px;font-weight:600;display:flex}.sodo-canvas-controls{font-size:var(--app-fs-2xs);background:#f1f3f5;border-bottom:1px solid #dee2e6}.sodo-canvas-controls input[type=number]{width:80px}.sodo-canvas-area{background:#e9ecef;flex:1;padding:16px;overflow:auto}.sodo-canvas{background:#fff;border-radius:4px;margin:0 auto;position:relative;box-shadow:0 2px 12px #00000014}.sodo-canvas--editable{background-image:radial-gradient(circle,#ddd 1px,#0000 1px);background-size:20px 20px}.sodo-element{-webkit-user-select:none;user-select:none;font-size:var(--app-fs-2xs);white-space:nowrap;text-overflow:ellipsis;border-style:solid;border-width:2px;justify-content:center;align-items:center;gap:4px;font-weight:600;transition:box-shadow .15s;display:flex;position:absolute;overflow:hidden}.sodo-element--editable{cursor:grab}.sodo-element--selected{z-index:10;box-shadow:0 0 0 2px #0d6efd40,0 2px 8px #00000026}.sodo-element:not(.sodo-element--selected){box-shadow:0 1px 3px #0000001a}.sodo-element__icon{font-size:var(--app-fs-xs)}.sodo-element__text{text-overflow:ellipsis;overflow:hidden}.sodo-props-panel{background:#fafafa;border-left:1px solid #dee2e6;width:220px;overflow-y:auto}.sodo-props-header{font-size:var(--app-fs-body);background:#f1f3f5;border-bottom:1px solid #dee2e6}.sodo-props-body{font-size:var(--app-fs-body);padding:12px}.sodo-props-label,.sodo-props-rotation-value{font-size:var(--app-fs-2xs)}.sodo-props-empty{font-size:var(--app-fs-body)}.sodo-legend{font-size:var(--app-fs-2xs);background:#f8f9fa;border-top:1px solid #dee2e6}.sodo-legend__color{border-radius:3px;width:14px;height:14px;display:inline-block}.sodo-empty-placeholder{font-size:var(--app-fs-body);pointer-events:none}
