:root,[data-theme=dark]{--bg-0: #0b1020;--bg-1: #0f172a;--bg-2: #111827;--bg-3: #1e293b;--bg-elev: #18223a;--text: #f1f5f9;--text-dim: #cbd5e1;--text-mute: #cbd5e1;--border: #1f2937;--border-2: #2a3548;--accent: #8b5cf6;--accent-2: #06b6d4;--accent-soft: rgba(139, 92, 246, .18);--cyan-soft: rgba(6, 182, 212, .18);--success: #10b981;--warning: #f59e0b;--error: #ef4444;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--shadow-1: 0 2px 6px rgba(0,0,0,.25);--shadow-2: 0 8px 30px rgba(0,0,0,.45);--shadow-3: 0 16px 50px rgba(0,0,0,.55);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--mono: ui-monospace, SFMono-Regular, "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;--sidebar-w: 280px;--editor-w: 640px;--chat-h: 220px;--topbar-h: 48px;--tabbar-h: 36px;--transition: .16s ease;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 80px;--fs-xs: 11px;--fs-sm: 12px;--fs-base: 14px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 20px;--fs-2xl: 28px;--z-base: 0;--z-sticky: 10;--z-overlay: 50;--z-modal: 100;--z-toast: 200}[data-theme=light]{--bg-0: #f8fafc;--bg-1: #ffffff;--bg-2: #f1f5f9;--bg-3: #e2e8f0;--bg-elev: #ffffff;--text: #0f172a;--text-dim: #475569;--text-mute: #475569;--border: #e2e8f0;--border-2: #cbd5e1;--accent-soft: rgba(139, 92, 246, .12);--cyan-soft: rgba(6, 182, 212, .12);--shadow-1: 0 2px 6px rgba(15, 23, 42, .08);--shadow-2: 0 8px 30px rgba(15, 23, 42, .12);--shadow-3: 0 16px 50px rgba(15, 23, 42, .18)}@media (prefers-color-scheme: light){:root:not([data-theme]){color-scheme:light;--bg-0: #f8fafc;--bg-1: #ffffff;--bg-2: #f1f5f9;--bg-3: #e2e8f0;--bg-elev: #ffffff;--text: #0f172a;--text-dim: #475569;--text-mute: #475569;--border: #e2e8f0;--border-2: #cbd5e1;--accent-soft: rgba(139, 92, 246, .12);--cyan-soft: rgba(6, 182, 212, .12);--shadow-1: 0 2px 6px rgba(15, 23, 42, .08);--shadow-2: 0 8px 30px rgba(15, 23, 42, .12);--shadow-3: 0 16px 50px rgba(15, 23, 42, .18)}}:root:not([data-theme]){color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body{margin:0;font-family:var(--font);font-size:var(--fs-base);color:var(--text);background:var(--bg-0);overflow:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit}a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}ul{list-style:none;padding:0;margin:0}*:focus{outline:none}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#243149;border-radius:8px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#2e3f5e;background-clip:padding-box;border:2px solid transparent}*{scrollbar-width:thin;scrollbar-color:#243149 transparent}.splash{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-0);z-index:9999;gap:12px;transition:opacity .25s ease}.splash-logo{font-size:26px;font-weight:700;letter-spacing:.4px;background:linear-gradient(135deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.splash-sub{color:var(--text-dim);font-size:13px}.splash.hidden{opacity:0;pointer-events:none}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:10000;max-width:360px}.toast{padding:10px 14px;background:var(--bg-2);border:1px solid var(--border-2);border-left:3px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow-2);color:var(--text);font-size:13px;animation:toast-in .2s ease}.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--error)}.toast.info{border-left-color:var(--accent-2)}.toast-title{font-weight:600;margin-bottom:2px}.toast-msg{color:var(--text-dim)}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.toolbar{height:var(--topbar-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:var(--bg-1);border-bottom:1px solid var(--border);padding:0 12px;gap:12px;z-index:5}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:6px}.toolbar-right{justify-content:flex-end}.toolbar-center{display:flex;align-items:center;gap:8px;justify-content:center;color:var(--text-dim);font-size:13px}.current-project{max-width:60ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.save-indicator{font-size:14px;line-height:1;transition:color var(--transition);color:var(--text-mute)}.save-indicator[data-state=dirty]{color:var(--warning)}.save-indicator[data-state=saving]{color:var(--accent-2);animation:pulse 1s ease-in-out infinite}.save-indicator[data-state=saved]{color:var(--success)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.brand{display:flex;align-items:center;gap:8px;background:transparent;border:0;color:var(--text);cursor:pointer;padding:6px 8px;border-radius:var(--radius-sm);font-weight:600}.brand:hover{background:var(--bg-2)}.brand-mark{background:linear-gradient(135deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent;font-size:18px}.brand-name{background:linear-gradient(135deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.icon-btn{display:inline-flex;align-items:center;gap:6px;background:var(--bg-2);color:var(--text);border:1px solid var(--border-2);border-radius:var(--radius-sm);padding:6px 10px;font-size:13px;cursor:pointer;transition:background var(--transition),border-color var(--transition),transform var(--transition)}.icon-btn:hover{background:var(--bg-3);border-color:var(--accent)}.icon-btn:active{transform:translateY(1px)}.icon-btn.small{padding:4px 6px;font-size:12px}.icon-btn[disabled]{opacity:.5;cursor:not-allowed}.mobile-tabs{display:none;height:40px;background:var(--bg-1);border-bottom:1px solid var(--border)}.mtab{flex:1;background:transparent;border:0;color:var(--text-dim);font-size:18px;cursor:pointer;border-bottom:2px solid transparent}.mtab:hover{color:var(--text)}.mtab.active{color:var(--accent);border-bottom-color:var(--accent)}.layout{display:grid;grid-template-columns:var(--sidebar-w) 4px var(--editor-w) 4px 1fr;height:calc(100vh - var(--topbar-h));width:100%;background:var(--bg-0);transition:grid-template-columns .2s ease}.layout.chat-open{padding-bottom:0}.panel{min-width:0;min-height:0;overflow:hidden;position:relative}.resizer{background:transparent;position:relative;cursor:col-resize}.resizer:before{content:"";position:absolute;inset:0;background:var(--border);opacity:.4;transition:opacity var(--transition),background var(--transition)}.resizer:hover:before{background:var(--accent);opacity:1}.resizer.dragging:before{background:var(--accent);opacity:1}.panel-sidebar{background:var(--bg-1);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sidebar-section{border-bottom:1px solid var(--border)}.sidebar-section:last-child{border-bottom:0}.sidebar-tree-section{flex:1;min-height:0;display:flex;flex-direction:column}.sidebar-chat-section{flex-shrink:0}.sidebar-section-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--text-mute);background:var(--bg-1);user-select:none}.sidebar-actions{display:flex;gap:4px}.chat-toggle-header{padding:6px 8px}.chat-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;background:transparent;border:0;cursor:pointer;color:var(--text);font-size:12px;font-weight:600;padding:6px 8px;border-radius:var(--radius-sm)}.chat-toggle:hover{background:var(--bg-2)}.chat-toggle-arrow{transition:transform var(--transition);color:var(--text-dim)}.chat-toggle.collapsed .chat-toggle-arrow{transform:rotate(-90deg)}.project-list{padding:6px 6px 8px}.project-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--radius-sm);cursor:pointer;color:var(--text);font-size:13px;transition:background var(--transition);position:relative}.project-item:hover{background:var(--bg-2)}.project-item.active{background:var(--accent-soft);color:var(--text);box-shadow:inset 2px 0 0 var(--accent)}.project-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-item-meta{font-size:11px;color:var(--text-mute)}.project-item-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--transition)}.project-item:hover .project-item-actions{opacity:1}.project-item .mini-icon{background:transparent;border:0;color:var(--text-dim);cursor:pointer;padding:2px 4px;border-radius:4px;font-size:12px}.project-item .mini-icon:hover{background:var(--bg-3);color:var(--text)}.project-item .mini-icon.danger:hover{color:var(--error)}.project-empty{padding:14px 12px;color:var(--text-mute);font-size:12px;text-align:center;font-style:italic}.file-tree{flex:1;min-height:0;overflow:auto;padding:4px 0 12px;font-size:13px}.tree-item{display:flex;align-items:center;gap:4px;padding:4px 8px 4px var(--depth, 0px);cursor:pointer;user-select:none;color:var(--text);border-left:2px solid transparent;position:relative}.tree-item:hover{background:var(--bg-2)}.tree-item.active{background:var(--cyan-soft);border-left-color:var(--accent-2)}.tree-item.flash{animation:flash 1.4s ease}@keyframes flash{0%,to{background:transparent}20%{background:#8b5cf666}}.tree-toggle{width:16px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-mute);font-size:10px;flex-shrink:0}.tree-icon{width:18px;text-align:center;flex-shrink:0;font-size:13px}.tree-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-item-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--transition)}.tree-item:hover .tree-item-actions{opacity:1}.tree-item .mini-icon{background:transparent;border:0;color:var(--text-dim);cursor:pointer;padding:1px 4px;font-size:11px;border-radius:3px}.tree-item .mini-icon:hover{background:var(--bg-3);color:var(--text)}.tree-children{display:block}.tree-children.collapsed{display:none}.panel-editor{background:var(--bg-0);display:flex;flex-direction:column;border-right:1px solid var(--border)}.tabs{display:flex;height:var(--tabbar-h);background:var(--bg-1);border-bottom:1px solid var(--border);overflow-x:auto;overflow-y:hidden;flex-shrink:0}.tab{display:inline-flex;align-items:center;gap:6px;padding:0 10px;height:100%;background:transparent;border:0;border-right:1px solid var(--border);color:var(--text-dim);font-size:12px;cursor:pointer;white-space:nowrap;position:relative;flex-shrink:0}.tab:hover{background:var(--bg-2);color:var(--text)}.tab.active{background:var(--bg-0);color:var(--text)}.tab.active:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--accent)}.tab .tab-icon{font-size:12px}.tab .tab-close{margin-left:4px;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:3px;color:var(--text-mute);font-size:12px}.tab .tab-close:hover{background:var(--bg-3);color:var(--text)}.tab.dirty .tab-name:after{content:" \2022";color:var(--warning)}.editor-host{flex:1;min-height:0;min-height:200px;position:relative}.editor-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-mute);font-size:14px;pointer-events:none}.editor-placeholder.hidden{display:none}.panel-preview{background:var(--bg-0);display:flex;flex-direction:column;overflow:hidden}.preview-toolbar{display:flex;align-items:center;gap:8px;height:var(--tabbar-h);padding:0 10px;background:var(--bg-1);border-bottom:1px solid var(--border);flex-shrink:0}.device-selector{display:flex;gap:2px}.dev-btn{background:var(--bg-2);border:1px solid var(--border-2);color:var(--text-dim);width:30px;height:26px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;transition:var(--transition)}.dev-btn:hover{color:var(--text)}.dev-btn.active{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.preview-url{flex:1;color:var(--text-mute);font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px}.preview-actions{display:flex;gap:4px}.preview-stage{flex:1;display:flex;align-items:flex-start;justify-content:center;background:repeating-conic-gradient(#0e1530 0% 25%,#0b1020 0% 50%) 0 0 / 24px 24px;overflow:auto;padding:16px}.preview-frame{background:#fff;border:1px solid var(--border-2);border-radius:var(--radius);width:100%;height:100%;min-height:300px;min-height:320px;box-shadow:var(--shadow-2);transition:width var(--transition),height var(--transition)}.preview-frame.device-tablet{width:768px;max-width:100%}.preview-frame.device-mobile{width:375px;max-width:100%}.preview-frame.device-desktop{width:100%}.chat-drawer{position:fixed;left:0;right:0;bottom:0;height:var(--chat-h);background:var(--bg-1);border-top:1px solid var(--border);box-shadow:0 -8px 30px #00000073;display:flex;flex-direction:column;z-index:50;transform:translateY(100%);transition:transform .2s ease;resize:none}.chat-drawer.open{transform:translateY(0)}.chat-drawer-handle{position:absolute;top:-4px;left:0;right:0;height:8px;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.chat-handle-bar{width:48px;height:4px;background:var(--border-2);border-radius:4px}.chat-drawer-handle:hover .chat-handle-bar{background:var(--accent)}.chat-header{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.chat-title{font-weight:600;font-size:13px}.chat-quick-actions{display:flex;gap:6px;flex:1;overflow-x:auto}.chip{background:var(--bg-2);border:1px solid var(--border-2);color:var(--text);font-size:12px;padding:4px 10px;border-radius:999px;cursor:pointer;white-space:nowrap;transition:var(--transition)}.chip:hover{background:var(--accent-soft);border-color:var(--accent)}.chat-messages{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px;background:var(--bg-0)}.chat-msg{max-width:80%;padding:8px 12px;border-radius:var(--radius);font-size:13px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.chat-msg.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px}.chat-msg.assistant{align-self:flex-start;background:var(--bg-2);border:1px solid var(--border-2);border-bottom-left-radius:4px}.chat-msg.system{align-self:center;background:transparent;color:var(--text-dim);font-style:italic;font-size:12px;border:1px dashed var(--border-2)}.chat-msg pre{background:var(--bg-0);padding:8px;border-radius:var(--radius-sm);overflow-x:auto;font-family:var(--mono);font-size:12px;margin:6px 0 0}.chat-msg .files-changed{margin-top:6px;font-size:12px;color:var(--accent-2)}.chat-msg .files-changed ul{margin-top:4px}.chat-msg .files-changed li{font-family:var(--mono)}.chat-form{display:flex;gap:8px;padding:8px 10px;background:var(--bg-1);border-top:1px solid var(--border);flex-shrink:0}.chat-input{flex:1;resize:none;background:var(--bg-2);color:var(--text);border:1px solid var(--border-2);border-radius:var(--radius);padding:8px 10px;font-family:var(--font);font-size:13px;outline:none;transition:border-color var(--transition)}.chat-input:focus{border-color:var(--accent)}.chat-send{background:var(--accent);color:#fff;border:0;border-radius:var(--radius);width:44px;cursor:pointer;font-size:16px;transition:var(--transition)}.chat-send:hover{filter:brightness(1.15)}.chat-send[disabled]{opacity:.5;cursor:not-allowed}.chat-busy{color:var(--accent-2);font-size:12px;padding:4px 12px}.modal-root{position:fixed;inset:0;display:none;z-index:9000}.modal-root.open{display:flex;align-items:center;justify-content:center}.modal-backdrop{position:absolute;inset:0;background:#0009;backdrop-filter:blur(2px)}.modal{position:relative;background:var(--bg-2);border:1px solid var(--border-2);border-radius:var(--radius-lg);padding:20px;width:min(440px,92vw);box-shadow:var(--shadow-2);animation:modal-in .18s ease}@keyframes modal-in{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.modal-title{font-size:16px;font-weight:700;margin-bottom:12px}.modal-body{display:flex;flex-direction:column;gap:12px}.modal-row{display:flex;flex-direction:column;gap:6px}.modal-row label{font-size:12px;color:var(--text-dim);font-weight:600}.modal-row input[type=text],.modal-row select{background:var(--bg-0);color:var(--text);border:1px solid var(--border-2);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;font-family:var(--font);outline:none}.modal-row input[type=text]:focus,.modal-row select:focus{border-color:var(--accent)}.template-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.template-card{background:var(--bg-1);border:1px solid var(--border-2);border-radius:var(--radius);padding:10px;cursor:pointer;text-align:center;font-size:12px;color:var(--text);transition:var(--transition)}.template-card:hover{border-color:var(--accent);background:var(--bg-elev)}.template-card.selected{border-color:var(--accent);background:var(--accent-soft)}.template-card .tpl-icon{font-size:22px;margin-bottom:4px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}.btn{padding:8px 14px;border-radius:var(--radius-sm);font-size:13px;cursor:pointer;border:1px solid var(--border-2);background:var(--bg-2);color:var(--text);transition:var(--transition)}.btn:hover{background:var(--bg-3)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.1)}.btn.danger{background:var(--error);border-color:var(--error);color:#fff}.btn.danger:hover{filter:brightness(1.1)}.context-menu{position:fixed;z-index:9500;background:var(--bg-2);border:1px solid var(--border-2);border-radius:var(--radius);box-shadow:var(--shadow-2);padding:4px;min-width:180px;font-size:13px}.context-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--radius-sm);cursor:pointer;color:var(--text)}.context-item:hover{background:var(--bg-3)}.context-item.danger{color:var(--error)}.context-item.danger:hover{background:#ef444426}.context-sep{height:1px;background:var(--border);margin:4px 0}@media (max-width: 1099px){.mobile-tabs{display:flex}.layout{grid-template-columns:1fr;height:calc(100vh - var(--topbar-h) - 40px)}.layout .panel{display:none}.layout.show-sidebar .panel-sidebar,.layout.show-editor .panel-editor,.layout.show-preview .panel-preview{display:flex}.resizer{display:none}.toolbar-center{font-size:12px}.current-project{max-width:30ch}.chat-drawer{height:55vh;max-height:520px}}@media (max-width: 600px){.toolbar{padding:0 6px;gap:6px}.icon-btn{padding:6px 8px;font-size:12px}.brand-name{display:none}.template-grid{grid-template-columns:1fr}}.editor-host .monaco-editor,.editor-host .monaco-editor .overflow-guard{border-radius:0}.editor-host .monaco-editor .minimap{background:var(--bg-0)}
