:root{--primary-color: #6366f1;--primary-hover: #4f46e5;--primary-light: #a5b4fc;--accent-color: #10d9c4;--accent-hover: #0ea5e9;--text-primary: #0f172a;--text-secondary: #64748b;--text-muted: #94a3b8;--background: #ffffff;--surface: #f8fafc;--surface-hover: #f1f5f9;--backdrop: #fefefe;--border-color: #e2e8f0;--border-light: #f1f5f9;--error-color: #ef4444;--warning-color: #f59e0b;--success-color: #10b981;--info-color: #06b6d4;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 10px 10px -5px rgb(0 0 0 / .04);--radius: 12px;--radius-lg: 16px;--radius-xl: 20px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Monaco", monospace}[data-theme=dark]{--primary-color: #6366f1;--primary-hover: #4f46e5;--primary-light: #a5b4fc;--accent-color: #10b981;--accent-hover: #059669;--text-primary: #ffffff;--text-secondary: #d1d5db;--text-muted: #9ca3af;--background: #000000;--surface: #000000;--surface-hover: #0a0a0a;--backdrop: #000000;--border-color: #1f2937;--border-light: #374151;--error-color: #ef4444;--warning-color: #f59e0b;--success-color: #10b981;--info-color: #06b6d4;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .9);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .9), 0 2px 4px -2px rgb(0 0 0 / .7);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .95), 0 4px 6px -4px rgb(0 0 0 / .9);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .95), 0 10px 10px -5px rgb(0 0 0 / .9)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);line-height:1.6;color:var(--text-primary);background:var(--backdrop);min-height:100vh;font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:all .3s cubic-bezier(.4,0,.2,1)}.container{max-width:100%;margin:0 auto;padding:8px;height:100vh;display:flex;flex-direction:column;overflow:hidden}header{margin-bottom:.5rem;padding:.5rem 0;flex-shrink:0}.header-content{display:flex;justify-content:space-between;align-items:center;gap:1rem}.header-text{text-align:center;flex:1}header h1{font-size:1.5rem;font-weight:700;margin-bottom:.125rem;background:linear-gradient(135deg,var(--primary-color),var(--accent-color),var(--primary-hover));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;background-size:200% 200%;animation:gradient-shift 3s ease-in-out infinite}@keyframes gradient-shift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}header p{font-size:.875rem;color:var(--text-secondary);max-width:600px;margin:0 auto}.theme-toggle{position:relative}.theme-toggle-btn{background:var(--surface);border:2px solid var(--border-color);border-radius:50px;padding:.5rem;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;width:64px;height:36px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md)}.theme-toggle-btn:hover{border-color:var(--primary-color);transform:scale(1.05);box-shadow:var(--shadow-lg);background:var(--surface-hover)}.theme-icon{font-size:1rem;transition:all .3s ease;position:absolute}.dark-icon,[data-theme=dark] .light-icon{opacity:0;transform:rotate(180deg)}[data-theme=dark] .dark-icon{opacity:1;transform:rotate(0)}.main-layout{flex:1;display:flex;gap:.75rem;min-height:0;overflow:hidden}.control-panel{width:380px;min-width:350px;display:flex;flex-direction:column;gap:.75rem;overflow-y:auto;background:var(--background);border-radius:var(--radius-lg);padding:1rem;box-shadow:var(--shadow-md);border:1px solid var(--border-color)}.content-area,.diagram-area{flex:1;display:flex;flex-direction:column;min-width:0}.diagram-panel{flex:1;display:flex;flex-direction:column;background:var(--background);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--border-color);min-height:0;transition:all .3s ease}.input-card,.unified-input-card{background:var(--background);border-radius:var(--radius-lg);padding:1rem;box-shadow:var(--shadow-md);border:1px solid var(--border-color);transition:all .3s ease}.unified-input-card{display:flex;flex-direction:column;gap:1rem}.input-card h3,.unified-input-card h3{font-size:.9rem;font-weight:600;color:var(--text-primary);margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}.api-section{display:flex;gap:.5rem;align-items:center}.api-input{flex:1;padding:.5rem;border:1px solid var(--border-color);border-radius:var(--radius);background:var(--surface);color:var(--text-primary);font-size:.875rem;transition:border-color .2s ease}.api-input:focus{outline:none;border-color:var(--primary-color)}.description-section textarea{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:var(--radius);background:var(--surface);color:var(--text-primary);font-family:var(--font-sans);resize:vertical;min-height:80px}.action-section{display:flex;gap:.5rem}.code-section{flex:1;display:flex;flex-direction:column}.code-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.code-label{font-size:.875rem;font-weight:600;color:var(--text-primary)}.code-actions{display:flex;gap:.25rem}.editor-section{flex:1;display:flex;flex-direction:column;min-height:0}.editor-container{flex:1;display:flex;gap:1rem;min-height:0}.code-panel,.preview-panel{flex:1;display:flex;flex-direction:column;background:var(--background);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--border-color);min-height:0;transition:all .3s ease}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border-color);background:var(--surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.panel-header h3{font-size:.9rem;font-weight:600;color:var(--text-primary);margin:0;display:flex;align-items:center;gap:.5rem}.panel-actions{display:flex;gap:.5rem}.action-btn{background:var(--surface);border:1px solid var(--border-color);color:var(--text-primary);padding:.375rem .75rem;border-radius:var(--radius);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:var(--shadow-sm)}.action-btn:hover{background:var(--primary-color);color:#fff;border-color:var(--primary-color);transform:translateY(-1px);box-shadow:var(--shadow-md)}.action-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.zoom-controls{display:flex;align-items:center;gap:.5rem;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);padding:.25rem}.zoom-btn{background:transparent;border:none;padding:.3rem .5rem;margin:0;font-size:.75rem;min-width:28px}.zoom-btn:hover{background:var(--primary-color);border:none}.zoom-level{font-size:.75rem;font-weight:500;color:var(--text-primary);min-width:45px;text-align:center;font-family:var(--font-mono)}.action-divider{width:1px;height:20px;background:var(--border-color)}.code-editor{flex:1;display:flex;min-height:0}.code-editor-container{position:relative}.code-actions{display:flex;gap:.5rem;margin-top:.5rem}.example-section{border-top:1px solid var(--border-color);padding-top:1rem}.example-label{font-size:.8rem;font-weight:600;color:var(--text-secondary);margin-bottom:.5rem}#mermaidCodeEditor{width:100%;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);padding:.75rem;font-family:var(--font-mono);font-size:.85rem;line-height:1.4;resize:vertical;outline:none;color:var(--text-primary);transition:all .3s ease;min-height:300px}#mermaidCodeEditor:focus{border-color:var(--primary-color)}#mermaidCodeEditor::-moz-placeholder{color:var(--text-secondary)}#mermaidCodeEditor::placeholder{color:var(--text-secondary)}.diagram-viewport{flex:1;background:var(--background);border-radius:0 0 var(--radius-lg) var(--radius-lg);overflow:hidden;min-height:0;position:relative}.diagram-container{width:100%;height:100%;overflow:auto;padding:1.5rem;display:flex;align-items:center;justify-content:center;transform-origin:center;transition:transform .3s cubic-bezier(.4,0,.2,1);cursor:grab;background:var(--surface);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.diagram-container:active{cursor:grabbing}.diagram-container svg{max-width:none!important;height:auto!important;transition:all .3s ease}.diagram-placeholder{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:var(--text-secondary)}.placeholder-content{text-align:center}.placeholder-icon{font-size:3rem;display:block;margin-bottom:1rem}.examples-card{flex-shrink:0}.examples-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.example-item{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);cursor:pointer;transition:all .2s ease}.example-item:hover{border-color:var(--primary-color);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.example-item strong{font-size:.85rem;color:var(--text-primary)}.example-item span{font-size:.75rem;color:var(--text-secondary)}.api-key-input{position:relative;display:flex;align-items:center}.api-key-input input{flex:1;padding:.75rem 3rem .75rem .75rem;border:2px solid var(--border-color);border-radius:var(--radius);font-size:1rem;transition:border-color .2s ease}.api-key-input input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #4f46e51a}.toggle-btn{background:var(--surface-hover);border:1px solid var(--border-color);color:var(--text-secondary);padding:.5rem .75rem;border-radius:var(--radius);font-size:.75rem;cursor:pointer;transition:all .2s ease;white-space:nowrap}.toggle-btn:hover{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.security-notice{font-size:.8rem;color:var(--warning-color);margin-top:.25rem}.get-key-link{color:var(--primary-color);text-decoration:none;font-weight:500;font-size:.9rem;margin-top:.5rem;display:inline-block}.get-key-link:hover{text-decoration:underline}input,textarea{background:var(--surface);color:var(--text-primary);border:2px solid var(--border-color);border-radius:var(--radius);font-size:1rem;font-family:inherit;transition:all .3s cubic-bezier(.4,0,.2,1)}input{padding:.75rem}textarea{padding:1rem;resize:vertical;min-height:120px}input:focus,textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(var(--primary-color),.1);background:var(--background)}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--text-muted)}input::placeholder,textarea::placeholder{color:var(--text-muted)}.button-group{display:flex;gap:1rem;margin-top:1rem}.generate-btn{background:linear-gradient(135deg,var(--primary-color),var(--primary-hover));color:#fff;border:none;padding:.75rem 1.5rem;border-radius:var(--radius);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;gap:.5rem;flex:1;justify-content:center;box-shadow:var(--shadow-md)}.generate-btn:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-hover),var(--primary-color));transform:translateY(-2px) scale(1.02);box-shadow:var(--shadow-xl)}.generate-btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:var(--shadow-sm)}.clear-btn{background:var(--surface);color:var(--text-secondary);border:1px solid var(--border-color);padding:.75rem 1rem;border-radius:var(--radius);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:var(--shadow-sm)}.clear-btn:hover{background:var(--surface-hover);color:var(--text-primary);border-color:var(--primary-color);transform:translateY(-1px);box-shadow:var(--shadow-md)}.loading-spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.examples-section summary{cursor:pointer;padding:1rem 0;font-weight:600;color:var(--text-primary);list-style:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.examples-section summary::-webkit-details-marker{display:none}.examples-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;margin-top:1rem}.example-card{background:var(--surface);border:2px solid var(--border-color);border-radius:var(--radius);padding:1rem;cursor:pointer;transition:all .2s ease}.example-card:hover{border-color:var(--primary-color);transform:translateY(-2px);box-shadow:var(--shadow-md)}.example-card h4{color:var(--text-primary);margin-bottom:.5rem;font-size:1rem}.example-card p{color:var(--text-secondary);font-size:.9rem;line-height:1.4}.tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:2px solid var(--border-color)}.tab-btn{background:none;border:none;padding:.75rem 1.5rem;font-size:1rem;font-weight:500;cursor:pointer;color:var(--text-secondary);border-bottom:2px solid transparent;transition:all .2s ease}.tab-btn.active{color:var(--primary-color);border-bottom-color:var(--primary-color)}.tab-btn:hover:not(.active){color:var(--text-primary)}.tab-pane{display:none}.tab-pane.active{display:block}.code-header{display:flex;justify-content:flex-end;margin-bottom:1rem}.copy-btn,.download-btn{background:var(--surface);border:2px solid var(--border-color);color:var(--text-primary);padding:.5rem 1rem;border-radius:var(--radius);font-size:.9rem;cursor:pointer;transition:all .2s ease;margin-left:.5rem}.copy-btn:hover,.download-btn:hover{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}pre{background:var(--surface);border:2px solid var(--border-color);border-radius:var(--radius);padding:1.5rem;overflow-x:auto;font-family:var(--font-mono);line-height:1.4}pre code{font-size:.9rem}.diagram-header{display:flex;justify-content:flex-end;gap:.5rem;margin-bottom:1rem}.diagram-container{background:var(--background);border:2px solid var(--border-color);border-radius:var(--radius);padding:2rem;text-align:center;min-height:400px;display:flex;align-items:center;justify-content:center;overflow:auto}.error-section{background:#ef44441a;border-color:var(--error-color);color:var(--error-color)}.error-message{display:flex;align-items:center;gap:.75rem;font-weight:500}.error-icon{font-size:1.2rem}footer{text-align:center;padding:2rem 0;color:var(--text-secondary);font-size:.9rem;margin-top:auto}@media (max-width: 768px){.container{padding:10px}header{margin-bottom:1rem;padding:.5rem 0}.header-content{flex-direction:column;gap:.75rem}.header-text{order:2}.theme-toggle{order:1;align-self:flex-end}header h1{font-size:1.75rem}header p{font-size:.9rem}.main-layout{flex-direction:column;height:auto;gap:1rem}.control-panel{width:100%;min-width:unset;order:2}.content-area,.diagram-area{order:1;min-height:60vh}.editor-container{flex-direction:column;gap:.5rem}.code-panel,.preview-panel{min-height:250px}.panel-actions{flex-wrap:wrap;gap:.25rem}.action-btn{padding:.3rem .6rem;font-size:.75rem}.input-card{padding:.75rem}.button-group{flex-direction:column;gap:.5rem}}@media (max-width: 480px){header h1{font-size:1.5rem}.sidebar{gap:.75rem}.input-card h3{font-size:.85rem}.generate-btn,.clear-btn{padding:.75rem 1rem;font-size:.9rem}.panel-header{padding:.5rem .75rem}.panel-header h3{font-size:.8rem}#mermaidCodeEditor{font-size:.8rem;padding:.75rem}}@media (min-width: 1400px){.sidebar{width:380px}.main-layout{gap:1.5rem}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (prefers-contrast: high){:root{--border-color: #000000;--text-secondary: #000000}}@media (prefers-color-scheme: dark){:root{--primary-color: #6366f1;--primary-hover: #5b5bf6;--secondary-color: #1e293b;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--border-color: #334155;--background: #0f172a;--surface: #1e293b}body{background:linear-gradient(135deg,var(--background) 0%,var(--surface) 100%)}}.mermaid{max-width:100%;height:auto;background:transparent;border-radius:var(--radius);padding:1rem}.mermaid svg{background:transparent!important;border-radius:var(--radius)}[data-theme=dark] .mermaid svg{filter:brightness(1.1) contrast(1.05)}[data-theme=dark] .mermaid .node rect,[data-theme=dark] .mermaid .node circle,[data-theme=dark] .mermaid .node ellipse,[data-theme=dark] .mermaid .node polygon{fill:var(--surface)!important;stroke:var(--border-light)!important;stroke-width:2px!important}[data-theme=dark] .mermaid .edgePath path{stroke:var(--primary-light)!important;stroke-width:2px!important}[data-theme=dark] .mermaid .edgeLabel{background-color:var(--surface)!important;color:var(--text-primary)!important}[data-theme=light] .mermaid svg{filter:contrast(1.1) saturate(1.1)}[data-theme=light] .mermaid .node rect,[data-theme=light] .mermaid .node circle,[data-theme=light] .mermaid .node ellipse,[data-theme=light] .mermaid .node polygon{fill:#fff!important;stroke:var(--primary-color)!important;stroke-width:2px!important;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}[data-theme=light] .mermaid .edgePath path{stroke:var(--primary-color)!important;stroke-width:2px!important}.mermaid .nodeLabel,.mermaid .edgeLabel{font-family:var(--font-sans)!important;font-weight:500!important;font-size:14px!important}[data-theme=dark] .mermaid .nodeLabel,[data-theme=light] .mermaid .nodeLabel{fill:var(--text-primary)!important}.diagram-error{padding:2rem;text-align:center;color:var(--error-color);background:#ef44441a;border:2px solid var(--error-color);border-radius:var(--radius);margin:1rem 0}.diagram-error details{margin-top:1rem;text-align:left}.diagram-error summary{cursor:pointer;font-weight:600;padding:.5rem;background:#ef44441a;border-radius:var(--radius)}.diagram-error pre{background:var(--surface);color:var(--text-primary);font-size:.8rem;max-height:200px;overflow-y:auto}.diagram-loading{display:flex;align-items:center;justify-content:center;padding:3rem;color:var(--text-secondary);font-weight:500}.diagram-loading:after{content:"⏳";margin-left:.5rem;animation:spin 2s linear infinite}
