:root{--bg-primary: #2b2d44;--bg-secondary: #343654;--bg-tertiary: #3d3f60;--bg-card: #434568;--bg-input: #30324e;--border-color: #50527a;--border-active: #6c63ff;--text-primary: #f0f0f6;--text-secondary: #b8b8d4;--text-muted: #8e8eb4;--accent: #6c63ff;--accent-hover: #7b73ff;--accent-glow: rgba(108, 99, 255, .3);--success: #4ade80;--warning: #fbbf24;--error: #f87171;--gradient-start: #6c63ff;--gradient-end: #e040fb;--shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--shadow-glow: 0 0 20px rgba(108, 99, 255, .15);--radius: 12px;--radius-sm: 8px;--transition: .2s ease;--code-color: #c4b5fd;--preview-bg: #24263c}:root.light{--bg-primary: #f5f5fa;--bg-secondary: #ffffff;--bg-tertiary: #eef0f6;--bg-card: #f0f1f7;--bg-input: #fafafc;--border-color: #d8dbe5;--text-primary: #1a1a2e;--text-secondary: #555577;--text-muted: #8888a8;--accent-hover: #5b52ee;--accent-glow: rgba(108, 99, 255, .2);--success: #16a34a;--warning: #d97706;--error: #dc2626;--shadow-lg: 0 8px 32px rgba(0, 0, 0, .08);--shadow-glow: 0 0 20px rgba(108, 99, 255, .1);--code-color: #6d28d9;--preview-bg: #ebedf3}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.header{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0}.header-left{display:flex;align-items:center;gap:12px}.logo{display:flex;align-items:center;gap:10px}.logo-icon{width:36px;height:36px;background:linear-gradient(135deg,var(--gradient-start),var(--gradient-end));border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:16px}.logo-text{font-size:18px;font-weight:700;background:linear-gradient(135deg,var(--gradient-start),var(--gradient-end));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.logo-subtitle{font-size:11px;color:var(--text-muted);letter-spacing:1px;text-transform:uppercase}.header-actions{display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition);white-space:nowrap}.btn:hover{border-color:var(--border-active);background:var(--bg-card)}.btn-primary{background:linear-gradient(135deg,var(--gradient-start),var(--gradient-end));border:none;color:#fff;font-weight:600;box-shadow:var(--shadow-glow)}.btn-primary:hover{background:linear-gradient(135deg,var(--gradient-start),var(--gradient-end));opacity:.9;box-shadow:0 0 30px #6c63ff4d}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);font-weight:500}.btn-secondary:hover{border-color:var(--border-active);background:var(--bg-card)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-icon{padding:8px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;transition:all var(--transition);display:flex;align-items:center;justify-content:center}.btn-icon:hover{color:var(--text-primary);border-color:var(--border-active)}.main-content{display:flex;flex:1;overflow:hidden;min-height:0}.panel{display:flex;flex-direction:column;overflow:hidden;flex:1;min-height:0}.panel-left{width:45%;flex:none;border-right:1px solid var(--border-color)}.panel-right{width:55%;flex:none}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0}.panel-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted)}.panel-body{flex:1;overflow:auto;position:relative;min-height:0}.input-section{display:flex;flex-direction:column;flex:1;min-height:0;overflow:auto}.input-area{flex:1;display:flex;flex-direction:column}.textarea{flex:1;width:100%;padding:16px;background:var(--bg-input);border:none;color:var(--text-primary);font-family:inherit;font-size:14px;line-height:1.6;resize:none;outline:none}.textarea::placeholder{color:var(--text-muted)}.input-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--bg-secondary);border-top:1px solid var(--border-color)}.input-footer-buttons{display:flex;gap:8px}.input-hint{font-size:12px;color:var(--text-muted)}.char-count{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums}.code-section{display:flex;flex-direction:column;flex:1;min-height:0}.code-area{flex:1;overflow:auto}.code-editor{flex:1;width:100%;padding:16px;background:var(--bg-input);border:none;color:var(--code-color);font-family:JetBrains Mono,Fira Code,Cascadia Code,monospace;font-size:13px;line-height:1.7;resize:none;outline:none;tab-size:2}.input-footer-left{display:flex;align-items:center;gap:6px}.code-footer{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--bg-secondary);border-top:1px solid var(--border-color)}.code-error{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f871711a;border-top:1px solid rgba(248,113,113,.2);color:var(--error);font-size:12px;font-family:JetBrains Mono,Fira Code,monospace}.code-error-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--error);color:#fff;font-size:11px;font-weight:700;flex-shrink:0}.preview-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:32px;background:var(--preview-bg)}.preview-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--text-muted);text-align:center}.preview-empty-icon{width:64px;height:64px;border-radius:50%;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.preview-empty h3{font-size:16px;font-weight:600;color:var(--text-secondary)}.preview-empty p{font-size:13px;max-width:300px;line-height:1.5}.preview-wrapper{display:flex;flex-direction:column;width:100%;height:100%;position:relative}.preview-wrapper.preview-fullscreen{position:fixed;inset:0;z-index:900;background:var(--preview-bg)}.preview-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0;gap:8px;z-index:10}.preview-toolbar-group{display:flex;align-items:center;gap:2px}.preview-toolbar-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:6px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s}.preview-toolbar-btn:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.preview-toolbar-btn:disabled{opacity:.3;cursor:not-allowed}.preview-toolbar-zoom{padding:4px 10px;border:none;border-radius:6px;background:transparent;color:var(--text-muted);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;transition:all .15s;min-width:48px;text-align:center}.preview-toolbar-zoom:hover{background:var(--bg-tertiary);color:var(--text-primary)}.preview-toolbar-hint{font-size:11px;color:var(--text-muted);margin-right:8px}.preview-viewport{flex:1;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;background:var(--preview-bg);cursor:default;min-height:0}.preview-viewport.panning{cursor:grabbing}.preview-canvas{transform-origin:center center;transition:none;display:flex;align-items:center;justify-content:center;padding:40px}.preview-canvas svg{max-width:none;height:auto}.preview-error{position:absolute;top:12px;left:12px;right:12px;z-index:5}.preview-fullscreen-hint{position:absolute;bottom:16px;left:50%;transform:translate(-50%);padding:6px 16px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:20px;font-size:11px;color:var(--text-muted);pointer-events:none;animation:fadeInHint .3s ease;z-index:10}@keyframes fadeInHint{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.loading{display:flex;align-items:center;gap:10px;color:var(--accent);font-size:13px}.loading-spinner{width:16px;height:16px;border:2px solid var(--border-color);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:20px;font-size:11px;font-weight:600}.status-badge.success{background:color-mix(in srgb,var(--success) 10%,transparent);color:var(--success)}.status-badge.error{background:color-mix(in srgb,var(--error) 10%,transparent);color:var(--error)}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.modal-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius);width:480px;max-width:90vw;box-shadow:var(--shadow-lg);animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border-color)}.modal-header h2{font-size:16px;font-weight:600}.modal-body{padding:24px;display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:13px;font-weight:600;color:var(--text-secondary)}.form-hint{font-size:11px;color:var(--text-muted);line-height:1.4}.form-input{padding:10px 14px;background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;font-family:JetBrains Mono,monospace;outline:none;transition:border-color var(--transition)}.form-input:focus{border-color:var(--border-active)}.form-select{padding:10px 14px;background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;outline:none;cursor:pointer;transition:border-color var(--transition)}.form-select:focus{border-color:var(--border-active)}.provider-toggle{display:flex;gap:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);overflow:hidden}.provider-btn{flex:1;padding:8px 16px;background:var(--bg-input);border:none;color:var(--text-muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}.provider-btn:not(:last-child){border-right:1px solid var(--border-color)}.provider-btn:hover:not(.active){color:var(--text-secondary);background:var(--bg-tertiary)}.provider-btn.active{background:var(--accent);color:#fff}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--border-color)}.examples-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 16px}.example-card{padding:10px 14px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition)}.example-card:hover{border-color:var(--border-active);box-shadow:var(--shadow-glow)}.example-card h4{font-size:12px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.example-card p{font-size:11px;color:var(--text-muted);line-height:1.4}.error-message{padding:12px 16px;background:color-mix(in srgb,var(--error) 10%,transparent);border:1px solid color-mix(in srgb,var(--error) 20%,transparent);border-radius:var(--radius-sm);color:var(--error);font-size:13px;line-height:1.5}@media(max-width:900px){.main-content{flex-direction:column}.panel-left,.panel-right{width:100%;height:50%}.panel-left{border-right:none;border-bottom:1px solid var(--border-color)}}.tabs{display:flex;gap:0;background:var(--bg-secondary)}.tab{flex:1;padding:10px;text-align:center;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--transition)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab:hover{color:var(--text-secondary)}.diagram-types{display:flex;gap:6px;padding:8px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);overflow-x:auto;flex-shrink:0}.diagram-type-btn{padding:5px 12px;border-radius:20px;font-size:11px;font-weight:600;color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border-color);cursor:pointer;transition:all var(--transition);white-space:nowrap}.diagram-type-btn.active{color:#fff;background:var(--accent);border-color:var(--accent)}.diagram-type-btn:hover:not(.active){color:var(--text-secondary);border-color:var(--text-muted)}.toast{position:fixed;bottom:24px;right:24px;padding:12px 20px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:13px;box-shadow:var(--shadow-lg);animation:slideUp .3s ease;z-index:2000;display:flex;align-items:center;gap:8px}
