:root{--font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", ui-monospace, monospace;--fs-xs: 11px;--fs-sm: 12px;--fs-md: 13px;--fs-lg: 14px;--fs-xl: 16px;--fs-2xl: 20px;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-light: #dbeafe;--color-primary-50: #eff6ff;--color-bg: #f8fafc;--color-surface: #ffffff;--color-surface-2: #f1f5f9;--color-surface-3: #e2e8f0;--color-border: #e2e8f0;--color-border-strong: #cbd5e1;--color-text: #0f172a;--color-text-muted: #64748b;--color-text-faint: #94a3b8;--color-success: #10b981;--color-warning: #f59e0b;--color-error: #ef4444;--color-ki: #8b5cf6;--color-ki-light: #ede9fe;--color-canvas-bg: #0f172a;--color-canvas-bg-2: #1e293b;--color-grid-minor: rgba(255,255,255,.06);--color-grid-major: rgba(255,255,255,.12);--color-grid-axis: rgba(96,165,250,.28);--color-online: #10b981;--radius-xs: 3px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--spacing-xs: 4px;--spacing-sm: 6px;--spacing-md: 10px;--spacing-lg: 14px;--spacing-xl: 20px;--topbar-h: 38px;--ribbon-h: 72px;--leftbar-w: 200px;--rightbar-w: 300px;--cmdline-h: 56px;--status-h: 26px;--canvas-toolbar-h: 38px;--mobile-right-tab-w: 56px;--mobile-topbar-h: 44px;--mobile-ribbon-h: 48px;--drawer-w: min(320px, 88vw);--shadow-sm: 0 1px 2px 0 rgba(15,23,42,.04);--shadow-md: 0 2px 6px -1px rgba(15,23,42,.08), 0 1px 3px -1px rgba(15,23,42,.06);--shadow-lg: 0 10px 20px -4px rgba(15,23,42,.1), 0 4px 8px -2px rgba(15,23,42,.06);--shadow-drawer: -8px 0 24px -4px rgba(15,23,42,.18);--t-fast: .12s cubic-bezier(.2,0,.2,1);--t-base: .2s cubic-bezier(.2,0,.2,1);--t-drawer: .28s cubic-bezier(.32, .72, 0, 1)}[data-theme=dark]{--color-bg: #0b0e14;--color-surface: #11151c;--color-surface-2: #161b24;--color-surface-3: #1d2330;--color-border: #232a36;--color-border-strong: #2f3849;--color-text: #e2e8f0;--color-text-muted: #94a3b8;--color-text-faint: #64748b;--color-primary-light: #1e3a8a;--color-primary-50: #172554;--color-ki-light: #2e1065;--shadow-sm: 0 1px 2px 0 rgba(0,0,0,.3);--shadow-md: 0 2px 6px -1px rgba(0,0,0,.4);--shadow-lg: 0 10px 20px -4px rgba(0,0,0,.5);--shadow-drawer: -8px 0 24px -4px rgba(0,0,0,.6)}*{box-sizing:border-box}*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;font-family:var(--font-sans);font-size:var(--fs-md);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;overflow:hidden;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}body{position:fixed;top:0;right:0;bottom:0;left:0;width:100%}button{font-family:inherit;font-size:inherit;cursor:pointer;background:transparent;border:none;color:inherit;padding:0;-webkit-tap-highlight-color:transparent}input,select,textarea{font-family:inherit;font-size:inherit}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:10px;border:2px solid var(--color-bg)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-faint)}*:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-40px;left:8px;background:var(--color-primary);color:#fff;padding:8px 12px;border-radius:var(--radius-md);z-index:1000;font-weight:500}.skip-link:focus{top:8px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:90;opacity:0;visibility:hidden;transition:opacity var(--t-drawer),visibility 0s linear var(--t-drawer)}.scrim.show{opacity:1;visibility:visible;transition:opacity var(--t-drawer),visibility 0s linear 0s}.app{display:grid;grid-template-rows:var(--topbar-h) var(--ribbon-h) 1fr var(--cmdline-h) var(--status-h);grid-template-columns:100%;height:100vh;height:100dvh;overflow:hidden;background:var(--color-bg)}.topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-md);height:var(--topbar-h);z-index:30;flex-shrink:0}.topbar-left,.topbar-right{display:flex;align-items:center;gap:var(--spacing-sm)}.app-logo{width:24px;height:24px;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-ki) 100%);border-radius:var(--radius-sm);display:grid;place-items:center;color:#fff}.app-logo svg{width:14px;height:14px}.app-name{font-weight:700;font-size:var(--fs-lg);letter-spacing:-.2px}.project-name{display:flex;align-items:center;gap:var(--spacing-xs);font-weight:500;color:var(--color-text);padding:4px 8px;border-radius:var(--radius-sm);transition:background var(--t-fast);background:transparent;border:none}.project-name:hover{background:var(--color-surface-2)}.project-name .caret{color:var(--color-text-faint)}.saved-badge{font-size:var(--fs-xs);color:var(--color-text-muted);padding:2px 8px;background:var(--color-surface-2);border-radius:999px;display:inline-flex;align-items:center;gap:4px}.saved-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--color-success)}.icon-btn-top{width:30px;height:30px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--color-text-muted);transition:all var(--t-fast)}.icon-btn-top:hover{background:var(--color-surface-2);color:var(--color-text)}.icon-btn-top svg{width:16px;height:16px}.icon-btn-top.danger{color:var(--color-error)}.lang-select{height:28px;padding:0 8px;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--color-text);cursor:pointer}.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#f59e0b,#ef4444);color:#fff;display:grid;place-items:center;font-weight:600;font-size:var(--fs-xs);cursor:pointer}.hamburger-btn{display:none;width:36px;height:36px;border-radius:var(--radius-sm);align-items:center;justify-content:center;color:var(--color-text)}.hamburger-btn:hover{background:var(--color-surface-2)}.hamburger-btn svg{width:20px;height:20px}.right-tab-bar,.drawer,.scrim{display:none}.ribbon{background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;height:var(--ribbon-h);z-index:25;flex-shrink:0}.ribbon-tabs{display:flex;height:30px;border-bottom:1px solid var(--color-border);padding:0 var(--spacing-sm);gap:2px;overflow-x:auto;scrollbar-width:none}.ribbon-tabs::-webkit-scrollbar{display:none}.ribbon-tab{display:flex;align-items:center;gap:6px;padding:0 12px;height:100%;font-size:var(--fs-sm);color:var(--color-text-muted);border-bottom:2px solid transparent;margin-bottom:-1px;transition:all var(--t-fast);font-weight:500;flex-shrink:0}.ribbon-tab:hover{color:var(--color-text);background:var(--color-surface-2)}.ribbon-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.ribbon-tab svg{width:14px;height:14px}.ribbon-content{flex:1;display:flex;align-items:center;padding:0 var(--spacing-md);gap:var(--spacing-lg);overflow-x:auto;scrollbar-width:thin}.ribbon-group{display:flex;flex-direction:column;align-items:center;height:100%;padding:4px 0;position:relative}.ribbon-group-btns{display:flex;align-items:center;gap:2px;flex:1}.ribbon-group-label{font-size:10px;color:var(--color-text-faint);text-transform:uppercase;letter-spacing:.4px;border-top:1px solid var(--color-border);width:100%;text-align:center;padding-top:3px;margin-top:2px}.ribbon-divider{width:1px;height:60%;background:var(--color-border);align-self:center;flex-shrink:0}.ribbon-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:44px;height:38px;padding:4px 6px;border-radius:var(--radius-sm);color:var(--color-text);font-size:10px;font-weight:500;transition:all var(--t-fast);flex-shrink:0}.ribbon-btn:hover{background:var(--color-primary-50);color:var(--color-primary)}[data-theme=dark] .ribbon-btn:hover{background:var(--color-surface-3);color:var(--color-primary)}.ribbon-btn:active{transform:scale(.97)}.ribbon-btn svg{width:18px;height:18px}.app-body{display:grid;grid-template-columns:var(--leftbar-w) 1fr var(--rightbar-w);min-height:0;background:var(--color-bg);overflow:hidden;position:relative}.app-body.left-collapsed{grid-template-columns:0 1fr var(--rightbar-w)}.app-body.right-collapsed{grid-template-columns:var(--leftbar-w) 1fr 0}.app-body.both-collapsed{grid-template-columns:0 1fr 0}.leftbar{background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;overflow:hidden;min-width:0}.leftbar-header{padding:var(--spacing-md) var(--spacing-md) var(--spacing-sm);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between}.leftbar-title{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted)}.leftbar-toggle{width:22px;height:22px;display:grid;place-items:center;border-radius:var(--radius-xs);color:var(--color-text-muted);transition:all var(--t-fast)}.leftbar-toggle:hover{background:var(--color-surface-2);color:var(--color-text)}.leftbar-toggle svg{width:14px;height:14px}.tool-section{padding:var(--spacing-sm) var(--spacing-sm);border-bottom:1px solid var(--color-border)}.tool-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-faint);padding:0 6px 6px}.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}.tool-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 4px;border-radius:var(--radius-md);color:var(--color-text-muted);transition:all var(--t-fast);position:relative;min-height:56px}.tool-btn:hover{background:var(--color-surface-2);color:var(--color-text)}.tool-btn.active{background:var(--color-primary);color:#fff;box-shadow:0 2px 4px -1px #2563eb66}.tool-btn svg{width:20px;height:20px;stroke-width:1.8}.tool-btn-label{font-size:10px;font-weight:500;line-height:1;white-space:nowrap}.tool-btn-kbd{position:absolute;top:2px;right:4px;font-size:9px;font-weight:600;color:var(--color-text-faint);background:var(--color-surface-2);border-radius:2px;padding:0 3px;font-family:var(--font-mono);opacity:0;transition:opacity var(--t-fast)}.tool-btn:hover .tool-btn-kbd{opacity:1}.tool-btn.active .tool-btn-kbd{color:#ffffffb3;background:#ffffff26}.leftbar-footer{margin-top:auto;padding:var(--spacing-sm);border-top:1px solid var(--color-border);display:flex;justify-content:space-around}.leftbar-footer-btn{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--color-text-muted);transition:all var(--t-fast)}.leftbar-footer-btn:hover{background:var(--color-surface-2);color:var(--color-text)}.leftbar-footer-btn svg{width:16px;height:16px}.canvas-area{position:relative;background:var(--color-canvas-bg);overflow:hidden;min-width:0;display:flex;flex-direction:column}.canvas-toolbar{position:absolute;bottom:12px;left:50%;transform:translate(-50%);z-index:5;display:flex;align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);height:var(--canvas-toolbar-h);padding:0 4px;gap:2px}.canvas-toolbar-btn{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--color-text);transition:all var(--t-fast)}.canvas-toolbar-btn:hover{background:var(--color-surface-2)}.canvas-toolbar-btn.active{background:var(--color-primary);color:#fff}.canvas-toolbar-btn svg{width:16px;height:16px}.canvas-toolbar-divider{width:1px;height:18px;background:var(--color-border);margin:0 4px}.canvas-zoom-display{font-size:var(--fs-sm);font-weight:600;font-family:var(--font-mono);padding:0 8px;color:var(--color-text);min-width:52px;text-align:center}.canvas-coords{position:absolute;top:12px;left:12px;z-index:5;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:6px 10px;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--color-text);box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:12px}.canvas-coords-label{color:var(--color-text-muted);margin-right:4px}.canvas-coords-val{font-weight:600}.canvas-view-tabs{position:absolute;top:12px;right:12px;z-index:5;display:flex;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.canvas-view-tab{padding:6px 10px;font-size:var(--fs-xs);font-weight:600;color:var(--color-text-muted);border-right:1px solid var(--color-border);transition:all var(--t-fast)}.canvas-view-tab:last-child{border-right:none}.canvas-view-tab:hover{background:var(--color-surface-2);color:var(--color-text)}.canvas-view-tab.active{background:var(--color-primary);color:#fff}.canvas-svg{flex:1;width:100%;height:100%;display:block;cursor:crosshair}.rightbar{background:var(--color-surface);border-left:1px solid var(--color-border);display:flex;flex-direction:column;overflow:hidden;min-width:0}.rightbar-tabs{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.rightbar-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px;font-size:10px;font-weight:500;color:var(--color-text-muted);border-bottom:2px solid transparent;transition:all var(--t-fast);position:relative}.rightbar-tab:hover{color:var(--color-text);background:var(--color-surface)}.rightbar-tab.active{color:var(--color-primary);background:var(--color-surface);border-bottom-color:var(--color-primary)}.rightbar-tab svg{width:18px;height:18px}.rightbar-tab-badge{position:absolute;top:4px;right:8px;background:var(--color-ki);color:#fff;font-size:9px;font-weight:700;border-radius:999px;padding:1px 5px;line-height:1.3}.rightbar-content{flex:1;overflow-y:auto;padding:var(--spacing-md)}.rightbar-panel{display:none}.rightbar-panel.active{display:block}.panel-section{margin-bottom:var(--spacing-lg)}.panel-section-title{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);margin-bottom:var(--spacing-sm);display:flex;align-items:center;justify-content:space-between}.prop-row{display:grid;grid-template-columns:90px 1fr;align-items:center;margin-bottom:var(--spacing-sm);gap:var(--spacing-sm)}.prop-label{font-size:var(--fs-sm);color:var(--color-text-muted)}.prop-input,.prop-select{height:30px;padding:0 8px;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--color-text);width:100%;font-family:inherit}.prop-input:focus,.prop-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.prop-color-row{display:flex;align-items:center;gap:6px}.prop-color-swatch{width:22px;height:22px;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);flex-shrink:0}.prop-swatch-input{width:30px;height:22px;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;cursor:pointer}.layer-list{display:flex;flex-direction:column;gap:2px}.layer-item{display:grid;grid-template-columns:18px 18px 18px 1fr auto;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--radius-sm);font-size:var(--fs-sm);transition:background var(--t-fast)}.layer-item:hover{background:var(--color-surface-2)}.layer-item.active{background:var(--color-primary-50);color:var(--color-primary)}[data-theme=dark] .layer-item.active{background:var(--color-surface-3)}.layer-item-name{font-weight:500}.layer-item-count{font-size:10px;color:var(--color-text-faint);font-family:var(--font-mono)}.layer-vis-btn,.layer-lock-btn,.layer-color-btn{width:18px;height:18px;display:grid;place-items:center;color:var(--color-text-muted);border-radius:var(--radius-xs);transition:all var(--t-fast)}.layer-vis-btn:hover,.layer-lock-btn:hover{background:var(--color-surface-3);color:var(--color-text)}.layer-vis-btn.off{color:var(--color-text-faint);opacity:.4}.layer-vis-btn svg,.layer-lock-btn svg{width:12px;height:12px}.layer-color-btn{padding:0;border:1px solid var(--color-border)}.add-layer-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;height:30px;margin-top:var(--spacing-sm);border:1px dashed var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--fs-sm);transition:all var(--t-fast)}.add-layer-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-50)}[data-theme=dark] .add-layer-btn:hover{background:var(--color-surface-3)}.add-layer-btn svg{width:14px;height:14px}.lib-search{position:relative;margin-bottom:var(--spacing-md)}.lib-search input{width:100%;height:32px;padding:0 8px 0 30px;border:1px solid var(--color-border);background:var(--color-surface-2);border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--color-text)}.lib-search input:focus{outline:none;background:var(--color-surface);border-color:var(--color-primary)}.lib-search-icon{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:var(--color-text-faint)}.lib-search-icon svg{width:14px;height:14px}.lib-categories{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:var(--spacing-md)}.lib-cat{padding:4px 10px;font-size:var(--fs-xs);font-weight:500;border-radius:999px;background:var(--color-surface-2);color:var(--color-text-muted);transition:all var(--t-fast)}.lib-cat:hover{background:var(--color-surface-3);color:var(--color-text)}.lib-cat.active{background:var(--color-primary);color:#fff}.lib-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lib-item{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:8px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:grab;transition:all var(--t-fast)}.lib-item:hover{border-color:var(--color-primary);background:var(--color-primary-50);transform:translateY(-1px);box-shadow:var(--shadow-sm)}[data-theme=dark] .lib-item:hover{background:var(--color-surface-3)}.lib-item-icon{width:100%;aspect-ratio:1;display:grid;place-items:center;background:var(--color-surface);border-radius:var(--radius-sm);color:var(--color-text)}.lib-item-icon svg{width:28px;height:28px}.lib-item-name{font-size:var(--fs-xs);font-weight:500;text-align:center;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ki-header{display:flex;align-items:center;gap:8px;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.ki-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--color-ki) 0%,var(--color-primary) 100%);color:#fff;display:grid;place-items:center}.ki-avatar svg{width:16px;height:16px}.ki-title{font-weight:600;font-size:var(--fs-md)}.ki-status{margin-left:auto;font-size:var(--fs-xs);color:var(--color-success);display:flex;align-items:center;gap:4px}.ki-status:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--color-success)}.ki-suggestions{display:flex;flex-direction:column;gap:4px;margin-bottom:var(--spacing-md)}.ki-suggestion-title{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);margin-bottom:4px}.ki-chip{display:flex;align-items:center;gap:6px;padding:8px 10px;background:var(--color-ki-light);color:var(--color-ki);border-radius:var(--radius-md);font-size:var(--fs-sm);text-align:left;transition:all var(--t-fast);border:1px solid transparent}.ki-chip:hover{background:var(--color-ki);color:#fff;border-color:var(--color-ki)}[data-theme=dark] .ki-chip{background:var(--color-ki-light)}.ki-chip svg{width:14px;height:14px;flex-shrink:0}.ki-chat{display:flex;flex-direction:column;gap:8px;margin-bottom:var(--spacing-md)}.ki-msg{display:flex;gap:6px;align-items:flex-start}.ki-msg-bubble{padding:8px 10px;border-radius:var(--radius-md);font-size:var(--fs-sm);line-height:1.4;max-width:100%}.ki-msg.user .ki-msg-bubble{background:var(--color-primary);color:#fff;border-bottom-right-radius:2px}.ki-msg.assistant .ki-msg-bubble{background:var(--color-surface-2);color:var(--color-text);border-bottom-left-radius:2px}.ki-msg.assistant .ki-msg-bubble strong{color:var(--color-ki)}.ki-typing-dot{width:6px;height:6px;border-radius:50%;background:var(--color-text-muted);animation:ki-typing 1.4s infinite ease-in-out}.ki-typing-dot:nth-child(2){animation-delay:.2s}.ki-typing-dot:nth-child(3){animation-delay:.4s}@keyframes ki-typing{0%,60%,to{opacity:.3;transform:scale(.8)}30%{opacity:1;transform:scale(1)}}.ki-send-btn:disabled{opacity:.5;cursor:not-allowed}.ki-input-wrap{position:relative;display:flex;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:0 4px 0 10px;transition:border-color var(--t-fast)}.ki-input-wrap:focus-within{border-color:var(--color-ki);box-shadow:0 0 0 3px var(--color-ki-light)}.ki-input{flex:1;height:34px;background:transparent;border:none;outline:none;font-size:var(--fs-sm);color:var(--color-text)}.ki-input::placeholder{color:var(--color-text-faint)}.ki-voice-btn,.ki-send-btn{width:28px;height:28px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--color-text-muted);transition:all var(--t-fast)}.ki-voice-btn:hover{background:var(--color-surface-2);color:var(--color-ki)}.ki-send-btn{background:var(--color-ki);color:#fff}.ki-send-btn:hover{background:var(--color-primary)}.ki-voice-btn svg,.ki-send-btn svg{width:14px;height:14px}.cmdline{background:var(--color-surface);border-top:1px solid var(--color-border);display:flex;align-items:stretch;height:var(--cmdline-h);font-family:var(--font-mono);font-size:var(--fs-sm);z-index:20;flex-shrink:0}.cmdline-history{flex:1;padding:6px 12px;overflow-y:auto;display:flex;flex-direction:column-reverse;border-right:1px solid var(--color-border);background:var(--color-surface-2)}.cmdline-history-entry{display:flex;gap:8px;padding:1px 0;line-height:1.4}.cmdline-history-entry .prefix{color:var(--color-primary);font-weight:600}.cmdline-history-entry.info .prefix{color:var(--color-text-muted)}.cmdline-history-entry.warn .prefix{color:var(--color-warning)}.cmdline-history-entry.error .prefix{color:var(--color-error)}.cmdline-history-entry .text{color:var(--color-text)}.cmdline-input-wrap{display:flex;align-items:center;flex:1.4;padding:0 12px;gap:8px}.cmdline-prompt{color:var(--color-primary);font-weight:700;font-size:var(--fs-md)}.cmdline-input{flex:1;background:transparent;border:none;outline:none;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-text)}.cmdline-input::placeholder{color:var(--color-text-faint)}.statusbar{background:var(--color-surface-2);border-top:1px solid var(--color-border);display:flex;align-items:center;height:var(--status-h);padding:0 var(--spacing-md);font-size:var(--fs-xs);color:var(--color-text-muted);z-index:20;flex-shrink:0;overflow:hidden}.status-item{display:flex;align-items:center;gap:4px;padding:0 10px;height:100%;border-right:1px solid var(--color-border);transition:all var(--t-fast);cursor:pointer;white-space:nowrap}.status-item:first-child{padding-left:0}.status-item:last-child{border-right:none;margin-left:auto;padding-right:0}.status-item:hover{background:var(--color-surface-3);color:var(--color-text)}.status-item.active{color:var(--color-primary)}.status-item svg{width:12px;height:12px}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--color-online);display:inline-block}@media (max-width: 1280px){:root{--rightbar-w: 280px;--leftbar-w: 180px}.ribbon-group-label{display:none}.prop-row{grid-template-columns:80px 1fr}}@media (max-width: 1024px){:root{--leftbar-w: 64px;--rightbar-w: 240px}.leftbar-title,.tool-section-label,.tool-btn-label{display:none}.tool-grid{grid-template-columns:1fr 1fr;gap:2px}.tool-btn{padding:10px 4px}.leftbar-header{justify-content:center;padding:6px}.leftbar-toggle,.ribbon-group-label,.canvas-view-tabs,.rightbar-tab span{display:none}.rightbar-tab{padding:10px 2px}.rightbar-tab svg{width:20px;height:20px}}@media (max-width: 768px){:root{--topbar-h: var(--mobile-topbar-h);--ribbon-h: var(--mobile-ribbon-h);--cmdline-h: 44px;--status-h: 32px}.hamburger-btn{display:flex}.app-name,.saved-badge,.lang-select,.topbar>.topbar-right>*:not(.hamburger-btn):not(.icon-btn-top[aria-label=Benachrichtigungen]):not(.avatar){display:none}.topbar{padding:0 8px;gap:6px}.topbar-left{flex:1;min-width:0}.project-name{padding:4px 6px;min-width:0;flex:1}.project-name>span:not(.caret){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-name .caret{display:none}.icon-btn-top{width:34px;height:34px}.ribbon-tab span{display:none}.ribbon-tab{padding:0 12px}.ribbon-tab svg{width:16px;height:16px}.ribbon-content{padding:0 8px;gap:8px;overflow-x:auto}.ribbon-group{display:none}.ribbon-group.compact-mobile{display:flex;flex-direction:row;align-items:center;height:100%;padding:0;gap:2px;flex:1;min-width:0}.ribbon-group.compact-mobile .ribbon-group-btns{flex:1;justify-content:space-around}.ribbon-divider{display:none}.ribbon-btn{min-width:36px}.ribbon-btn span{display:none}.app-body{grid-template-columns:1fr var(--mobile-right-tab-w)}.leftbar,.rightbar{display:none}.right-tab-bar{display:flex;flex-direction:column;background:var(--color-surface);border-left:1px solid var(--color-border);z-index:15}.right-tab-btn{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 2px;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);border-left:3px solid transparent;transition:all var(--t-fast);position:relative;font-size:9px;font-weight:500}.right-tab-btn svg{width:18px;height:18px}.right-tab-btn:hover{background:var(--color-surface-2);color:var(--color-text)}.right-tab-btn.active{color:var(--color-primary);background:var(--color-primary-50);border-left-color:var(--color-primary)}[data-theme=dark] .right-tab-btn.active{background:var(--color-surface-3)}.right-tab-btn-badge{position:absolute;top:4px;right:4px;background:var(--color-ki);color:#fff;font-size:9px;font-weight:700;border-radius:999px;padding:1px 4px;line-height:1.2}.right-tab-btn:last-child{border-bottom:none}.drawer{position:fixed;top:0;bottom:0;width:var(--drawer-w);max-width:88vw;background:var(--color-surface);z-index:100;display:flex;flex-direction:column;box-shadow:var(--shadow-drawer);transition:transform var(--t-drawer);will-change:transform}.drawer-left{left:0;transform:translate(-100%);border-right:1px solid var(--color-border)}.drawer-right{right:0;transform:translate(100%);border-left:1px solid var(--color-border)}.drawer.open{transform:translate(0)}.drawer-header{height:var(--mobile-topbar-h);display:flex;align-items:center;padding:0 12px;border-bottom:1px solid var(--color-border);background:var(--color-surface-2);gap:8px;flex-shrink:0}.drawer-title{font-weight:600;font-size:var(--fs-md);flex:1;color:var(--color-text)}.drawer-close{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--color-text-muted)}.drawer-close:hover{background:var(--color-surface-3);color:var(--color-text)}.drawer-close svg{width:18px;height:18px}.drawer-body{flex:1;overflow-y:auto;padding:var(--spacing-md)}.drawer-left .drawer-body{padding:var(--spacing-sm)}.drawer-left .tool-section{padding:8px}.drawer-left .tool-grid{grid-template-columns:repeat(4,1fr);gap:4px}.drawer-left .tool-btn{padding:10px 4px}.drawer-left .tool-btn-kbd{display:none}.drawer-left .tool-btn-label{display:block}.drawer-left .tool-section-label{display:block;padding:0 6px 6px}.drawer-right .drawer-tabs{display:flex;border-bottom:1px solid var(--color-border);background:var(--color-surface-2);flex-shrink:0}.drawer-right .drawer-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:10px 6px;font-size:var(--fs-xs);font-weight:500;color:var(--color-text-muted);border-bottom:2px solid transparent;transition:all var(--t-fast)}.drawer-right .drawer-tab svg{width:14px;height:14px}.drawer-right .drawer-tab.active{color:var(--color-primary);background:var(--color-surface);border-bottom-color:var(--color-primary)}.drawer-right .drawer-body{padding:var(--spacing-md)}.canvas-coords{font-size:10px;padding:4px 8px;top:8px;left:8px}.canvas-toolbar{bottom:8px;padding:0 2px;gap:0}.canvas-toolbar-btn{width:28px;height:28px}.canvas-toolbar-divider{margin:0 2px}.canvas-zoom-display{font-size:11px;min-width:40px;padding:0 4px}.cmdline-history{display:none}.cmdline-input-wrap{padding:0 8px}.cmdline-input{font-size:var(--fs-xs)}.statusbar{font-size:10px;padding:0 4px}.status-item{padding:0 6px}.status-item span:not(.status-dot){display:none}.status-item .status-text-mobile{display:inline!important}.status-dot{display:inline-block}.status-item.hide-mobile{display:none}.canvas-svg{touch-action:pinch-zoom pan-x pan-y}}@media (max-width: 480px){:root{--mobile-right-tab-w: 52px}.ribbon-content{padding:0 4px}.right-tab-btn svg{width:16px;height:16px}.right-tab-btn{font-size:8px;padding:4px 2px}.topbar{padding:0 4px}.statusbar{font-size:9px;padding:0 2px}}body.drawer-open{overflow:hidden}.tree{padding:4px 0;font-size:12px;-webkit-user-select:none;user-select:none}.tree-node{position:relative}.tree-row{display:flex;align-items:center;gap:4px;padding:4px 8px 4px 4px;border-radius:4px;cursor:pointer;min-height:26px;color:var(--color-text);transition:background-color .12s}.tree-row:hover{background:var(--color-surface-2, rgba(0,0,0,.04))}.tree-row.active{background:#2563eb1a;color:var(--color-primary, #2563eb);font-weight:500}.tree-toggle{width:16px;height:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--color-text-muted);background:none;border:none;cursor:pointer;padding:0;border-radius:3px;transition:background-color .12s}.tree-toggle:hover{background:#00000014;color:var(--color-text)}.tree-toggle svg{width:12px;height:12px;transition:transform .15s}.tree-toggle-leaf{visibility:hidden;cursor:default}.tree-toggle-leaf:hover{background:none}.tree-node[aria-expanded=true]>.tree-row>.tree-toggle svg{transform:rotate(0)}.tree-node[aria-expanded=false]>.tree-row>.tree-toggle svg{transform:rotate(-90deg)}.tree-icon{display:flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.tree-icon svg{width:14px;height:14px}.tree-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.tree-count{font-size:10px;color:var(--color-text-muted);background:var(--color-surface-2, rgba(0,0,0,.05));padding:1px 6px;border-radius:8px;flex-shrink:0;font-variant-numeric:tabular-nums}.tree-children{padding-left:16px;border-left:1px dashed var(--color-border, #e2e8f0);margin-left:11px}.tree-children[hidden]{display:none}.lib-drag-hint{font-size:14px;color:var(--color-text-muted);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;opacity:0;transition:opacity .15s}.tree-row:hover .lib-drag-hint{opacity:.7}.lib-draggable.dragging{opacity:.4}.rightbar-panel .tree{max-height:calc(100vh - 360px);overflow-y:auto;padding-right:4px}.drawer-right .tree{padding:8px 4px;font-size:13px}.drawer-right .tree-name{font-size:13px}.drawer-right .tree-row{min-height:30px;padding:6px 10px}.plugin-manager{padding:8px}.plugin-manager-header{display:flex;justify-content:space-between;align-items:center;padding:4px 8px 12px;border-bottom:1px solid var(--color-border);margin-bottom:8px}.plugin-card{border:1px solid var(--color-border);border-radius:6px;margin-bottom:6px;overflow:hidden;transition:border-color .2s}.plugin-card.enabled{border-color:var(--color-primary)}.plugin-card.expanded .plugin-card-body{display:block}.plugin-card-header{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;-webkit-user-select:none;user-select:none}.plugin-icon{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center}.plugin-icon svg{width:18px;height:18px}.plugin-info{flex:1;min-width:0}.plugin-name{font-size:13px;font-weight:600;color:var(--color-text)}.plugin-meta{font-size:11px;color:var(--color-text-muted);margin-top:2px}.plugin-card-body{display:none;padding:0 12px 12px;border-top:1px solid var(--color-border)}.plugin-description{font-size:12px;color:var(--color-text-muted);margin:8px 0 4px;line-height:1.4}.plugin-author{font-size:11px;color:var(--color-text-muted)}.plugin-toggle{width:36px;height:20px;border-radius:10px;border:none;cursor:pointer;position:relative;background:var(--color-border);transition:background .2s;flex-shrink:0}.plugin-toggle.on{background:var(--color-primary)}.plugin-toggle-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s}.plugin-toggle.on .plugin-toggle-knob{transform:translate(16px)}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-primary, #1a1a2e);color:var(--text-primary, #e0e0e0);font-family:Inter,system-ui,sans-serif}.auth-card{background:var(--bg-secondary, #16213e);border:1px solid var(--border-color, #2a2a4a);border-radius:12px;padding:2.5rem;width:100%;max-width:400px;box-shadow:0 8px 32px #0000004d}.auth-title{font-size:1.75rem;font-weight:700;margin:0 0 .25rem;text-align:center;color:var(--accent-primary, #4a9eff)}.auth-subtitle{font-size:1rem;color:var(--text-secondary, #888);text-align:center;margin:0 0 1.5rem}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-field{display:flex;flex-direction:column;gap:.375rem}.auth-field label{font-size:.8125rem;font-weight:500;color:var(--text-secondary, #888)}.auth-field input{padding:.625rem .875rem;border:1px solid var(--border-color, #2a2a4a);border-radius:6px;background:var(--bg-input, #0f0f23);color:var(--text-primary, #e0e0e0);font-size:.875rem;outline:none;transition:border-color .15s}.auth-field input:focus{border-color:var(--accent-primary, #4a9eff)}.auth-button{margin-top:.5rem;padding:.625rem 1rem;border:none;border-radius:6px;background:var(--accent-primary, #4a9eff);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;transition:opacity .15s}.auth-button:hover:not(:disabled){opacity:.9}.auth-button:disabled{opacity:.5;cursor:not-allowed}.auth-error{background:#ef444426;border:1px solid rgba(239,68,68,.3);color:#ef4444;padding:.625rem .875rem;border-radius:6px;font-size:.8125rem;margin-bottom:1rem;cursor:pointer;text-align:center}.auth-switch{text-align:center;margin-top:1.5rem;font-size:.8125rem;color:var(--text-secondary, #888)}.auth-link{background:none;border:none;color:var(--accent-primary, #4a9eff);cursor:pointer;font-size:.8125rem;font-weight:500;padding:0;text-decoration:none}.auth-link:hover{text-decoration:underline}.dashboard-page{min-height:100vh;background:var(--bg-primary, #1a1a2e);color:var(--text-primary, #e0e0e0);font-family:Inter,system-ui,sans-serif}.dashboard-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 2rem;border-bottom:1px solid var(--border-color, #2a2a4a);background:var(--bg-secondary, #16213e)}.dashboard-brand{display:flex;align-items:center;gap:1rem}.dashboard-brand h1{font-size:1.25rem;font-weight:700;margin:0;color:var(--accent-primary, #4a9eff)}.dashboard-user{font-size:.8125rem;color:var(--text-secondary, #888)}.dashboard-logout{padding:.375rem .875rem;border:1px solid var(--border-color, #2a2a4a);border-radius:6px;background:transparent;color:var(--text-primary, #e0e0e0);font-size:.8125rem;cursor:pointer;transition:background .15s}.dashboard-logout:hover{background:#ffffff0d}.dashboard-content{max-width:1000px;margin:0 auto;padding:2rem}.dashboard-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.dashboard-section-header h2{font-size:1.25rem;font-weight:600;margin:0}.dashboard-create-btn{padding:.5rem 1rem;border:none;border-radius:6px;background:var(--accent-primary, #4a9eff);color:#fff;font-size:.8125rem;font-weight:600;cursor:pointer}.dashboard-create-form{display:flex;gap:.5rem;margin-bottom:1.5rem;flex-wrap:wrap}.dashboard-create-form input{flex:1;min-width:150px;padding:.5rem .75rem;border:1px solid var(--border-color, #2a2a4a);border-radius:6px;background:var(--bg-input, #0f0f23);color:var(--text-primary, #e0e0e0);font-size:.8125rem;outline:none}.dashboard-create-form input:focus{border-color:var(--accent-primary, #4a9eff)}.dashboard-create-form button{padding:.5rem 1rem;border:none;border-radius:6px;cursor:pointer;font-size:.8125rem;font-weight:500}.dashboard-create-form button:first-of-type{background:var(--accent-primary, #4a9eff);color:#fff}.dashboard-create-form button:last-of-type{background:transparent;color:var(--text-secondary, #888);border:1px solid var(--border-color, #2a2a4a)}.dashboard-loading,.dashboard-empty{text-align:center;color:var(--text-secondary, #888);padding:2rem}.dashboard-project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem}.dashboard-project-card{background:var(--bg-secondary, #16213e);border:1px solid var(--border-color, #2a2a4a);border-radius:8px;padding:1.25rem;cursor:pointer;transition:border-color .15s,transform .1s}.dashboard-project-card:hover{border-color:var(--accent-primary, #4a9eff);transform:translateY(-2px)}.dashboard-project-card h3{font-size:1rem;font-weight:600;margin:0 0 .5rem}.dashboard-project-card p{font-size:.8125rem;color:var(--text-secondary, #888);margin:0 0 .75rem}.dashboard-project-meta{display:flex;align-items:center;justify-content:space-between;font-size:.75rem;color:var(--text-secondary, #888)}.dashboard-delete-btn{padding:.25rem .5rem;border:1px solid rgba(239,68,68,.3);border-radius:4px;background:transparent;color:#ef4444;font-size:.75rem;cursor:pointer}.dashboard-delete-btn:hover{background:#ef44441a}
