:root{--color-bg-base:#f4f7fb;--color-bg-toolbar:#ffffff;--color-bg-status:#eef3f8;--color-border:#d8e1eb;--color-border-active:#aebdcb;--color-text-primary:#18212f;--color-text-secondary:#526173;--color-text-muted:#7d8a99;--color-accent:#2563eb;--color-accent-hover:#1d4ed8;--color-danger:#dc2626;--color-danger-hover:#b91c1c;--color-success:#15803d;--font-sans:"Outfit",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-mono:"JetBrains Mono","SF Mono",Menlo,Consolas,monospace}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;width:100%;overflow:hidden;background-color:var(--color-bg-base);color:var(--color-text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:has(.tutorial-page){overflow:hidden}.cad-theme{display:flex;flex-direction:column;height:100vh}.auth-view,.boot-view,.dashboard-view{min-height:100vh;width:100%;background:radial-gradient(circle at top left,rgba(37,99,235,.12),transparent 32rem),var(--color-bg-base);color:var(--color-text-primary)}.boot-view{display:grid;place-items:center;grid-gap:18px;gap:18px;align-content:center;padding:24px}.boot-brand{margin:0}.boot-spinner{width:28px;height:28px;border:3px solid rgba(37,99,235,.18);border-top:3px solid var(--color-accent);border-radius:50%;animation:ai-spin .7s linear infinite}.auth-view{display:grid;place-items:center;padding:24px}.auth-panel{width:min(380px,100%);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 18px 45px rgba(15,23,42,.12);display:flex;flex-direction:column;gap:14px;padding:28px}.auth-brand{margin:0 0 8px}.auth-panel label{font-size:.88rem;font-weight:700;color:var(--color-text-secondary)}.auth-panel input{width:100%;border:1px solid var(--color-border);border-radius:6px;background:#ffffff;color:var(--color-text-primary);font:500 1rem var(--font-sans);padding:10px 12px;outline:none}.auth-panel input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)}.auth-error,.dashboard-status{color:var(--color-danger);font-size:.86rem;line-height:1.4}.dashboard-view{overflow:auto;padding:32px}.dashboard-shell{width:min(1180px,100%);margin:0 auto}.dashboard-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.dashboard-header-copy p{margin-top:8px;color:var(--color-text-secondary);font-size:.95rem}.dashboard-project-count{margin-top:6px!important;color:var(--color-text-muted)!important;font-size:.82rem!important;font-weight:600}.dashboard-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.dashboard-empty{background:var(--color-bg-panel);border:1px dashed var(--color-border-active);border-radius:12px;padding:48px 28px;text-align:center;margin-bottom:24px}.dashboard-empty h2{font-size:1.25rem;margin-bottom:8px;color:var(--color-text-primary)}.dashboard-empty p{color:var(--color-text-secondary);margin-bottom:20px}.dashboard-empty-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:16px;gap:16px}.project-card{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:10px;padding:14px;box-shadow:0 10px 24px rgba(15,23,42,.07);display:flex;flex-direction:column;gap:10px;min-height:230px}.project-thumbnail{width:100%;height:150px;border:1px solid var(--color-border);border-radius:8px;background:#f8fafc;overflow:hidden;cursor:pointer;display:grid;place-items:center;padding:0;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.project-thumbnail:hover{border-color:var(--color-accent);box-shadow:0 10px 22px rgba(37,99,235,.12);transform:translateY(-1px)}.project-thumbnail-canvas{width:100%;height:100%;display:block}.project-thumbnail-status{color:var(--color-text-muted);font-size:.82rem;padding:16px;text-align:center}.project-thumbnail-status.is-error{color:var(--color-danger)}.project-card h2{color:var(--color-text-primary);font-size:1.05rem;line-height:1.25;overflow-wrap:anywhere}.project-card p{color:var(--color-text-muted);font-size:.82rem}.project-card pre{flex:1 1;background:#f8fafc;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-secondary);font:.78rem/1.45 var(--font-mono);overflow:hidden;padding:10px;white-space:pre-wrap}.project-card-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.project-card-actions .btn{font-size:.78rem;padding:5px 10px}.toolbar{height:52px;background-color:var(--color-bg-toolbar);padding:0 12px;box-shadow:0 1px 0 rgba(15,23,42,.04);z-index:10;flex-shrink:0}.toolbar,.toolbar-brand{display:flex;align-items:center;gap:8px}.toolbar-brand{margin-right:4px}.toolbar-brand-btn{background:transparent;border:0;cursor:pointer;padding:4px 6px;border-radius:6px;flex-shrink:0}.toolbar-brand-btn:hover{background:#f1f5f9}.toolbar-brand h1{font-size:1.05rem;font-weight:700;letter-spacing:.3px;background:linear-gradient(135deg,#2563eb,#0f766e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.toolbar-brand .logo{color:#2563eb}.toolbar-divider{width:1px;height:22px;background-color:var(--color-border);margin:0 2px;flex-shrink:0}.toolbar-section{display:flex;align-items:center;gap:6px;flex-shrink:0}.toolbar-section.right-section{margin-left:auto}.toolbar-project-select select{min-width:160px;max-width:220px}.toolbar-menu{position:relative}.toolbar-menu-panel{position:absolute;top:calc(100% + 6px);left:0;min-width:150px;background:#ffffff;border:1px solid var(--color-border);border-radius:8px;box-shadow:0 12px 28px rgba(15,23,42,.14);padding:6px;z-index:40;display:flex;flex-direction:column;gap:2px}.toolbar-menu-panel button{background:transparent;border:0;border-radius:6px;color:var(--color-text-primary);cursor:pointer;font:600 .85rem var(--font-sans);padding:8px 10px;text-align:left}.toolbar-menu-panel button:hover{background:#f1f5f9}.toolbar-menu-panel button.is-danger{color:var(--color-danger)}.toolbar-menu-panel button.is-danger:hover{background:#fff5f5}.select-wrapper{position:relative}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#ffffff;border:1px solid var(--color-border);color:var(--color-text-primary);padding:6px 32px 6px 12px;border-radius:6px;font-family:var(--font-sans);font-size:.85rem;font-weight:500;cursor:pointer;outline:none;transition:border-color .15s ease,background-color .15s ease}select:hover{border-color:var(--color-border-active);background-color:#f8fafc}select:focus{border-color:var(--color-accent)}.select-wrapper:after{content:"▾";position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--color-text-secondary);pointer-events:none;font-size:.75rem}.btn{font-family:var(--font-sans);font-size:.85rem;font-weight:600;padding:6px 12px;border-radius:6px;border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;gap:6px;outline:none;transition:all .15s ease;text-decoration:none;white-space:nowrap}.btn-primary{background-color:var(--color-accent);color:#ffffff}.btn-primary:hover{background-color:var(--color-accent-hover)}.btn-secondary{background-color:#ffffff;border-color:var(--color-border);color:var(--color-text-primary)}.btn-secondary:hover{background-color:#f1f5f9;border-color:var(--color-border-active)}.btn-ghost{background:transparent;border-color:transparent;color:var(--color-text-secondary)}.btn-ghost:hover{background:#f1f5f9;color:var(--color-text-primary)}.btn-danger{background-color:#fff5f5;border-color:#fecaca;color:var(--color-danger)}.btn-danger:hover{background-color:var(--color-danger-hover);border-color:var(--color-danger);color:#ffffff}.btn-icon{width:34px;height:32px;padding:0;justify-content:center;font-size:1rem}.btn .icon{font-size:.95rem}@media (max-width:720px){.dashboard-header{flex-direction:column}.dashboard-actions{justify-content:flex-start}}.main-layout{display:flex;flex:1 1;height:calc(100vh - 82px)}.main-layout,.pane{position:relative;overflow:hidden}.pane{height:100%}.left-pane{width:40%;display:flex;flex-direction:column;background-color:var(--color-bg-panel);border-right:1px solid var(--color-border);z-index:2}.right-pane{flex:1 1;background-color:#edf2f7;z-index:1}.resizer{width:6px;background-color:#e6edf5;cursor:col-resize;z-index:3;transition:background-color .2s ease;flex-shrink:0;border-left:1px solid var(--color-border);border-right:1px solid var(--color-border)}.resizer:active,.resizer:hover{background-color:var(--color-accent)}.controls-header,.editor-header{height:36px;background-color:#f8fafc;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0}.panel-title{font-size:.8rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--color-text-secondary)}.save-status-indicator{font-size:.75rem;color:var(--color-text-muted);transition:color .2s ease}.save-status-indicator.saving{color:var(--color-accent)}.editor-container-wrapper{flex:1 1;position:relative;overflow:hidden;background-color:#1e1e1e}.editor-container{position:absolute;top:0;left:0;width:100%;height:100%}.controls-panel-wrapper{border-top:1px solid var(--color-border);background-color:var(--color-bg-panel);display:flex;flex-direction:column;max-height:350px;min-height:100px;flex-shrink:0}.controls-panel{flex:1 1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px}.no-controls-msg{font-size:.85rem;color:var(--color-text-muted);text-align:center;padding:16px 0;line-height:1.4}.no-controls-msg code{background-color:#eaf1f8;padding:2px 4px;border-radius:4px;font-family:var(--font-mono);color:#2563eb}.control-section{display:flex;flex-direction:column;gap:10px}.control-section h3{color:var(--color-text-secondary);font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.control-row{display:grid;grid-template-columns:minmax(120px,150px) 1fr 62px;align-items:center;grid-gap:12px;gap:12px;font-size:.85rem}.control-row.checkbox-row{grid-template-columns:minmax(120px,150px) 1fr}.control-label{display:flex;flex-direction:column;gap:2px;font-weight:500;color:var(--color-text-primary);min-width:0}.control-description{color:var(--color-text-muted);font-size:.72rem;font-weight:400;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.control-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#d8e1eb;height:6px;border-radius:3px;outline:none;width:100%}.control-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--color-accent);cursor:pointer;-webkit-transition:transform .1s ease,background-color .1s ease;transition:transform .1s ease,background-color .1s ease}.control-slider::-webkit-slider-thumb:hover{transform:scale(1.2);background:var(--color-accent-hover)}.control-value{font-family:var(--font-mono);font-size:.8rem;color:var(--color-text-secondary);text-align:right}.control-checkbox-wrapper{display:flex;align-items:center}.control-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;background-color:#ffffff;border:1px solid var(--color-border);border-radius:4px;cursor:pointer;position:relative;outline:none;transition:background-color .15s ease,border-color .15s ease}.control-checkbox:checked{background-color:var(--color-accent);border-color:var(--color-accent)}.control-checkbox:checked:after{content:"✓";position:absolute;left:4px;top:-1px;color:white;font-size:.8rem;font-weight:700}.color-picker-wrapper{display:flex;align-items:center;gap:8px}.control-color-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:32px;height:28px;border:2px solid var(--color-border);border-radius:6px;cursor:pointer;background:none;padding:0;outline:none;transition:border-color .15s ease,transform .1s ease;flex-shrink:0}.control-color-input::-webkit-color-swatch-wrapper{padding:0}.control-color-input::-webkit-color-swatch{border:none;border-radius:4px}.control-color-input:hover{border-color:var(--color-accent);transform:scale(1.08)}.control-color-hex{font-family:var(--font-mono);font-size:.78rem;color:var(--color-text-secondary);letter-spacing:.05em}.ai-panel-wrapper{border-top:1px solid var(--color-border);background-color:var(--color-bg-panel);display:flex;flex-direction:column;flex-shrink:0}.ai-header{height:36px;background-color:#f8fafc;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0}.ai-header:hover{background-color:#eef3f8}.ai-spark{color:var(--color-accent-hover);margin-right:2px}.ai-collapse-icon{color:var(--color-text-secondary);font-size:.8rem;transition:transform .2s ease}.ai-panel-wrapper.collapsed .ai-collapse-icon{transform:rotate(-90deg)}.ai-panel-wrapper.collapsed .ai-body{display:none}.ai-body{padding:12px 16px;display:flex;flex-direction:column;gap:10px}.ai-prompt{width:100%;resize:vertical;min-height:44px;max-height:160px;background-color:#ffffff;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary);font-family:var(--font-sans);font-size:.85rem;line-height:1.4;padding:8px 10px;outline:none;transition:border-color .15s ease}.ai-prompt::placeholder{color:var(--color-text-muted)}.ai-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ai-actions .btn:disabled{opacity:.45;cursor:not-allowed}.ai-status{font-size:.8rem;color:var(--color-text-secondary);display:flex;align-items:center;gap:8px;min-height:18px}.ai-status.is-error{color:var(--color-danger)}.ai-status.is-loading{color:var(--color-accent-hover)}.ai-spinner{width:12px;height:12px;border:2px solid rgba(37,99,235,.18);border-top:2px solid var(--color-accent-hover);border-radius:50%;animation:ai-spin .7s linear infinite;flex-shrink:0}@keyframes ai-spin{to{transform:rotate(1turn)}}.ai-explanation{font-size:.8rem;color:var(--color-text-secondary);background-color:#f8fafc;border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:4px;padding:8px 10px;line-height:1.45}.viewport-container{width:100%;height:100%;position:absolute;top:0;left:0}.status-bar{height:30px;background-color:var(--color-bg-status);border-top:1px solid var(--color-border);padding:0 16px;font-size:.75rem;color:var(--color-text-secondary);z-index:10;flex-shrink:0}.status-bar,.status-group{display:flex;align-items:center}.status-group{gap:6px}.status-group.push-right{margin-left:auto}.status-divider{width:1px;height:14px;background-color:var(--color-border);margin:0 12px}.status-label{color:var(--color-text-muted)}.status-value{font-weight:600}.status-idle{color:var(--color-text-secondary)}.status-rendering{color:var(--color-accent-hover);animation:pulse 1.5s infinite}.status-success{color:var(--color-success)}.status-failed{color:var(--color-danger)}.error-group{margin-left:16px;background-color:rgba(248,113,113,.1);padding:2px 8px;border-radius:4px;border:1px solid rgba(248,113,113,.2);max-width:50vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-label{color:var(--color-danger)!important}.error-value{color:var(--color-danger);font-family:var(--font-mono)}.hidden{display:none!important}.tutorial-page{width:100%;height:100vh;overflow-y:auto;background-color:var(--color-bg-base);color:var(--color-text-primary);padding:32px 20px 64px;scroll-behavior:smooth}.tutorial-container{max-width:1280px;margin:0 auto}.tutorial-header{border-bottom:1px solid var(--color-border);padding-bottom:24px;margin-bottom:24px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.tutorial-header h1{font-size:2rem;font-weight:700;background:linear-gradient(135deg,#38bdf8,#0369a1);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.tutorial-subtitle{margin:6px 0 0;color:var(--color-text-muted);max-width:42rem;line-height:1.45}.back-link{text-decoration:none;font-weight:600;color:var(--color-text-secondary);transition:color .15s ease;display:inline-flex;align-items:center;gap:6px;flex-shrink:0;white-space:nowrap}.back-link:hover{color:var(--color-accent-hover)}.tutorial-toc{background:#ffffff;border:1px solid var(--color-border);border-radius:10px;padding:16px 20px 18px;margin-bottom:28px}.tutorial-toc-title{margin:0 0 10px!important;font-size:.78rem!important;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted)!important}.tutorial-toc ol{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:4px 16px;gap:4px 16px}.tutorial-toc li,.tutorial-toc ol{margin:0!important}.tutorial-toc a{color:var(--color-text-secondary);text-decoration:none;font-size:.9rem;line-height:1.4;display:inline-block;padding:4px 0}.tutorial-toc a:hover{color:var(--color-accent)}.tutorial-page h2{color:#0284c7;font-size:1.35rem;margin-top:48px;margin-bottom:10px;border-bottom:1px solid rgba(56,189,248,.2);padding-bottom:6px;scroll-margin-top:24px}.tutorial-page h3{font-size:1.05rem;margin-top:28px;margin-bottom:6px;color:var(--color-text-primary)}.tutorial-page .sig-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.tutorial-page .sig{font-family:var(--font-mono);font-size:.78rem;background:rgba(56,189,248,.1);border:1px solid rgba(56,189,248,.25);color:#0284c7;padding:2px 10px;border-radius:6px}.tutorial-page p{color:var(--color-text-secondary);margin-bottom:12px;line-height:1.55;font-size:.95rem}.tutorial-page code{background-color:#1e1e1e;padding:2px 6px;border-radius:4px;font-family:var(--font-mono);font-size:.85rem;color:#38bdf8;border:1px solid var(--color-border)}.tutorial-page pre{background-color:#1a1a1a;border:0;border-radius:0;padding:14px 16px;margin:0;overflow:auto;flex:1 1;min-height:0}.tutorial-page pre code{background-color:transparent;padding:0;color:#e2e8f0;font-size:.8rem;line-height:1.5;border:none;white-space:pre}.tutorial-page ol,.tutorial-page ul{margin-left:20px;margin-bottom:16px;color:var(--color-text-secondary)}.tutorial-page li{margin-bottom:8px;line-height:1.5}.tutorial-page .highlight-box,.tutorial-page .tip-box{background-color:rgba(37,99,235,.06);border-left:3px solid var(--color-accent);padding:12px 14px;border-radius:0 8px 8px 0;margin:12px 0 16px;display:flex;gap:10px;align-items:flex-start}.tutorial-page .tip-label{flex-shrink:0;font:700 .7rem var(--font-sans);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent);background:rgba(37,99,235,.12);padding:3px 8px;border-radius:4px;margin-top:1px}.tutorial-page .highlight-box p,.tutorial-page .tip-box p{margin-bottom:0;color:var(--color-text-primary);font-size:.9rem}.tutorial-entry,.tutorial-section{margin-bottom:8px}.tutorial-example{border:1px solid var(--color-border);border-radius:10px;margin:10px 0 28px;overflow:hidden;background:#ffffff}.tutorial-example-split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);min-height:280px}.tutorial-example-code,.tutorial-example-preview{display:flex;flex-direction:column;min-width:0;min-height:280px}.tutorial-example-code{border-right:1px solid var(--color-border);background:#1a1a1a}.tutorial-example-label{flex-shrink:0;font:700 .68rem var(--font-sans);letter-spacing:.06em;text-transform:uppercase;padding:8px 12px;border-bottom:1px solid var(--color-border)}.tutorial-example-code .tutorial-example-label{color:#94a3b8;background:#141414;border-bottom-color:#2a2a2a}.tutorial-example-preview .tutorial-example-label{color:var(--color-text-muted);background:#eef3f8}.tutorial-preview{background:#f8fafc;flex:1 1;min-height:240px;position:relative}.tutorial-preview-stage{min-height:240px;height:100%;width:100%}.tutorial-preview-canvas{display:block;height:auto;width:100%;touch-action:none}.tutorial-preview-status{color:var(--color-text-muted);display:grid;inset:0;margin:0;padding:24px;place-items:center;position:absolute;text-align:center;font-size:.88rem;pointer-events:none}.tutorial-examples-folder{margin-top:40px;padding-bottom:40px}.examples-folder-list{display:flex;flex-direction:column;gap:10px}.examples-folder-item{border-top:1px solid var(--color-border);padding-top:12px}.examples-folder-heading{align-items:baseline;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.examples-folder-heading h3{margin:0}.examples-folder-heading span{color:var(--color-text-muted);font:.78rem var(--font-mono);overflow-wrap:anywhere;text-align:right}.tutorial-page .color-swatches{display:flex;gap:6px;margin-bottom:12px}.tutorial-page .swatch{width:18px;height:18px;border-radius:50%;border:1px solid rgba(255,255,255,.15);flex-shrink:0}@media (max-width:900px){.tutorial-example-split{grid-template-columns:1fr}.tutorial-example-code{border-right:0;border-bottom:1px solid var(--color-border);max-height:320px}.tutorial-example-preview{min-height:260px}.tutorial-header{flex-direction:column}}@keyframes pulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.controls-panel::-webkit-scrollbar{width:6px}.controls-panel::-webkit-scrollbar-track{background:transparent}.controls-panel::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.controls-panel::-webkit-scrollbar-thumb:hover{background:#94a3b8}dialog{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:12px;color:var(--color-text-primary);max-width:650px;width:90%;max-height:80vh;padding:0;box-shadow:0 20px 25px -5px rgba(0,0,0,.5),0 10px 10px -5px rgba(0,0,0,.4);outline:none}dialog::-webkit-backdrop{background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog::backdrop{background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog-header{padding:16px 24px;background-color:var(--color-bg-toolbar);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.dialog-header h2{font-size:1.1rem;font-weight:700;color:var(--color-text-primary)}.dialog-body{padding:24px;overflow-y:auto;max-height:calc(80vh - 120px);font-size:.9rem;line-height:1.6}.dialog-body h3{margin:20px 0 8px;color:var(--color-accent);font-size:1.05rem}.dialog-body h3:first-of-type{margin-top:0}.dialog-body p{color:var(--color-text-secondary);margin-bottom:8px}.dialog-body code{background-color:#eaf1f8;padding:2px 6px;border-radius:4px;font-family:var(--font-mono);font-size:.85rem;color:var(--color-accent)}.dialog-body pre{background-color:#f8fafc;border:1px solid var(--color-border);border-radius:8px;padding:14px;margin:8px 0 20px;overflow-x:auto}.dialog-body pre code{background-color:transparent;padding:0;color:var(--color-text-primary);font-size:.85rem}.btn-close-dialog{background:transparent;border:none;color:var(--color-text-secondary);font-size:1.5rem;cursor:pointer;line-height:1;outline:none;transition:color .15s ease}.btn-close-dialog:hover{color:var(--color-danger)}:root{--color-bg-base:#eef1f6;--color-bg-panel:#ffffff;--color-bg-toolbar:rgba(255,255,255,0.96);--color-bg-status:#f7f8fa;--color-border:#dfe3ea;--color-border-active:#bac3d0;--color-text-primary:#171b25;--color-text-secondary:#596273;--color-text-muted:#8b94a4;--color-accent:#6558e8;--color-accent-hover:#5145cd;--color-accent-soft:#f0eeff;--color-success:#16855b;--font-sans:"Outfit",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--shadow-window:0 16px 50px rgba(26,32,44,0.12)}.ui-icon{display:block;height:17px;width:17px;flex:0 0 auto}.toolbar-brand{gap:10px;margin:0}.toolbar-brand>span:last-child{display:flex;flex-direction:column;line-height:1.05}.toolbar-brand strong{color:#171b25;font-size:1.02rem;font-weight:750;letter-spacing:-.02em}.toolbar-brand small{color:var(--color-text-muted);font-size:.65rem;font-weight:600;letter-spacing:.06em;margin-top:4px;text-transform:uppercase}.brand-mark{align-items:center;background:linear-gradient(145deg,#7c6ff0,#4f46b8);border-radius:10px;box-shadow:0 6px 14px rgba(101,88,232,.25);color:#fff;display:inline-flex;height:34px;justify-content:center;width:34px}.brand-mark .ui-icon{height:20px;width:20px}.toolbar-brand.is-compact .brand-mark{border-radius:8px;height:30px;width:30px}.toolbar-brand.is-compact small{display:none}.auth-view,.boot-view,.dashboard-view{background:radial-gradient(circle at 16% 4%,rgba(101,88,232,.13),transparent 31rem),radial-gradient(circle at 88% 92%,rgba(60,184,167,.08),transparent 28rem),#f4f5f8}.auth-panel{border-radius:18px;box-shadow:var(--shadow-window);gap:12px;padding:34px}.auth-intro{border-bottom:1px solid var(--color-border);margin:10px 0 6px;padding-bottom:18px}.auth-intro h2,.dashboard-header-copy h2{font-size:1.35rem;letter-spacing:-.02em;margin-bottom:4px}.auth-intro p{color:var(--color-text-secondary);font-size:.88rem;line-height:1.45}.dashboard-view{padding:44px 36px}.dashboard-header{align-items:center;border-bottom:1px solid var(--color-border);margin-bottom:28px;padding-bottom:24px}.dashboard-header-copy .toolbar-brand{margin-bottom:24px}.dashboard-header-copy>p{max-width:580px}.dashboard-empty{background:rgba(255,255,255,.72);border:1px solid var(--color-border);border-radius:18px;box-shadow:0 12px 34px rgba(28,36,50,.06)}.empty-icon{align-items:center;background:var(--color-accent-soft);border-radius:14px;color:var(--color-accent);display:inline-flex;height:48px;justify-content:center;margin-bottom:16px;width:48px}.empty-icon .ui-icon{height:23px;width:23px}.project-card{border-radius:14px;box-shadow:0 8px 25px rgba(28,36,50,.055);padding:12px;transition:box-shadow .18s ease,transform .18s ease}.project-card:hover{box-shadow:0 14px 32px rgba(28,36,50,.1);transform:translateY(-2px)}.toolbar{background:var(--color-bg-toolbar);border-bottom:1px solid var(--color-border);box-shadow:0 2px 14px rgba(23,27,37,.06);gap:14px;height:68px;overflow-x:auto;overflow-y:visible;padding:0 14px}.toolbar-brand-btn{border-right:1px solid var(--color-border);border-radius:0;margin:0;padding:0 18px 0 2px}.toolbar-brand-btn:hover{background:transparent;opacity:.8}.project-identity{display:flex;flex-direction:column;gap:3px;min-width:160px}.command-label{color:var(--color-text-muted);font-size:.61rem;font-weight:700;letter-spacing:.07em;padding-left:2px;text-transform:uppercase}.toolbar-project-select select{background:transparent;border:0;border-radius:5px;font-size:.9rem;font-weight:650;max-width:190px;min-width:150px;padding:3px 26px 3px 2px}.toolbar-project-select:after{right:5px}.command-bar,.command-group,.toolbar-end{align-items:center;display:flex}.command-bar{gap:10px}.command-group{border-left:1px solid var(--color-border);gap:2px;padding-left:10px}.toolbar-end{gap:4px;margin-left:auto}.btn{border-radius:8px;font-size:.82rem;min-height:34px;padding:7px 11px}.btn-primary{background:linear-gradient(180deg,#7165ea,#5b4ed4);box-shadow:0 4px 10px rgba(101,88,232,.2)}.btn-primary:hover{background:linear-gradient(180deg,#675ae1,#5044c5)}.btn-command,.btn-icon-only{background:transparent;border-color:transparent;color:var(--color-text-secondary)}.btn-command:hover,.btn-icon-only:hover{background:#f0f2f6;color:var(--color-text-primary)}.btn-icon-only{justify-content:center;padding:7px;width:35px}.command-select{align-items:center;display:flex}.command-select>.ui-icon{color:var(--color-text-secondary);left:9px;pointer-events:none;position:absolute;z-index:1}.command-select select{background:transparent;border-color:transparent;color:var(--color-text-secondary);font-weight:600;padding:7px 27px 7px 31px}.command-select select:hover{background:#f0f2f6;color:var(--color-text-primary)}.toolbar-menu-panel{border-radius:10px;box-shadow:0 18px 40px rgba(23,27,37,.16);top:calc(100% + 12px)}.main-layout{background:#e9edf3;height:calc(100vh - 96px)}.left-pane{background:#fff;box-shadow:5px 0 18px rgba(23,27,37,.055);width:43%}.right-pane{background:#eef1f5}.resizer{background:#dfe3ea;border:0;width:5px}.resizer:active,.resizer:hover{background:var(--color-accent)}.ai-heading,.panel-heading{align-items:center;display:inline-flex;gap:9px;min-width:0}.ai-heading>span:last-child,.panel-heading>span:last-child{display:flex;flex-direction:column;min-width:0}.ai-heading strong,.panel-heading strong{color:var(--color-text-primary);font-size:.78rem;font-weight:700;letter-spacing:0;text-transform:none}.ai-heading small,.panel-heading small{color:var(--color-text-muted);font-size:.65rem;font-weight:500;line-height:1.2;margin-top:2px}.controls-header,.editor-header,.viewport-header{background:#fafbfc;border-bottom:1px solid var(--color-border);height:46px;padding:0 14px;align-items:center;display:flex;flex-shrink:0;justify-content:space-between}.editor-container-wrapper{background:#171922;min-height:170px}.ai-panel-wrapper{background:linear-gradient(180deg,#fbfaff,#fff);border-bottom:1px solid var(--color-border);border-top:0;max-height:340px;overflow-y:auto}.ai-header{background:transparent;border-bottom:0;height:58px;padding:0 14px}.ai-header:hover{background:rgba(101,88,232,.04)}.ai-heading-icon{align-items:center;background:var(--color-accent-soft);border-radius:9px;color:var(--color-accent);display:inline-flex;height:32px;justify-content:center;width:32px}.ai-heading strong{font-size:.9rem}.ai-collapse-icon{transform:rotate(0)}.ai-panel-wrapper.collapsed .ai-collapse-icon{transform:rotate(180deg)}.ai-body{gap:9px;padding:0 14px 14px}.ai-prompt{background:#fff;border-color:#d4d0f5;border-radius:11px;box-shadow:0 3px 12px rgba(75,62,170,.06);font-size:.86rem;min-height:72px;padding:11px 12px;resize:none}.ai-prompt:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px rgba(101,88,232,.11)}.ai-suggestions{display:flex;gap:6px;overflow-x:auto}.ai-suggestions button{background:#f6f5fd;border:1px solid #e2def8;border-radius:999px;color:#5d55a1;cursor:pointer;flex:0 0 auto;font:600 .7rem var(--font-sans);padding:4px 9px}.ai-suggestions button:hover{background:var(--color-accent-soft);border-color:#c9c2f3}.btn-ai-primary{background:#171b25;border-color:#171b25;color:#fff}.btn-ai-primary:hover{background:#2a3040}.ai-shortcut{color:var(--color-text-muted);font-size:.67rem;margin-left:auto}.ai-status{background:#f4f5f8;border-radius:7px;min-height:28px;padding:6px 8px}.ai-status.is-ok{background:#edf8f3;color:var(--color-success)}.ai-status.is-error{background:#fff1f1}.ai-explanation{background:#f7f6fc;border:0;border-radius:7px;padding:7px 9px}.ai-debug-details{color:var(--color-text-muted);font-size:.7rem}.ai-debug-details summary{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ai-debug-details pre{background:#f4f5f8;border-radius:7px;color:var(--color-text-secondary);font:.68rem/1.45 var(--font-mono);margin-top:6px;padding:8px;white-space:pre-wrap}.controls-panel-wrapper{max-height:260px;min-height:94px}.controls-panel{gap:12px;padding:12px 14px}.no-controls-msg{padding:7px 0;text-align:left}.viewport-header{left:0;position:absolute;right:0;top:0;z-index:2}.viewport-hint{color:var(--color-text-muted);font-size:.68rem}.viewport-container{bottom:0;height:auto;top:46px}.status-bar{background:#fafbfc;height:28px;padding:0 12px}.status-dot{background:#a5adba;border-radius:50%;height:7px;width:7px}.status-group:has(.status-success) .status-dot{background:var(--color-success)}.error-group{background:#fff1f1;border-color:#ffd7d7}@media (max-width:1180px){.command-group:nth-child(2),.toolbar-end .btn-command span{display:none}}@media (max-width:820px){.command-bar,.project-identity,.toolbar-brand.is-compact>span:last-child{display:none}.left-pane{width:55%}.toolbar-end{margin-left:auto}.viewport-hint{display:none}}