div.mxRubberband{position:absolute;overflow:hidden;border-style:solid;border-width:1px;border-color:#00f;background:#07f}.mxCellEditor{background:url(data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7);_background:url(data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7);border-color:transparent;border-style:solid;display:inline-block;position:absolute;overflow:visible;word-wrap:normal;border-width:0;min-width:1px;resize:none;padding:0;margin:0}.mxPlainTextEditor *{padding:0;margin:0}div.mxWindow{-webkit-box-shadow:3px 3px 12px #C0C0C0;-moz-box-shadow:3px 3px 12px #C0C0C0;box-shadow:3px 3px 12px silver;background:url(data:image/gif;base64,R0lGODlhGgAUAIAAAOzs7PDw8CH5BAAAAAAALAAAAAAaABQAAAIijI+py70Ao5y02lud3lzhD4ZUR5aPiKajyZbqq7YyB9dhAQA7);_background:url(data:image/gif;base64,R0lGODlhGgAUAIAAAOzs7PDw8CH5BAAAAAAALAAAAAAaABQAAAIijI+py70Ao5y02lud3lzhD4ZUR5aPiKajyZbqq7YyB9dhAQA7);border:1px solid #c3c3c3;position:absolute;overflow:hidden;z-index:1}table.mxWindow{border-collapse:collapse;table-layout:fixed;font-family:Arial;font-size:8pt}td.mxWindowTitle{background:url(data:image/gif;base64,R0lGODlhFwAXAMQAANfX18rKyuHh4c7OzsDAwMHBwc/Pz+Li4uTk5NHR0dvb2+jo6O/v79/f3/n5+dnZ2dbW1uPj44yMjNPT0+Dg4N3d3ebm5szMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAXABcAAAWQICESxWiW5Ck6bOu+MMvMdG3f86LvfO/rlqBwSCwaj8ikUohoOp/QaDNCrVqvWKpgezhsv+AwmEIum89ocmPNbrvf64p8Tq/b5Yq8fs/v5x+AgYKDhIAAh4iJiouHEI6PkJGSjhOVlpeYmZUJnJ2en6CcBqMDpaanqKgXq6ytrq+rAbKztLW2shK5uru8vbkhADs=) repeat-x;_background:url(data:image/gif;base64,R0lGODlhFwAXAMQAANfX18rKyuHh4c7OzsDAwMHBwc/Pz+Li4uTk5NHR0dvb2+jo6O/v79/f3/n5+dnZ2dbW1uPj44yMjNPT0+Dg4N3d3ebm5szMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAXABcAAAWQICESxWiW5Ck6bOu+MMvMdG3f86LvfO/rlqBwSCwaj8ikUohoOp/QaDNCrVqvWKpgezhsv+AwmEIum89ocmPNbrvf64p8Tq/b5Yq8fs/v5x+AgYKDhIAAh4iJiouHEI6PkJGSjhOVlpeYmZUJnJ2en6CcBqMDpaanqKgXq6ytrq+rAbKztLW2shK5uru8vbkhADs=) repeat-x;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-weight:700;overflow:hidden;height:13px;padding:4px 2px 6px;color:#000}td.mxWindowPane{vertical-align:top;padding:0}div.mxWindowPane{overflow:hidden;position:relative}td.mxWindowPane td{font-family:Arial;font-size:8pt}td.mxWindowPane input,td.mxWindowPane select,td.mxWindowPane textarea,td.mxWindowPane radio{border-color:#8c8c8c;border-style:solid;border-width:1px;font-family:Arial;font-size:8pt;padding:1px}td.mxWindowPane button{background:url(data:image/gif;base64,R0lGODlhCgATALMAAP7+/t7e3vj4+Ojo6OXl5e/v7/n5+fb29vPz8/39/e3t7fHx8e7u7v///wAAAAAAACH5BAAAAAAALAAAAAAKABMAAAQ2MMlJhb0Y6c2X/2AhjiRjnqiirizqMkEsz0Rt30Ou7y8K/ouDcEg0GI9IgHLJbDif0Kh06owAADs=) repeat-x;_background:url(data:image/gif;base64,R0lGODlhCgATALMAAP7+/t7e3vj4+Ojo6OXl5e/v7/n5+fb29vPz8/39/e3t7fHx8e7u7v///wAAAAAAACH5BAAAAAAALAAAAAAKABMAAAQ2MMlJhb0Y6c2X/2AhjiRjnqiirizqMkEsz0Rt30Ou7y8K/ouDcEg0GI9IgHLJbDif0Kh06owAADs=) repeat-x;font-family:Arial;font-size:8pt;padding:2px;float:left}img.mxToolbarItem{margin-right:6px;margin-bottom:6px;border-width:1px}select.mxToolbarCombo{vertical-align:top;border-style:inset;border-width:2px}div.mxToolbarComboContainer{padding:2px}img.mxToolbarMode{margin:2px 4px 4px 2px;border-width:0px}img.mxToolbarModeSelected{margin:0 2px 2px 0;border-width:2px;border-style:inset}div.mxTooltip{-webkit-box-shadow:3px 3px 12px #C0C0C0;-moz-box-shadow:3px 3px 12px #C0C0C0;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}div.mxPopupMenu{-webkit-box-shadow:3px 3px 12px #C0C0C0;-moz-box-shadow:3px 3px 12px #C0C0C0;box-shadow:3px 3px 12px silver;background:url(data:image/gif;base64,R0lGODlhGgAUAIAAAOzs7PDw8CH5BAAAAAAALAAAAAAaABQAAAIijI+py70Ao5y02lud3lzhD4ZUR5aPiKajyZbqq7YyB9dhAQA7);_background:url(data:image/gif;base64,R0lGODlhGgAUAIAAAOzs7PDw8CH5BAAAAAAALAAAAAAaABQAAAIijI+py70Ao5y02lud3lzhD4ZUR5aPiKajyZbqq7YyB9dhAQA7);position:absolute;border-style:solid;border-width:1px;border-color:#000}table.mxPopupMenu{border-collapse:collapse;margin-top:1px;margin-bottom:1px}tr.mxPopupMenuItem{color:#000;cursor:pointer}tr.mxPopupMenuItemHover{background-color:#006;color:#fff;cursor:pointer}td.mxPopupMenuItem{padding:2px 30px 2px 10px;white-space:nowrap;font-family:Arial;font-size:8pt}td.mxPopupMenuIcon{background-color:#d0d0d0;padding:2px 4px}.mxDisabled{opacity:.2!important;cursor:default!important}:root{--primary: #0066cc;--primary-light: #61a8ff;--primary-dark: #0047a3;--success: #4caf50;--success-light: #81c784;--success-dark: #2e7d32;--warning: #ff9800;--warning-light: #ffb74d;--warning-dark: #e65100;--error: #f44336;--error-light: #ef5350;--error-dark: #c62828;--info: #2196f3;--info-light: #64b5f6;--info-dark: #1565c0;--background: #ffffff;--surface: #f5f5f5;--surface-light: #fafafa;--text: #333333;--text-secondary: #666666;--text-light: #999999;--border: #e0e0e0;--divider: #d0d0d0;--disabled: #cccccc;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-xxl: 32px;--radius-sm: 3px;--radius-md: 4px;--radius-lg: 8px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-md: 13px;--font-size-lg: 14px;--font-size-xl: 16px;--font-size-2xl: 18px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-bold: 600;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 2px 8px rgba(0, 0, 0, .15);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .15);--shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--transition-fast: .2s;--transition-normal: .3s;--transition-slow: .5s;--height-topbar: 52px;--height-toolbar: 40px;--height-statusbar: 28px;--height-panel-header: 36px;--width-left-panel: 240px;--width-right-panel: 280px}@media(prefers-color-scheme:dark){:root{--background: #1e1e1e;--surface: #2d2d30;--surface-light: #252526;--text: #e0e0e0;--text-secondary: #a0a0a0;--text-light: #666666;--border: #404040;--divider: #404040;--disabled: #555555;--primary-light: #61a8ff;--success-light: #81c784;--warning-light: #ffb74d;--error-light: #ef5350;--info-light: #64b5f6}}.btn{padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);font-weight:var(--font-weight-medium)}.btn:hover{background:var(--surface-light);border-color:var(--divider)}.btn:active{background:var(--divider)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.btn-success{background:var(--success);color:#fff;border-color:var(--success)}.btn-danger{background:var(--error);color:#fff;border-color:var(--error)}.btn-sm{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs)}.input,.select,.textarea{padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-family);font-size:var(--font-size-sm);background:var(--background);color:var(--text);transition:border-color var(--transition-fast);box-sizing:border-box;width:100%}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #0066cc1a}.textarea{resize:vertical;min-height:60px}.label{display:block;margin-bottom:var(--space-xs);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);color:var(--text)}.label-sm{font-size:var(--font-size-xs);color:var(--text-secondary)}.checkbox{cursor:pointer;accent-color:var(--primary)}.checkbox-label{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;font-size:var(--font-size-sm)}.panel{display:flex;flex-direction:column;background:var(--background);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.panel-header{padding:var(--space-md);background:var(--surface);border-bottom:1px solid var(--border);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);color:var(--text)}.panel-content{flex:1;overflow-y:auto;padding:var(--space-md)}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--surface)}.tab{flex:1;padding:var(--space-md);background:var(--surface);border:none;border-bottom:2px solid var(--border);cursor:pointer;font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:var(--font-weight-medium);transition:all var(--transition-fast)}.tab:hover{background:var(--surface-light);color:var(--text)}.tab.active{background:var(--background);border-bottom-color:var(--primary);color:var(--primary)}.divider{height:1px;background:var(--border);margin:var(--space-md) 0}.divider-vertical{width:1px;height:24px;background:var(--divider);margin:0 var(--space-sm)}.m-0{margin:0}.m-xs{margin:var(--space-xs)}.m-sm{margin:var(--space-sm)}.m-md{margin:var(--space-md)}.m-lg{margin:var(--space-lg)}.mb-xs{margin-bottom:var(--space-xs)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.p-0{padding:0}.p-xs{padding:var(--space-xs)}.p-sm{padding:var(--space-sm)}.p-md{padding:var(--space-md)}.p-lg{padding:var(--space-lg)}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.flex{display:flex}.flex-col{flex-direction:column}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-1{flex:1}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-md{font-size:var(--font-size-md)}.text-bold{font-weight:var(--font-weight-bold)}.text-secondary{color:var(--text-secondary)}.text-light{color:var(--text-light)}.text-primary{color:var(--primary)}.text-error{color:var(--error)}.text-success{color:var(--success)}.hidden{display:none}.invisible{visibility:hidden}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-y-auto{overflow-y:auto}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;font-family:var(--font-family);background:var(--background);color:var(--text);overflow:hidden}#app-container{width:100%;height:100vh;display:flex;flex-direction:column}.top-bar{height:52px;background:#fff;border-bottom:1px solid #e0e0e0;display:flex;align-items:center;padding:0 12px;gap:24px;flex-shrink:0}.top-bar-left{display:flex;align-items:center;gap:8px;min-width:0}.logo{font-size:24px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#f0f0f0;border-radius:4px}.document-title{font-size:16px;font-weight:500;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-bar{display:flex;align-items:center;gap:0;flex:1}.menu-item-container{position:relative;display:inline-block}.menu-item{padding:0 12px;height:32px;background:transparent;border:none;cursor:pointer;font-size:13px;color:#333;transition:background .2s;display:block;width:100%}.menu-item:hover{background:#f0f0f0}.menu-item:active{background:#e0e0e0}.menu-dropdown{position:absolute;top:100%;left:0;background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 8px #00000026;min-width:180px;z-index:1000;margin-top:2px}.menu-dropdown-item{padding:8px 12px;cursor:pointer;font-size:13px;color:#333;transition:background .2s;white-space:nowrap}.menu-dropdown-item:hover{background:#f5f5f5}.menu-dropdown-item:active{background:#e0e0e0}.top-bar-right{display:flex;align-items:center;gap:12px;white-space:nowrap}.save-status{font-size:12px;color:#d32f2f;cursor:pointer;padding:4px 8px;border-radius:3px;transition:background .2s}.share-btn{padding:6px 16px;background:#1976d2;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500;transition:background .2s}.share-btn:hover{background:#1565c0}.toolbar{height:40px;background:#fafafa;border-bottom:1px solid #e0e0e0;display:flex;align-items:center;padding:0 8px;gap:0;flex-shrink:0;overflow-x:auto}.toolbar-section{display:flex;align-items:center;gap:4px;padding:0 8px;height:100%}.toolbar-section:not(:last-child){border-right:1px solid #d8d8d8;padding-right:12px;margin-right:8px}.toolbar-separator{width:1px;height:24px;background:#d8d8d8;margin:0 4px}.zoom-control{display:flex;align-items:center;gap:4px}.zoom-select{padding:4px 8px;border:1px solid #ccc;border-radius:3px;font-size:12px;background:#fff;cursor:pointer;min-width:60px}.toolbar-label{font-size:10px;font-weight:700;color:#888;text-transform:uppercase;letter-spacing:.4px;margin-right:4px}.toolbar-btn{padding:6px 10px;background:transparent;border:none;border-radius:3px;cursor:pointer;font-size:14px;color:#333;transition:all .2s;white-space:nowrap;height:28px;display:flex;align-items:center;justify-content:center}.toolbar-btn:hover{background:#e0e0e0}.toolbar-btn:active{background:#bfbfbf}.workspace{flex:1;display:flex;gap:0;overflow:hidden}.left-panel{width:240px;background:#fff;border-right:1px solid #e0e0e0;flex-shrink:0;display:flex;flex-direction:column}.right-panel{width:280px;background:#fff;border-left:1px solid #e0e0e0;flex-shrink:0;display:flex;flex-direction:column}.panel-header{height:36px;padding:0 12px;background:#f9f9f9;border-bottom:1px solid #e0e0e0;display:flex;align-items:center;font-weight:600;font-size:13px;color:#333;flex-shrink:0}.panel-content{flex:1;overflow-y:auto;padding:8px}.canvas-container{flex:1;background:#fff;position:relative;overflow:auto;border:1px solid #e0e0e0;cursor:crosshair}.canvas-container.drag-over{background:#f0f8ff}.status-bar{height:28px;background:#f5f5f5;border-top:1px solid #e0e0e0;padding:0 12px;display:flex;align-items:center;font-size:11px;color:#666;flex-shrink:0;gap:12px;overflow-x:auto}.status-message{flex:1;padding:4px 8px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:2px;transition:all .2s}.status-message.active{color:#06c;font-weight:500}.status-items{display:flex;gap:16px;margin-left:auto;padding-left:12px;border-left:1px solid #d0d0d0}.status-item{display:flex;align-items:center;gap:4px;white-space:nowrap;padding-right:12px;border-right:1px solid #d0d0d0}.status-item:last-child{border-right:none;padding-right:0}.status-label{font-weight:600;color:#333}.status-value{color:#06c;font-family:Monaco,Courier New,monospace}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:silver;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a0a0a0}.shapes-group-title{font-size:11px;font-weight:600;color:#666;padding:8px 8px 4px;text-transform:uppercase;letter-spacing:.5px}.shapes-group-icons{display:flex;flex-wrap:wrap;gap:4px;padding:4px 8px 8px;align-items:center;justify-content:flex-start}.shape-icon-only{display:flex;align-items:center;justify-content:center;cursor:grab;padding:4px;-webkit-user-select:none;user-select:none;transition:opacity .2s;min-width:32px;min-height:32px}.shape-icon-only:hover{opacity:.7}.shape-icon-only:active{cursor:grabbing}.shape-icon-svg{width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.shape-icon-svg svg{width:100%;height:100%;color:#333;stroke:currentColor}.shape-icon-only:hover .shape-icon-svg svg{color:#06c;stroke:currentColor}.canvas-container.drag-over{background:linear-gradient(135deg,#f0f8ff,#e8f4ff);outline:2px dashed #0066cc;outline-offset:-2px;animation:dragOverPulse 1.5s ease-in-out infinite}@keyframes dragOverPulse{0%,to{box-shadow:inset 0 0 #06c3}50%{box-shadow:inset 0 0 0 3px #06c3}}.left-panel-tabbar{display:flex;gap:0;border-bottom:1px solid #e0e0e0;background:#f9f9f9;flex-shrink:0}.left-panel-tab-btn{flex:1;padding:8px;background:#f5f5f5;border:none;border-bottom:2px solid #e0e0e0;cursor:pointer;font-size:12px;color:#666;font-weight:500;transition:all .2s}.left-panel-tab-btn:hover{background:#efefef;color:#333}.left-panel-tab-btn.active{background:#fff;border-bottom:2px solid #0066cc;color:#06c}.stencil-header{font-size:11px;font-weight:600;color:#666;padding:8px 8px 4px;text-transform:uppercase;letter-spacing:.5px;border-top:1px solid #e0e0e0;margin-top:8px}.stencil-list{display:flex;flex-direction:column;gap:2px;padding:4px 8px 8px}.stencil-item{display:flex;align-items:center;gap:6px;padding:4px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s;font-size:12px;color:#333}.stencil-item:hover{background:#f0f0f0;border-radius:3px}.stencil-item input[type=checkbox]{cursor:pointer;accent-color:#0066cc}.stencil-label{flex:1}.shapes-group-header{display:flex;align-items:center;padding:6px 8px;cursor:grab;-webkit-user-select:none;user-select:none;transition:background .2s,opacity .2s;border-top:2px solid transparent}.shapes-group-header:hover{background:#f5f5f5}.shapes-group-header:active{cursor:grabbing}.shapes-group-header[draggable=true]:hover{background:#efefef}.shapes-group-header .shapes-group-title{display:flex;align-items:center;font-size:11px;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:.5px;width:100%}.shapes-group-toggle{display:inline-block;width:16px;text-align:center;font-size:10px}.mxCell[style*=selected]{outline:2px solid #0066cc!important}svg.mxGraph .mxSelectionHandle{fill:#06c!important;stroke:#fff!important;stroke-width:1!important}svg.mxGraph .mxHandle{fill:#06c!important;stroke:#fff!important;stroke-width:1!important}#tabs-container{display:flex;gap:4px;padding:8px;border-top:1px solid #e0e0e0;background:#fafafa;overflow-x:auto;flex-shrink:0}.tab-button{padding:6px 12px;background:#f0f0f0;border:1px solid #d0d0d0;border-radius:0 0 3px 3px;cursor:pointer;font-size:12px;color:#333;white-space:nowrap;transition:all .2s;display:flex;align-items:center;gap:8px}.tab-button:hover{background:#f5f5f5;border-color:#b0b0b0}.tab-button.active{background:#fff;border:1px solid #0066cc;border-top:1px solid #d0d0d0}.tab-label{margin-right:8px}.tab-close-btn{background:none;border:none;cursor:pointer;font-size:16px;color:#666;padding:0 4px;margin-left:4px;transition:color .2s}.tab-close-btn:hover{color:#333}.tab-new-btn{padding:6px 12px;background:#f0f0f0;border:1px solid #d0d0d0;border-radius:3px;cursor:pointer;font-size:14px;color:#666;transition:all .2s}.tab-new-btn:hover{background:#e8f4f9;border-color:#06c}.tab-new-btn:active{background:#d0e8f5}.shape-designer-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000;display:flex;align-items:center;justify-content:center}.shape-designer-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:-1}.shape-designer-panel{background:#fff;border-radius:0;box-shadow:none;width:100%;height:100%;max-width:100%;max-height:100%;display:flex;flex-direction:column;overflow:hidden}.designer-header{padding:16px;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;align-items:center}.designer-header h2{font-size:18px;font-weight:600;margin:0}.designer-close{background:none;border:none;font-size:28px;cursor:pointer;color:#666;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px}.designer-close:hover{background:#f0f0f0;color:#333}.templates-bar{padding:12px 16px;background:#f9f9f9;border-bottom:1px solid #e0e0e0;display:flex;align-items:center;gap:12px;overflow-x:auto}.templates-label{font-size:12px;font-weight:600;color:#666;white-space:nowrap;flex-shrink:0}.templates-grid{display:flex;gap:8px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}.template-btn{min-width:40px;height:40px;padding:0;border:1px solid #ddd;background:#fff;border-radius:4px;cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}.template-btn:hover{border-color:#1976d2;background:#e3f2fd;transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.template-btn:active{transform:translateY(0);background:#bbdefb}.designer-body{display:flex;gap:16px;padding:16px;overflow-y:auto;flex:1}.designer-left{flex:1.3;display:flex;flex-direction:column;gap:8px;min-width:380px}.mode-toggle{display:flex;gap:8px}.mode-btn{flex:1;padding:8px 12px;border:1px solid #ccc;background:#f5f5f5;cursor:pointer;border-radius:4px;font-size:13px;transition:all .2s}.mode-btn:hover{background:#eee}.mode-btn.active{background:#1976d2;color:#fff;border-color:#0d47a1}.draw-canvas-container{position:relative;background:#fff;border:1px solid #ddd;border-radius:4px;overflow:hidden}#shape-canvas{display:block;width:100%;cursor:crosshair;background:#fafafa}.canvas-help{position:absolute;bottom:8px;right:8px;font-size:12px;color:#999;background:#ffffffe6;padding:4px 8px;border-radius:3px}.canvas-controls{display:flex;gap:8px}.canvas-controls button{flex:1;padding:8px;border:1px solid #ccc;background:#f5f5f5;cursor:pointer;border-radius:4px;font-size:12px}.canvas-controls button:hover{background:#e0e0e0}.designer-right{flex:.9;display:flex;flex-direction:column;gap:12px;overflow-y:auto;min-width:300px}.shape-info,.path-editor,.shape-properties,.element-properties{display:flex;flex-direction:column;gap:6px}.shape-info label,.path-editor label,.shape-properties label{font-size:12px;font-weight:600;color:#333}#shape-name,#shape-desc,#shape-path{padding:8px;border:1px solid #ccc;border-radius:4px;font-family:monospace;font-size:12px}#shape-desc,#shape-path{resize:vertical;min-height:60px}.shape-properties{display:grid;grid-template-columns:1fr 1fr;gap:8px}.shape-properties label{grid-column:1 / -1}.element-properties{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.element-properties label{font-size:11px;font-weight:600;color:#333;margin-top:3px;grid-column:1 / -1}.element-properties #element-x{grid-column:1 / 2}.element-properties #element-y{grid-column:2 / 4}.element-properties #element-rotation,.element-properties #element-fill,.element-properties #element-stroke,.element-properties #element-stroke-width{grid-column:1 / -1}.shape-properties label strong,.element-properties label strong{font-size:13px;font-weight:700;color:#1976d2}.shape-properties input[type=color],.element-properties input[type=color]{width:40px;height:32px;border:1px solid #ccc;border-radius:4px;cursor:pointer}.shape-properties input[type=number],.element-properties input[type=number]{padding:8px;border:1px solid #ccc;border-radius:4px;font-size:12px;width:100%;box-sizing:border-box}.preview-container{display:flex;flex-direction:column;gap:6px}.preview-container label{font-size:12px;font-weight:600;color:#333}.preview-container label strong{color:#1976d2}.vertex-preview{border:2px solid #1976d2;border-radius:4px;background:#fff;padding:6px;display:flex;align-items:center;height:120px;justify-content:center;min-height:170px;box-shadow:inset 0 1px 3px #0000001a}#vertex-preview-canvas{display:block}.preview-info{padding:6px 8px;background:#f5f5f5;border-radius:2px;font-size:11px;color:#666;text-align:center;margin-top:4px}.vertex-code-section{display:flex;flex-direction:column;gap:4px}.vertex-code-section label{font-size:11px;font-weight:600;color:#333}.vertex-code-output{padding:6px;border:1px solid #ccc;border-radius:3px;font-family:Courier New,monospace;font-size:9px;resize:none;height:60px;background:#f9f9f9;color:#333;line-height:1.3;overflow:hidden}#copy-vertex-code{align-self:flex-start;padding:6px 12px;font-size:12px}.btn-small{padding:6px 12px;font-size:12px;background:#0284c7;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.btn-small:hover{background:#0369a1}.shape-palette{padding:12px;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px;margin-bottom:8px}.palette-label{font-size:12px;font-weight:600;color:#333;margin-bottom:8px;display:block}.palette-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.palette-shape{padding:8px;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:grab;font-size:20px;transition:all .2s}.palette-shape:hover{background:#f0f0f0;border-color:#999}.palette-shape:active{cursor:grabbing}#shape-canvas{cursor:crosshair;background:#fff;border:1px solid #ccc}#shape-canvas:hover{background:#fafafa}.designer-footer{padding:16px;border-top:1px solid #e0e0e0;background:#f5f5f5}.action-buttons{display:flex;gap:8px;justify-content:flex-end}.action-buttons button{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500}.btn-cancel{background:#f0f0f0;color:#333;border:1px solid #ccc}.btn-cancel:hover{background:#e0e0e0}.btn-delete{background:#f44336;color:#fff}.btn-delete:hover{background:#da190b}.btn-save{background:#4caf50;color:#fff}.btn-save:hover{background:#388e3c}.shape-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px;cursor:move;border-radius:4px;transition:all .2s}.shape-item:hover{background:#f0f0f0}.shape-item:active{background:#e0e0e0}.shape-preview{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #ddd;border-radius:3px;padding:2px}.shape-preview svg{width:100%;height:100%}.shape-label{font-size:11px;text-align:center;color:#333;max-width:50px;word-break:break-word;line-height:1.2}.shape-context-menu{animation:fadeIn .1s ease-out}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.shape-context-menu .menu-item:hover{background:#f5f5f5}.notification-container{position:fixed;bottom:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:8px;max-width:400px;pointer-events:none}.notification{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border-radius:4px;box-shadow:0 2px 12px #00000026;pointer-events:auto;animation:slideInRight .3s ease-out;border-left:4px solid;min-height:44px}@keyframes slideInRight{0%{transform:translate(400px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOutRight{0%{transform:translate(0);opacity:1}to{transform:translate(400px);opacity:0}}.notification:not(.show){animation:slideOutRight .3s ease-out}.notification-info{border-left-color:#06c;background:#e3f2fd}.notification-success{border-left-color:#4caf50;background:#e8f5e9}.notification-warning{border-left-color:#ff9800;background:#fff3e0}.notification-error{border-left-color:#f44336;background:#ffebee}.notification-content{flex:1;font-size:13px;color:#333;font-weight:500}.notification-info .notification-content{color:#06c}.notification-success .notification-content{color:#2e7d32}.notification-warning .notification-content{color:#e65100}.notification-error .notification-content{color:#c62828}.notification-action{padding:4px 12px;background:transparent;border:none;cursor:pointer;font-size:12px;font-weight:600;color:#06c;transition:opacity .2s;white-space:nowrap}.notification-action:hover{opacity:.7}.notification-close{background:none;border:none;cursor:pointer;font-size:16px;color:#999;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:2px;transition:all .2s;flex-shrink:0}.notification-close:hover{background:#0000001a;color:#333}.save-status{font-size:12px;color:#d32f2f;cursor:pointer;padding:4px 8px;border-radius:3px;transition:all .3s ease;display:flex;align-items:center;gap:6px}.save-status:hover{background:#ffebee}.save-status.saving{color:#ff9800;animation:pulse 1.5s infinite}.save-status.saved{color:#4caf50}.save-status.saved:after{content:"✓";font-weight:700}.save-status.error{color:#f44336;background:#ffebee}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.plantuml-panel-container{display:none!important;flex-direction:column;width:100%;height:100%;background:#f5f5f5;overflow:hidden;padding:0;margin:0}.plantuml-panel-container.visible{display:flex!important}.editor-header{padding:12px 16px;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;align-items:center;background:#fafafa;flex-shrink:0}.editor-header h3{font-size:14px;font-weight:600;margin:0}.close-btn{background:none;border:none;font-size:20px;cursor:pointer;color:#666;padding:0 8px}.close-btn:hover{color:#333}.editor-toolbar{display:flex;gap:8px;padding:8px;border-bottom:1px solid #e0e0e0;background:#fafafa;flex-wrap:wrap;flex-shrink:0;box-sizing:border-box}.editor-toolbar .btn{flex:1;min-width:80px;padding:6px 8px;font-size:12px}.error-display{padding:8px 12px;margin:8px;background:#ffebee;color:#c62828;border-radius:4px;border-left:3px solid #c62828;font-size:12px;display:none;flex-shrink:0;box-sizing:border-box}.editor-textarea{flex:1;min-height:0;padding:12px;border:none;font-family:Courier New,monospace;font-size:12px;resize:none;background:#fff;color:#333;overflow-y:auto;width:100%;box-sizing:border-box}#plantuml-input{flex:1;min-height:0}.editor-textarea:focus{outline:none;background:#fafafa}.diagram-preview{padding:12px;border-top:1px solid #e0e0e0;background:#f9f9f9;font-size:12px;color:#666;overflow-y:auto;height:50px;flex-shrink:0;box-sizing:border-box}@media(prefers-color-scheme:dark){#plantuml-panel{background:#252526}.editor-header{background:#2d2d30;border-bottom-color:#404040;color:#e0e0e0}.editor-toolbar{background:#2d2d30;border-bottom-color:#404040}.error-display{background:#5a1a1a;color:#f99;border-left-color:#f66}.editor-textarea{background:#1e1e1e;color:#e0e0e0;width:100%}.editor-textarea:focus{background:#2d2d30}.diagram-preview{background:#1e1e1e;border-top-color:#404040;color:#b0b0b0;height:60px}.close-btn{color:#b0b0b0}.close-btn:hover{color:#e0e0e0}}@media(prefers-color-scheme:dark){html,body,#app-container{background:#1e1e1e;color:#e0e0e0}.top-bar{background:#252526;border-bottom-color:#404040}.document-title,.menu-item{color:#e0e0e0}.menu-item:hover{background:#2d2d30}.menu-item:active{background:#404040}.menu-dropdown{background:#252526;border-color:#3e3e42}.menu-dropdown-item{color:#e0e0e0}.menu-dropdown-item:hover{background:#2d2d30}.toolbar{background:#2d2d30;border-bottom-color:#404040}.toolbar-btn{color:#e0e0e0}.toolbar-btn:hover{background:#404040}.toolbar-btn:active{background:#555}.left-panel,.right-panel{background:#252526;border-color:#404040}.panel-header{background:#2d2d30;border-bottom-color:#404040;color:#e0e0e0}.canvas-container{background:#1e1e1e;border-color:#404040}.canvas-container.drag-over{background:#2d3a54;outline-color:#06c}.status-bar{background:#2d2d30;border-top-color:#404040;color:#a0a0a0}.status-message{color:#a0a0a0}.status-message.active{color:#61a8ff}.status-items{border-left-color:#404040}.status-item{border-right-color:#404040}.status-value{color:#61a8ff}.zoom-select{background:#3e3e42;border-color:#555;color:#e0e0e0}.shape-icon-only:hover .shape-icon-svg svg{color:#61a8ff}.logo{background:#3e3e42}#tabs-container{background:#2d2d30;border-top-color:#404040}.tab-button{background:#3e3e42;border-color:#555;color:#e0e0e0}.tab-button:hover{background:#404040;border-color:#666}.tab-button.active{background:#1e1e1e;border-color:#06c}.notification{background:#252526;box-shadow:0 2px 12px #00000080}.notification-info{background:#1d3a5c;border-left-color:#61a8ff}.notification-info .notification-content{color:#61a8ff}.notification-success{background:#1b5e20;border-left-color:#81c784}.notification-success .notification-content{color:#81c784}.notification-warning{background:#4f2c1a;border-left-color:#ffb74d}.notification-warning .notification-content{color:#ffb74d}.notification-error{background:#5e1416;border-left-color:#ef5350}.notification-error .notification-content{color:#ef5350}.notification-close{color:#666}.notification-close:hover{background:#ffffff1a;color:#e0e0e0}}
