:root{--bg: #0f0f0f;--surface: #1a1a1a;--surface-elevated: #252525;--border: #333333;--primary: #3b82f6;--primary-hover: #2563eb;--text: #ffffff;--text-secondary: #a1a1aa;--text-muted: #71717a;--success: #22c55e;--warning: #f59e0b;--error: #ef4444}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text);overflow:hidden}#root{width:100vw;height:100vh}.app{display:flex;flex-direction:column;height:100vh}.header{height:56px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0}.header-left{display:flex;align-items:center;gap:16px}.logo{font-size:16px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px}.logo-icon{width:28px;height:28px;background:var(--primary);border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.project-name{background:transparent;border:1px solid var(--border);border-radius:6px;padding:6px 12px;color:var(--text);font-size:13px;width:200px}.project-name:focus{outline:none;border-color:var(--primary)}.header-right{display:flex;align-items:center;gap:8px}.btn{padding:8px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease-out;border:none;display:flex;align-items:center;gap:6px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:var(--surface-elevated);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{background:#2f2f2f}.main{display:flex;flex:1;overflow:hidden}.components-panel{width:240px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}.panel-header{padding:16px;border-bottom:1px solid var(--border);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.search-input{background:var(--surface-elevated);border:1px solid var(--border);border-radius:6px;padding:8px 12px;color:var(--text);font-size:13px;width:100%;margin:12px 16px;width:calc(100% - 32px)}.search-input:focus{outline:none;border-color:var(--primary)}.components-list{flex:1;overflow-y:auto;padding:8px}.category-section{margin-bottom:16px}.category-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);padding:8px}.component-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;cursor:pointer;transition:background .15s ease-out;font-size:13px}.component-item:hover{background:var(--surface-elevated)}.component-item.dragging{opacity:.5}.component-icon{width:28px;height:28px;background:var(--surface-elevated);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--text-secondary)}.canvas-container{flex:1;background:var(--bg);display:flex;flex-direction:column;overflow:hidden}.canvas-toolbar{height:40px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:center;gap:8px;padding:0 16px}.viewport-btn{padding:4px 12px;border-radius:4px;font-size:12px;background:transparent;border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all .15s ease-out}.viewport-btn:hover{background:var(--surface-elevated)}.viewport-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.canvas{flex:1;overflow:auto;padding:32px;display:flex;justify-content:center}.canvas-frame{background:#1a1a1a;border:1px solid var(--border);border-radius:8px;min-height:600px;transition:width .3s ease-out;position:relative}.canvas-content{width:100%;height:100%;min-height:600px;padding:16px}.empty-canvas{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted);gap:12px}.empty-canvas-icon{font-size:48px;opacity:.3}.empty-canvas-text{font-size:14px}.render-component{position:relative;cursor:pointer}.render-component:hover{outline:1px dashed var(--primary);outline-offset:2px}.render-component.selected{outline:2px solid var(--primary);outline-offset:2px}.properties-panel{width:280px;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto}.properties-empty{padding:32px 16px;text-align:center;color:var(--text-muted);font-size:13px}.property-section{padding:16px;border-bottom:1px solid var(--border)}.property-section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:12px}.property-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.property-label{font-size:12px;color:var(--text-secondary);width:60px;flex-shrink:0}.property-input{flex:1;background:var(--surface-elevated);border:1px solid var(--border);border-radius:4px;padding:6px 8px;color:var(--text);font-size:12px;width:100%}.property-input:focus{outline:none;border-color:var(--primary)}.property-input-sm{width:60px;flex:none}.property-select{flex:1;background:var(--surface-elevated);border:1px solid var(--border);border-radius:4px;padding:6px 8px;color:var(--text);font-size:12px}.property-color{width:32px;height:32px;border-radius:4px;border:1px solid var(--border);cursor:pointer;padding:0;background:none}.property-color::-webkit-color-swatch-wrapper{padding:2px}.property-color::-webkit-color-swatch{border:none;border-radius:2px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--surface);border-radius:12px;width:90%;max-width:900px;max-height:80vh;display:flex;flex-direction:column;border:1px solid var(--border)}.modal-header{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:18px;font-weight:600}.modal-close{background:transparent;border:none;color:var(--text-muted);font-size:24px;cursor:pointer;padding:4px;line-height:1}.modal-close:hover{color:var(--text)}.modal-tabs{display:flex;border-bottom:1px solid var(--border);padding:0 24px}.modal-tab{padding:12px 16px;background:transparent;border:none;color:var(--text-secondary);font-size:13px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.modal-tab:hover{color:var(--text)}.modal-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.modal-body{flex:1;overflow:auto;padding:24px}.code-block{background:var(--bg);border-radius:8px;padding:16px;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre;color:var(--text-secondary)}.code-block .tag{color:#f472b6}.code-block .attr{color:#7dd3fc}.code-block .string{color:#86efac}.code-block .keyword{color:#c4b5fd}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#444}.canvas-component{min-height:24px;position:relative}.canvas-component:hover>.component-actions{opacity:1}.component-actions{position:absolute;top:-24px;right:0;display:flex;gap:4px;opacity:0;transition:opacity .15s}.component-action{width:24px;height:24px;background:var(--primary);border:none;border-radius:4px;color:#fff;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.component-action:hover{background:var(--primary-hover)}.component-action.delete{background:var(--error)}.drag-over{outline:2px dashed var(--primary);outline-offset:-2px}.drop-indicator{height:4px;background:var(--primary);border-radius:2px;margin:4px 0}.footer{height:40px;background:var(--surface);border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:12px;color:var(--text-muted)}.split-pane{display:flex;flex:1;overflow:hidden}.split-pane-left{flex:1;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--border)}.split-pane-right{width:400px;background:var(--surface);display:flex;flex-direction:column;flex-shrink:0}.split-pane-resizer{width:4px;background:var(--border);cursor:col-resize;transition:background .15s}.split-pane-resizer:hover{background:var(--primary)}.code-preview{display:flex;flex-direction:column;flex:1;overflow:hidden}.code-preview-section{flex:1;display:flex;flex-direction:column;overflow:hidden;border-bottom:1px solid var(--border)}.code-preview-section:last-child{border-bottom:none}.code-preview-header{padding:8px 16px;background:var(--surface-elevated);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);border-bottom:1px solid var(--border)}.code-preview-content{flex:1;overflow:auto;background:var(--bg);padding:12px;font-family:JetBrains Mono,monospace;font-size:11px;line-height:1.5;color:var(--text-secondary);margin:0;white-space:pre-wrap;word-break:break-all}.preview-toggle{display:flex;gap:4px}.preview-toggle-btn{padding:6px 12px;border-radius:4px;font-size:12px;background:transparent;border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all .15s ease-out}.preview-toggle-btn:hover{background:var(--surface-elevated)}.preview-toggle-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.page-tabs{display:flex;align-items:center;gap:4px}.page-tab{padding:4px 12px;border-radius:4px;font-size:12px;background:transparent;border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all .15s ease-out}.page-tab:hover{background:var(--surface-elevated)}.page-tab.active{background:var(--primary);border-color:var(--primary);color:#fff}.page-tab-add{width:24px;height:24px;border-radius:4px;font-size:14px;background:transparent;border:1px solid var(--border);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center}.page-tab-add:hover{background:var(--surface-elevated);color:var(--text)}
