:root{--bg: #f7f8fa;--panel-bg: #fff;--text: #1f1f1f;--border: #e5e7eb;--primary: #1f3ef0;--primary-fg: #fff;--preview-bg: #ffffff;--success: #10b981;--warning: #f59e0b;--error: #ef4444}body.dark{--bg: #1a1b1e;--panel-bg: #25262b;--text: #c1c2c5;--border: #373a40;--primary: #339af0;--preview-bg: #1a1a1a;--success: #34d399;--warning: #fbbf24;--error: #f87171}body{margin:0;padding:0;font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text);transition:background .3s,color .3s}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--border);background:var(--panel-bg)}.brand{display:flex;align-items:center;gap:12px}.logo{font-size:24px}h1{margin:0;font-size:18px;font-weight:600}p{margin:0;font-size:12px;opacity:.7}.actions{display:flex;gap:8px}button{border:1px solid var(--border);background:var(--primary);color:var(--primary-fg);padding:8px 12px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:opacity .2s}button:disabled{cursor:not-allowed;opacity:.6}button:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}button.assist-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;animation:pulse-glow 2s infinite}@keyframes pulse-glow{0%,to{box-shadow:0 0 5px #667eea4d}50%{box-shadow:0 0 15px #667eea99}}.layout{display:grid;grid-template-columns:350px 1fr;gap:16px;padding:16px;flex:1}.panel{background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:16px;height:calc(100vh - 100px)}.field-row{display:flex;flex-direction:column;gap:12px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;opacity:.8;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.label-hint{font-weight:400;text-transform:none;letter-spacing:0;font-size:11px;opacity:.6;font-style:italic}.field.grow{flex:1;min-height:0}textarea{width:100%;height:100%;resize:none;font-family:JetBrains Mono,monospace;border:1px solid var(--border);border-radius:6px;padding:12px;background:var(--bg);color:var(--text);font-size:13px;line-height:1.5}textarea:focus{outline:2px solid var(--primary);border-color:transparent}textarea::placeholder{color:var(--text);opacity:.4;font-family:inherit;font-size:12px}select{padding:8px;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:14px}.status{padding:10px;border-radius:6px;background:var(--bg);border:1px solid var(--border);font-size:12px}.preview-panel{padding:0;overflow:hidden;background:var(--preview-bg)}.preview-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--preview-bg)}.preview-runtime,.preview-remote{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.preview-runtime svg,.preview-remote svg{max-width:90%;max-height:90%;box-shadow:0 4px 12px #0000001a}.icon-picker-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.icon-picker-modal{background:var(--panel-bg);border-radius:12px;width:90%;max-width:800px;max-height:85vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.icon-picker-header{padding:20px 24px;border-bottom:1px solid var(--border);position:relative}.icon-picker-header h2{margin:0 0 4px;font-size:20px}.icon-picker-header p{margin:0;opacity:.6}.close-btn{position:absolute;top:16px;right:16px;background:transparent;border:none;font-size:24px;cursor:pointer;color:var(--text);opacity:.6;padding:4px 8px}.close-btn:hover{opacity:1;transform:none}.icon-search-form{display:flex;gap:8px;padding:16px 24px;border-bottom:1px solid var(--border)}.icon-search-input{flex:1;padding:12px 16px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:15px}.icon-search-input:focus{outline:2px solid var(--primary);border-color:transparent}.icon-search-btn{padding:12px 20px;font-size:18px}.quick-searches{display:flex;flex-wrap:wrap;gap:8px;padding:12px 24px;border-bottom:1px solid var(--border)}.quick-search-tag{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:6px 12px;border-radius:16px;font-size:12px;cursor:pointer;transition:all .2s}.quick-search-tag:hover{background:var(--primary);color:var(--primary-fg);border-color:var(--primary);transform:none}.icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;padding:20px 24px;overflow-y:auto;flex:1}.icon-card{background:var(--bg);border:1px solid var(--border);border-radius:8px;overflow:hidden;transition:all .2s}.icon-card:hover{border-color:var(--primary);box-shadow:0 4px 12px #0000001a}.icon-preview{padding:16px;display:flex;align-items:center;justify-content:center;background:var(--preview-bg);min-height:80px}.icon-preview img{max-width:64px;max-height:64px;object-fit:contain}.icon-actions{display:flex;border-top:1px solid var(--border)}.icon-insert-btn,.icon-copy-btn{flex:1;padding:8px;font-size:11px;border:none;border-radius:0;background:var(--panel-bg);color:var(--text)}.icon-insert-btn{border-right:1px solid var(--border)}.icon-insert-btn:hover{background:var(--primary);color:var(--primary-fg)}.icon-copy-btn:hover{background:var(--bg)}.icon-empty,.icon-loading,.icon-error{padding:40px 24px;text-align:center;color:var(--text);opacity:.6}.icon-error{color:#e53935;opacity:1}button.icon-btn{background:linear-gradient(135deg,#f093fb,#f5576c);border:none}.tab-switcher{display:flex;gap:4px;background:var(--bg);padding:4px;border-radius:8px}.tab-btn{background:transparent;border:none;color:var(--text);padding:8px 16px;border-radius:6px;opacity:.7;transition:all .2s}.tab-btn:hover{opacity:1;background:var(--panel-bg);transform:none}.tab-btn.active{background:var(--primary);color:var(--primary-fg);opacity:1}.layout-full{flex:1;padding:16px}.chart-editor{display:grid;grid-template-columns:400px 1fr;gap:16px;height:calc(100vh - 100px)}.chart-sidebar{background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.chart-sidebar .field{display:flex;flex-direction:column;gap:6px}.chart-sidebar .field.grow{flex:1;min-height:150px}.chart-sidebar label{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;opacity:.8}.chart-sidebar input,.chart-sidebar select{padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:14px}.chart-sidebar input:focus,.chart-sidebar select:focus{outline:2px solid var(--primary);border-color:transparent}.content-input{min-height:120px;resize:vertical;font-family:inherit;font-size:13px;padding:12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text)}.data-input{flex:1;min-height:150px;font-family:JetBrains Mono,monospace;font-size:12px;padding:12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);resize:none}.divider{height:1px;background:var(--border);margin:4px 0}.full-width{width:100%}.generate-btn{background:linear-gradient(135deg,#11998e,#38ef7d);border:none;padding:12px;font-size:15px}.chart-preview{background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden}.chart-image-container{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px;max-width:100%;max-height:100%}.chart-image-container img{max-width:100%;max-height:calc(100vh - 250px);object-fit:contain;border-radius:8px;box-shadow:0 4px 20px #00000026}.chart-actions{display:flex;gap:8px}.chart-actions button{padding:8px 16px;font-size:13px}.chart-placeholder{text-align:center;color:var(--text);opacity:.6}.placeholder-icon{font-size:64px;margin-bottom:16px}.chart-placeholder p{margin:8px 0}.chart-placeholder .hint{font-size:12px;opacity:.7}.gallery-page{min-height:100vh;background:var(--bg)}.gallery-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);background:var(--panel-bg)}.gallery-brand{display:flex;align-items:center;gap:20px}.gallery-brand h1{font-size:24px;margin:0}.gallery-brand p{margin:4px 0 0;opacity:.7}.back-btn{background:transparent;border:1px solid var(--border);color:var(--text);padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}.back-btn:hover{background:var(--bg)}.gallery-filters{display:flex;flex-wrap:wrap;gap:8px;padding:16px 24px;border-bottom:1px solid var(--border);background:var(--panel-bg)}.filter-btn{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:8px 16px;border-radius:20px;cursor:pointer;font-size:14px;transition:all .2s}.filter-btn:hover{border-color:var(--primary);transform:none}.filter-btn.active{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}.gallery-stats{padding:12px 24px;font-size:14px;opacity:.7}.gallery-loading{padding:60px 24px;text-align:center;font-size:18px;opacity:.6}.gallery-content{padding:0 24px 40px}.template-group{margin-bottom:32px}.group-title{font-size:18px;font-weight:600;margin:24px 0 16px;display:flex;align-items:center;gap:12px;text-transform:capitalize}.group-count{font-size:12px;font-weight:400;opacity:.6;background:var(--bg);padding:4px 10px;border-radius:12px}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.template-card{background:var(--panel-bg);border:1px solid var(--border);border-radius:12px;overflow:hidden;transition:all .2s}.template-card:hover{border-color:var(--primary);box-shadow:0 8px 24px #0000001a;transform:translateY(-2px)}.template-preview{height:180px;display:flex;align-items:center;justify-content:center;background:#fff;border-bottom:1px solid var(--border);overflow:hidden;padding:8px}body.dark .template-preview{background:#1a1a1a}.template-icon{font-size:48px}.thumbnail-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;transform:scale(.5);transform-origin:center center}.thumbnail-container svg{max-width:100%;max-height:100%}.thumbnail-error{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg)}.thumbnail-error-icon{font-size:48px;opacity:.4}.template-info{padding:12px 16px}.template-info h4{margin:0 0 4px;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.template-category{font-size:11px;text-transform:uppercase;letter-spacing:.5px;opacity:.6;background:var(--bg);padding:2px 8px;border-radius:4px}.use-btn{width:100%;padding:12px;border:none;border-radius:0;background:var(--primary);color:var(--primary-fg);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.use-btn:hover{background:var(--primary);opacity:.9;transform:none}.editor-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);margin-bottom:8px}.toolbar-group{display:flex;align-items:center;gap:4px}.toolbar-btn{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:6px 10px;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s}.toolbar-btn:disabled{opacity:.4;cursor:not-allowed}.toolbar-btn:hover:not(:disabled){background:var(--panel-bg);border-color:var(--primary);transform:none}.toggle-label{display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-label input{width:16px;height:16px;cursor:pointer}.syntax-editor-container{width:100%;height:100%;border:1px solid var(--border);border-radius:6px;overflow:hidden}.validation-errors{background:#ef44441a;border:1px solid var(--error);border-radius:6px;padding:8px 12px;margin-top:8px}.validation-error{font-size:12px;color:var(--error);padding:2px 0}.preview-panel{position:relative}.zoom-controls{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;background:var(--panel-bg);border:1px solid var(--border);border-radius:24px;padding:6px 12px;z-index:10;box-shadow:0 4px 12px #00000026}.zoom-btn{background:transparent;border:none;color:var(--text);padding:4px 8px;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s}.zoom-btn:hover{background:var(--bg);transform:none}.zoom-level{font-size:12px;font-weight:500;min-width:40px;text-align:center}.preview-wrapper{width:100%;height:100%;display:flex;align-items:center;justify-content:center;transition:transform .2s ease}.gallery-btn{background:linear-gradient(135deg,#06b6d4,#3b82f6);border:none}.error-banner{position:absolute;bottom:60px;left:16px;right:16px;background:#ef4444f2;color:#fff;padding:10px 16px;border-radius:8px;font-size:13px;z-index:20;box-shadow:0 4px 12px #0003}.edit-mode-indicator{position:absolute;top:12px;left:50%;transform:translate(-50%);background:#8b5cf6f2;color:#fff;padding:8px 16px;border-radius:20px;font-size:12px;font-weight:500;z-index:25;box-shadow:0 4px 12px #8b5cf64d;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.preview-container.editing{outline:2px solid var(--primary);outline-offset:-2px}.preview-container.editing .preview-runtime{cursor:text}.color-picker{position:relative}.color-picker-toggle{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;cursor:pointer;width:100%;justify-content:space-between}.color-preview-row{display:flex;gap:4px;align-items:center}.color-dot{width:16px;height:16px;border-radius:50%;border:1px solid var(--border)}.color-more{font-size:11px;opacity:.6}.toggle-arrow{font-size:10px;opacity:.6}.color-picker-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;padding:12px;margin-top:4px;z-index:100;box-shadow:0 8px 24px #00000026;max-height:400px;overflow-y:auto}.color-section{margin-bottom:16px}.color-section:last-child{margin-bottom:0}.color-section h4{font-size:11px;text-transform:uppercase;letter-spacing:.5px;opacity:.6;margin:0 0 8px}.preset-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.preset-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px;background:var(--bg);border:1px solid var(--border);border-radius:6px;cursor:pointer;color:var(--text);transition:all .2s}.preset-btn:hover{border-color:var(--primary);transform:none}.preset-colors{display:flex;gap:2px}.preset-colors span{width:16px;height:16px;border-radius:3px}.preset-name{font-size:10px;opacity:.7}.custom-colors{display:flex;flex-direction:column;gap:8px}.custom-color-item{display:flex;align-items:center;gap:8px}.color-input{width:32px;height:32px;padding:0;border:1px solid var(--border);border-radius:4px;cursor:pointer}.color-hex{flex:1;padding:6px 8px;font-size:12px;font-family:monospace;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px}.remove-color-btn{background:transparent;border:none;color:var(--text);opacity:.5;cursor:pointer;padding:4px 8px;font-size:16px}.remove-color-btn:hover{opacity:1;color:var(--error);transform:none}.add-color-btn{background:transparent;border:1px dashed var(--border);color:var(--text);padding:8px;border-radius:4px;cursor:pointer;font-size:12px;opacity:.6}.add-color-btn:hover{opacity:1;border-color:var(--primary);transform:none}.layout-presets{position:relative}.layout-toggle{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;cursor:pointer;width:100%}.layout-icon{font-size:16px}.layout-name{flex:1;text-align:left;font-size:13px}.layout-size{font-size:11px;opacity:.6;font-family:monospace}.layout-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;padding:12px;margin-top:4px;z-index:100;box-shadow:0 8px 24px #00000026}.layout-section{margin-bottom:12px}.layout-section:last-child{margin-bottom:0}.layout-section h4{font-size:11px;text-transform:uppercase;letter-spacing:.5px;opacity:.6;margin:0 0 8px}.layout-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.layout-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;background:var(--bg);border:1px solid var(--border);border-radius:6px;cursor:pointer;color:var(--text);transition:all .2s}.layout-btn:hover,.layout-btn.active{border-color:var(--primary);background:var(--panel-bg);transform:none}.layout-btn.active{background:var(--primary);color:var(--primary-fg)}.layout-btn-icon{font-size:18px}.layout-btn-name{font-size:10px;font-weight:500}.layout-btn-size{font-size:9px;opacity:.6;font-family:monospace}.custom-size-inputs{display:flex;align-items:flex-end;gap:8px}.size-input-group{flex:1}.size-input-group label{display:block;font-size:10px;opacity:.6;margin-bottom:4px}.size-input-group input{width:100%;padding:6px 8px;font-size:13px;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px}.size-separator{opacity:.4;padding-bottom:6px}.apply-custom-btn{padding:6px 12px;background:var(--primary);color:var(--primary-fg);border:none;border-radius:4px;cursor:pointer;font-size:12px}.font-selector{position:relative}.font-toggle{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;cursor:pointer;width:100%}.font-preview{font-size:18px;font-weight:600}.font-name{flex:1;text-align:left;font-size:13px}.font-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;margin-top:4px;z-index:100;box-shadow:0 8px 24px #00000026;overflow:hidden}.font-categories{display:flex;flex-wrap:wrap;gap:4px;padding:8px;border-bottom:1px solid var(--border)}.font-cat-btn{padding:4px 10px;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:12px;cursor:pointer;font-size:11px}.font-cat-btn:hover,.font-cat-btn.active{background:var(--primary);color:var(--primary-fg);border-color:var(--primary);transform:none}.font-list{max-height:280px;overflow-y:auto}.font-option{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:transparent;border:none;border-bottom:1px solid var(--border);color:var(--text);cursor:pointer;width:100%;text-align:left;transition:background .2s}.font-option:hover,.font-option.active{background:var(--bg)}.font-option.active{border-left:3px solid var(--primary)}.font-option-preview{font-size:16px;line-height:1.4}.font-option-info{display:flex;align-items:center;gap:8px}.font-option-name{font-size:11px;opacity:.6}.font-option-lang{font-size:9px;padding:2px 6px;background:var(--primary);color:var(--primary-fg);border-radius:8px;opacity:.8}.layer-panel{background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;overflow:hidden}.layer-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg)}.layer-header h3{font-size:13px;font-weight:600;margin:0}.layer-count{font-size:11px;opacity:.6}.layer-list{max-height:300px;overflow-y:auto}.layer-empty{padding:24px;text-align:center;font-size:12px;opacity:.5}.layer-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .2s}.layer-item:hover{background:var(--bg)}.layer-item.dragging{opacity:.5;background:var(--primary)}.layer-icon{font-size:14px;opacity:.7}.layer-label{flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-type-badge{font-size:9px;text-transform:uppercase;padding:2px 6px;background:var(--bg);border-radius:4px;opacity:.6}.element-library{position:relative}.element-library-toggle{display:flex;align-items:center;gap:8px;padding:8px 12px;background:linear-gradient(135deg,#8b5cf6,#ec4899);border:none;color:#fff;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500}.element-library-panel{position:absolute;top:100%;left:0;width:320px;background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;margin-top:4px;z-index:100;box-shadow:0 8px 24px #00000026;overflow:hidden}.element-categories{display:flex;gap:4px;padding:8px;border-bottom:1px solid var(--border);background:var(--bg)}.element-cat-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px;background:transparent;border:1px solid transparent;color:var(--text);border-radius:6px;cursor:pointer;font-size:10px;flex:1;transition:all .2s}.element-cat-btn:hover{background:var(--panel-bg);transform:none}.element-cat-btn.active{background:var(--primary);color:var(--primary-fg)}.element-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:12px;max-height:250px;overflow-y:auto}.element-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;background:var(--bg);border:1px solid var(--border);border-radius:6px;cursor:grab;transition:all .2s}.element-item:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.element-item.dragging{opacity:.5;cursor:grabbing}.element-preview{font-size:24px}.element-name{font-size:9px;opacity:.7;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.element-hint{padding:8px 12px;font-size:11px;opacity:.6;background:var(--bg);border-top:1px solid var(--border);text-align:center}.design-toolbar{display:flex;flex-wrap:wrap;gap:8px;padding:12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-bottom:12px}.design-tool-group{display:flex;flex-direction:column;gap:4px;min-width:140px}.design-tool-group label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;opacity:.6}.layer-sidebar{width:280px;min-width:280px;padding:12px;background:var(--panel-bg);border-left:1px solid var(--border);overflow-y:auto}.design-tools-btn.active,.layers-btn.active{background:var(--primary)!important;color:var(--primary-fg)!important}.layout.with-layers{grid-template-columns:350px 1fr 280px}
