:root{--color-primary: #4a90d9;--color-primary-hover: #3a7bc8;--color-secondary: #6c757d;--color-secondary-hover: #5a6268;--color-bg: #f5f5f5;--color-white: #ffffff;--color-border: #ddd;--color-text: #333;--color-text-muted: #999;--color-error: #d32f2f;--color-success: #28a745;--radius: 6px;--transition: .2s}*{box-sizing:border-box}body{margin:0;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);min-height:100vh;color:var(--color-text)}.container{max-width:900px;margin:0 auto}.input-section{margin-bottom:20px}.textarea-wrapper{display:flex;gap:10px;align-items:flex-start}textarea{flex:1;min-height:150px;padding:12px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;border:1px solid var(--color-border);border-radius:var(--radius);resize:vertical;line-height:1.5}textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #4a90d933}.preview-wrapper{position:relative}.resize-handle{position:absolute;top:0;left:0;right:0;height:12px;cursor:ns-resize;z-index:20;background:transparent}.resize-handle:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:4px;background:var(--color-border);border-radius:2px;transition:background var(--transition),width var(--transition)}.resize-handle:hover:before,.resize-handle.active:before{background:var(--color-primary);width:60px}.preview-section{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);min-height:200px;padding:20px;display:flex;justify-content:center;align-items:center;position:relative;overflow:auto;transition:border-color var(--transition);margin-top:12px}.zoom-controls{position:absolute;top:20px;right:10px;display:flex;align-items:center;gap:4px;background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);padding:4px;box-shadow:0 2px 4px #0000001a;z-index:10}.zoom-level{font-size:12px;font-weight:500;color:var(--color-text);min-width:45px;text-align:center}.btn-zoom{padding:6px 8px;background:transparent;color:var(--color-text)}.btn-zoom:hover{background:var(--color-bg);color:var(--color-primary)}.btn-zoom:disabled{opacity:.3;cursor:not-allowed}.btn-zoom svg{width:16px;height:16px}.preview-section.error{border-color:var(--color-error)}.preview-section .diagram{background:var(--color-white);display:flex;justify-content:center;align-items:center;width:100%}.preview-section .diagram svg{max-width:100%;height:auto}.placeholder-text{color:var(--color-text-muted);text-align:center;-webkit-user-select:none;user-select:none}.error-panel{background:#fff3f3;border:1px solid var(--color-error);border-radius:var(--radius);padding:16px;margin-top:10px;display:none}.error-panel.visible{display:block}.error-title{display:flex;align-items:center;gap:8px;color:var(--color-error);font-weight:600;margin-bottom:12px}.error-title svg{width:20px;height:20px}.error-content{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.6;color:var(--color-text);white-space:pre-wrap;word-break:break-word}.error-location{color:var(--color-secondary);margin-top:8px;font-size:12px}.btn{padding:10px 20px;font-size:14px;border:none;border-radius:var(--radius);cursor:pointer;transition:background var(--transition),opacity var(--transition);display:inline-flex;align-items:center;gap:6px}.btn-primary{background:var(--color-primary);color:var(--color-white)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-secondary);color:var(--color-white)}.btn-secondary:hover{background:var(--color-secondary-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:16px;height:16px}.actions{display:flex;justify-content:flex-end;margin-top:10px;gap:10px}.status-bar{font-size:12px;color:var(--color-text-muted);text-align:right;margin-top:10px;display:flex;justify-content:flex-end;align-items:center;gap:8px}.status-bar.success{color:var(--color-success)}.status-bar.error{color:var(--color-error)}.status-bar svg{width:14px;height:14px}.toast{position:fixed;bottom:20px;right:20px;background:var(--color-text);color:var(--color-white);padding:12px 20px;border-radius:var(--radius);font-size:14px;opacity:0;transform:translateY(10px);transition:opacity var(--transition),transform var(--transition);z-index:1000}.toast.visible{opacity:1;transform:translateY(0)}.toast.success{background:var(--color-success)}.toast.error{background:var(--color-error)}
