.split-pane__divider{background:var(--edge-color);--fs-grip-border: 2px;flex-shrink:0;touch-action:none;transition:background var(--transition-fast);position:relative;z-index:var(--z-controls)}.split-pane__divider:has(.fs-grip:hover),.split-pane__divider:has(.fs-grip:active),.split-pane__divider:has(.fs-grip:focus-visible){background:var(--border-focus)}.split-pane__divider--h:has(.fs-grip--xy:hover)~div .split-pane__divider--v,.split-pane__divider--h:has(.fs-grip--xy:active)~div .split-pane__divider--v,.split-pane__divider--h:has(.fs-grip--xy:focus-visible)~div .split-pane__divider--v{background:var(--border-focus)}.split-pane__divider--h{width:var(--fs-seam)}.split-pane__divider--v{height:var(--fs-seam)}.csv-import-modal__backdrop{position:fixed;inset:0;z-index:var(--z-overlay);background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.csv-import-modal__panel{width:min(440px,92vw);background:var(--bg-panel);border:1px solid var(--border-default);border-radius:var(--border-radius-md);box-shadow:var(--shadow-lg);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.csv-import-modal__title{font-size:var(--font-size-sm);font-weight:700;color:var(--text-primary);word-break:break-word}.csv-import-modal__message{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5}.csv-import-modal__row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);font-size:var(--font-size-sm);color:var(--text-primary)}.csv-import-modal__row select{padding:3px 6px;font-size:var(--font-size-sm);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--border-radius-sm)}.csv-import-modal__buttons{display:flex;justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap}.csv-import-modal__button{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);padding:0 12px;font-size:var(--font-size-sm);line-height:1;text-decoration:none;color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.csv-import-modal__button:hover:not(:disabled){background:var(--bg-surface-hover)}.csv-import-modal__button--primary{border-color:var(--border-focus);color:var(--border-focus);font-weight:600}.csv-import-modal__button--yes{font-weight:700;color:#1a1a1a;background:#cdeab0;border-color:#8fbf5e;min-width:72px}.csv-import-modal__button--yes:hover:not(:disabled){background:#bce197;border-color:#6fa63e}.csv-import-modal__button--danger{font-weight:700;color:#1a1a1a;background:#f8d2ce;border-color:#e08b82;min-width:72px}.csv-import-modal__button--danger:hover:not(:disabled){background:#f4bdb7;border-color:#d92d20}.csv-import-modal__button:disabled{opacity:.5;cursor:not-allowed}.feedback-modal__panel{width:min(520px,94vw);max-height:min(88vh,760px);overflow-y:auto}.feedback-modal__kinds{display:flex;gap:var(--space-2);flex-wrap:wrap}.feedback-modal__kind{flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;line-height:1;padding:0 10px;color:var(--text-secondary);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast)}.feedback-modal__kind:hover{border-color:var(--border-focus);color:var(--text-primary)}.feedback-modal__kind--on,.feedback-modal__kind--on:hover{background:var(--border-focus);border-color:var(--border-focus);color:#fff}.feedback-modal__kind:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.feedback-modal__field{display:flex;flex-direction:column;gap:var(--space-1)}.feedback-modal__label{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.4}.feedback-modal__textarea{font-family:var(--font-sans);font-size:var(--font-size-sm);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);padding:8px;width:100%;box-sizing:border-box;resize:vertical;min-height:90px;line-height:1.5}.feedback-modal__textarea:focus{outline:none;border-color:var(--border-focus)}.feedback-modal__check{display:flex;align-items:flex-start;gap:8px;font-size:var(--font-size-xs);color:var(--text-secondary);line-height:1.4;cursor:pointer;user-select:none}.feedback-modal__check input{margin:2px 0 0;flex:none}.feedback-modal__details{font-size:var(--font-size-xs);color:var(--text-secondary)}.feedback-modal__details summary{cursor:pointer;user-select:none}.feedback-modal__env{margin:var(--space-2) 0 0;padding:var(--space-2);font-family:var(--font-mono);font-size:10px;line-height:1.5;color:var(--text-secondary);background:var(--bg-surface-hover);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);white-space:pre-wrap;overflow-wrap:anywhere}.feedback-modal__raw{font-family:var(--font-mono);font-size:10px}.feedback-modal__warn{font-size:var(--font-size-xs);line-height:1.45;color:#b42318}.feedback-modal__hint{font-size:var(--font-size-xs);line-height:1.45;color:var(--text-secondary)}.feedback-modal__send{display:inline-flex;align-items:center;text-decoration:none;font-weight:600}.feedback-modal__send--off{opacity:.5;cursor:not-allowed}:root[data-theme=dark] .feedback-modal__warn{color:#ff7b72}.palettes-modal__panel{width:min(620px,94vw);max-height:min(88vh,820px);overflow-y:auto;gap:var(--space-2)}.palettes-modal__toolbar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.palettes-modal__section{display:flex;flex-direction:column;gap:var(--space-2)}.palettes-modal__section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);padding-bottom:var(--space-1);border-bottom:1px solid var(--border-subtle)}.palettes-modal__section-title{margin:0;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary)}.palettes-modal__count{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-secondary)}.palettes-modal__hint{font-family:var(--font-sans);font-size:var(--font-size-xs);line-height:1.45;color:var(--text-secondary)}.palettes-modal__empty{font-size:var(--font-size-sm);line-height:1.5;color:var(--text-secondary)}.palettes-modal__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.palettes-modal__list--builtin{gap:2px}.palettes-modal__row{display:flex;flex-direction:column;gap:6px;padding:6px var(--space-2);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm)}.palettes-modal__line{display:flex;align-items:center;gap:var(--space-2);min-width:0}.palettes-modal__row--builtin{background:var(--bg-panel)}.palettes-modal__row-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.palettes-modal__name{flex:1 1 130px;min-width:0;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary);background:var(--bg-input);border:1px solid transparent;border-radius:var(--border-radius-sm);padding:4px 6px;text-overflow:ellipsis}.palettes-modal__name:hover{border-color:var(--border-subtle)}.palettes-modal__name:focus{outline:none;border-color:var(--border-focus)}.palettes-modal__builtin-name{flex:1 1 130px;min-width:0;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary);padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.palettes-modal__strip{display:flex;flex-wrap:nowrap;gap:3px;flex:0 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}.palettes-modal__strip::-webkit-scrollbar{display:none}.palettes-modal__chip{flex:none;width:22px;height:22px;border-radius:0;border:1px solid var(--border-default)}.palettes-modal__actions{display:flex;align-items:center;gap:var(--space-1);flex:none;flex-wrap:nowrap;margin-left:auto}.palettes-modal__spacer{flex:1 1 auto}.palettes-modal__btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;line-height:1;color:var(--text-primary);background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);padding:0 8px;cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast)}.palettes-modal__btn:hover:not(:disabled){border-color:var(--border-focus);color:var(--border-focus)}.palettes-modal__btn:disabled{opacity:.45;cursor:not-allowed}.palettes-modal__btn:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.palettes-modal__btn--icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:22px;padding:0;font-size:var(--font-size-sm);line-height:1}.palettes-modal__btn--icon svg{width:9px;height:9px;display:block;fill:currentColor}.palettes-modal__btn--danger:hover:not(:disabled){color:#b42318;border-color:#b42318}.palettes-modal__editor{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-1);padding-top:var(--space-2);border-top:1px dashed var(--border-subtle);max-height:320px;overflow-y:auto;align-items:flex-start}.palettes-modal__color-row{display:flex;align-items:center;gap:var(--space-2);width:100%}.palettes-modal__color{flex:none;width:34px;height:24px;padding:0;background:none;border:1px solid var(--border-default);border-radius:0;cursor:pointer}.palettes-modal__hex{flex:none;width:62px;font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-secondary)}.palettes-modal__label{flex:1 1 auto;min-width:0;font-family:var(--font-sans);font-size:var(--font-size-xs);color:var(--text-primary);background:var(--bg-input);border:1px solid transparent;border-radius:var(--border-radius-sm);padding:3px 6px}.palettes-modal__label:hover{border-color:var(--border-subtle)}.palettes-modal__label:focus{outline:none;border-color:var(--border-focus)}.palettes-modal__editor-foot{display:flex;align-items:center;gap:var(--space-1);width:100%;padding-top:var(--space-1)}.palettes-modal__file{display:none}.palettes-modal__paste{display:flex;align-items:center;gap:var(--space-2)}.palettes-modal__paste-input{flex:1 1 auto;min-width:0;font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);padding:5px 8px}.palettes-modal__paste-input:focus{outline:none;border-color:var(--border-focus)}.palettes-modal__report{display:flex;flex-direction:column;gap:2px;padding:var(--space-2);font-size:var(--font-size-xs);line-height:1.45;color:var(--text-secondary);background:var(--bg-surface-hover);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);overflow-wrap:anywhere}.palettes-modal__report--warn{color:#b42318;border-color:#b42318}:root[data-theme=dark] .palettes-modal__report--warn,:root[data-theme=dark] .palettes-modal__btn--danger:hover:not(:disabled){color:#ff7b72;border-color:#ff7b72}.eval-modal__panel{width:min(640px,94vw);max-height:92vh;overflow-y:auto}.eval-consent__section{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.55}.eval-consent__section strong{color:var(--text-primary)}.eval-consent__list{margin:var(--space-1) 0 0;padding-left:18px;display:flex;flex-direction:column;gap:4px}.eval-consent__code-row{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--text-primary)}.eval-consent__code-row input{width:110px;padding:4px 8px;font-size:var(--font-size-sm);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--border-radius-sm)}.sus-modal__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.sus-modal__items{display:flex;flex-direction:column}.sus-modal__item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:7px 0;border-bottom:1px dashed var(--border-subtle)}.sus-modal__item:last-child{border-bottom:none}.sus-modal__statement{flex:1;font-size:var(--font-size-sm);color:var(--text-primary);line-height:1.4}.sus-modal__scale{display:flex;align-items:center;gap:6px;flex:none}.sus-modal__scale label{display:flex;flex-direction:column;align-items:center;gap:1px;font-size:var(--font-size-xs);color:var(--text-secondary);cursor:pointer}.sus-modal__anchors{display:flex;justify-content:space-between;gap:var(--space-3);font-size:var(--font-size-xs);color:var(--text-secondary);padding:0 0 2px}.sus-modal__comment{width:100%;box-sizing:border-box;min-height:56px;padding:6px 8px;font-size:var(--font-size-sm);font-family:inherit;color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);resize:vertical}.sus-modal__progress{font-size:var(--font-size-xs);color:var(--text-secondary)}.eval-done__file{font-size:var(--font-size-sm);color:var(--text-primary);word-break:break-all;padding:6px 8px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm)}.eval-done__warn{font-size:var(--font-size-sm);color:#b42318;line-height:1.5}:root[data-theme=dark] .eval-done__warn{color:#f2938c}.eval-consent__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.eval-consent__lang{flex:none;min-width:34px;padding:4px 8px;font-weight:700}.toolbar{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-4);background:var(--bg-panel);border-bottom:1px solid var(--border-subtle);flex-shrink:0;height:auto;position:relative}.toolbar__left{position:relative;flex-shrink:0;display:flex;align-items:baseline;gap:var(--space-2)}.toolbar__brand{font-family:var(--font-sans);font-size:28px;font-weight:700;color:var(--text-primary);letter-spacing:-.02em;background:none;border:none;padding:0;margin:0;cursor:pointer;line-height:inherit;transition:color var(--transition-fast)}.toolbar__brand:hover{color:var(--border-focus)}.toolbar__brand:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.toolbar__contact-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:100;min-width:264px;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-lg)}.toolbar__contact-label{font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}.toolbar__contact-name{font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary);padding-bottom:4px;border-bottom:1px solid var(--border-subtle)}.toolbar__contact-funding{margin-top:2px;padding-top:var(--space-2);border-top:1px solid var(--border-subtle);font-family:var(--font-sans);font-size:10px;line-height:1.5;color:var(--text-secondary);max-width:260px}.toolbar__contact-logos{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);margin-top:2px}.toolbar__contact-logo{height:26px;width:auto;object-fit:contain}.toolbar__contact-logo--eu{height:30px}.toolbar__contact-logo--nap{height:48px}.toolbar__contact-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.toolbar__contact-link{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-primary);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar__contact-link:hover{text-decoration:underline;color:var(--border-focus)}.toolbar__contact-copy{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;line-height:1;padding:0 8px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);color:var(--text-secondary);cursor:pointer;min-width:48px;text-align:center;transition:border-color var(--transition-fast),color var(--transition-fast)}.toolbar__contact-copy:hover{border-color:var(--border-focus);color:var(--text-primary)}.toolbar__version{font-family:var(--font-mono);font-size:var(--font-size-xs);font-weight:500;color:var(--text-secondary);letter-spacing:0}.toolbar__center{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.toolbar__name-label{font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary);white-space:nowrap}.toolbar__name-input{box-sizing:border-box;height:var(--ctl-size);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);padding:0 var(--space-3);text-align:left;min-width:200px;max-width:400px;transition:border-color var(--transition-fast),background var(--transition-fast)}.toolbar__name-input:hover{border-color:var(--border-focus)}.toolbar__name-input:focus{outline:none;border-color:var(--border-focus);background:var(--bg-input)}.toolbar__right{flex-shrink:0;display:flex;align-items:center;gap:var(--space-2)}.toolbar__export{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:700;letter-spacing:.05em;line-height:1;text-transform:uppercase;color:#fff;background:var(--text-accent);border:1px solid var(--text-accent);border-radius:var(--border-radius-sm);padding:0 14px;cursor:pointer;transition:filter var(--transition-fast);align-self:center}.toolbar__export:hover{filter:brightness(1.1)}.toolbar__export:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.toolbar__export-wrap{position:relative;display:flex;align-self:center}.toolbar__local-popover.toolbar__export-popover{min-width:264px}.toolbar__export-popover .toolbar__local-note{max-width:240px}.toolbar__export-check{display:flex;align-items:flex-start;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--font-size-sm);color:var(--text-primary);cursor:pointer}.toolbar__export-check input{margin:2px 0 0;accent-color:var(--text-accent)}.toolbar__export-check--off{color:var(--text-secondary);cursor:default}.toolbar__workfolder{position:relative;display:flex;align-self:center}button.toolbar__sc-link.toolbar__wf-save{text-transform:uppercase;border-top-right-radius:0;border-bottom-right-radius:0}button.toolbar__sc-link.toolbar__wf-save.toolbar__wf-save--saved{color:#067647;border-color:#067647}button.toolbar__sc-link.toolbar__wf-link--unavailable,button.toolbar__sc-link.toolbar__wf-link--unavailable:hover{opacity:.5;cursor:default;color:var(--text-primary);background:var(--bg-surface);border-color:var(--border-subtle)}button.toolbar__sc-link.toolbar__wf-caret{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0;padding:0 8px}.toolbar__wf-caret svg{width:10px;height:10px;display:block;fill:currentColor}.toolbar__local-popover.toolbar__wf-popover{min-width:300px;max-height:60vh;overflow-y:auto}button.toolbar__local-row.toolbar__wf-row{font-family:var(--font-sans);width:100%;text-align:left;cursor:pointer}.toolbar__wf-row-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.toolbar__local-row.toolbar__wf-row--current{border-color:var(--border-focus);box-shadow:inset 3px 0 0 var(--border-focus);font-weight:600}.toolbar__wf-forget{font-family:var(--font-sans);font-size:10px;color:var(--text-secondary);background:none;border:none;padding:0;cursor:pointer;align-self:flex-start;text-decoration:underline}.toolbar__wf-forget:hover{color:#b42318}.toolbar__sc-link.toolbar__theme-toggle{font-size:16px;line-height:1;padding:0 10px}.toolbar__sc-link.toolbar__refresh{display:inline-flex;align-items:center;justify-content:center;padding:0 10px;background:var(--text-primary);color:var(--bg-surface);border-color:var(--text-primary)}.toolbar__sc-link.toolbar__refresh:hover{background:var(--border-focus);border-color:var(--border-focus);color:var(--bg-panel)}.toolbar__sc-link.toolbar__feedback{display:inline-flex;align-items:center;justify-content:center;min-width:30px;padding:0 10px;font-size:17px;font-weight:800;line-height:1;color:#fff;background:#d92d20;border-color:#d92d20}.toolbar__sc-link.toolbar__feedback:hover{background:#b42318;border-color:#b42318;color:#fff}.toolbar__sc-link.toolbar__feedback:focus-visible{outline:1px solid #d92d20;outline-offset:2px}.toolbar__eval-badge{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ctl-size);padding:0 7px;font-size:10px;font-weight:800;letter-spacing:.08em;line-height:1;color:#d92d20;border:1px solid #d92d20;border-radius:var(--border-radius-sm);user-select:none;cursor:default}.toolbar__refresh svg{width:15px;height:15px;display:block;fill:currentColor}.toolbar__local{position:relative}.toolbar__local-popover{position:absolute;top:calc(100% + 6px);right:0;z-index:100;min-width:236px;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-lg)}.toolbar__local-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding-bottom:4px;border-bottom:1px solid var(--border-subtle)}.toolbar__local-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding:6px 8px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);text-decoration:none;transition:border-color var(--transition-fast),background var(--transition-fast)}.toolbar__local-row:hover{border-color:var(--border-focus);background:var(--bg-surface)}.toolbar__local-os{font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary)}.toolbar__local-detail{font-family:var(--font-sans);font-size:var(--font-size-xs);color:var(--text-secondary);white-space:nowrap}.toolbar__local-note{font-family:var(--font-sans);font-size:10px;line-height:1.5;color:var(--text-secondary);max-width:220px}.toolbar__sc-link{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:700;letter-spacing:.04em;line-height:1;color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);padding:0 12px;text-decoration:none;cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast)}.toolbar__sc-link:hover{border-color:var(--border-focus);color:var(--border-focus);background:var(--bg-panel)}.toolbar__sc-link:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}button.toolbar__sc-link{font:inherit;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:700;line-height:1}.toolbar__sc-link.toolbar__lang{padding:0 8px;min-width:34px}.toolbar__vr-popover{min-width:300px;max-width:340px}.toolbar__vr-note{max-width:none}.toolbar__vr-live{font-family:var(--font-sans);font-size:var(--font-size-xs);font-weight:600;color:#1a7f37;text-transform:uppercase;letter-spacing:.04em}.toolbar__vr-action{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;line-height:1;padding:0 10px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);color:var(--text-primary);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast)}.toolbar__vr-action:hover:not(:disabled){border-color:var(--text-accent);color:var(--text-accent)}.toolbar__vr-action:disabled{opacity:.6;cursor:default}.toolbar__vr-url-row{display:flex;align-items:center;gap:var(--space-2)}.toolbar__vr-url{flex:1;font-family:var(--font-mono);font-size:var(--font-size-sm);padding:4px 6px;background:var(--bg-surface-hover);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);user-select:all;overflow-wrap:anywhere}.toolbar__vr-hint{font-family:var(--font-sans);font-size:10px;line-height:1.5;color:var(--text-secondary)}.toolbar__vr-hint ol{margin:var(--space-1) 0 0;padding-left:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.toolbar__vr-hint code{font-family:var(--font-mono);font-size:10px;background:var(--bg-surface-hover);padding:0 3px;overflow-wrap:anywhere}.toolbar__vr-error{font-family:var(--font-sans);font-size:10px;line-height:1.4;color:#b42318}:root[data-theme=dark] .toolbar__contact-popover,:root[data-theme=dark] .toolbar__local-popover,:root[data-theme=dark] .toolbar__vr-popover{box-shadow:var(--shadow-lg),0 0 0 1px #ffffff0f}:root[data-theme=dark] .toolbar__vr-live{color:#3fb950}:root[data-theme=dark] .toolbar__sc-link.toolbar__feedback{background:#e5484d;border-color:#e5484d}:root[data-theme=dark] .toolbar__sc-link.toolbar__feedback:hover{background:#f2555a;border-color:#f2555a}:root[data-theme=dark] .toolbar__eval-badge{color:#e5484d;border-color:#e5484d}:root[data-theme=dark] .toolbar__vr-error{color:#ff7b72}:root[data-theme=dark] button.toolbar__sc-link.toolbar__wf-save.toolbar__wf-save--saved{color:#3fb950;border-color:#3fb950}:root[data-theme=dark] .toolbar__wf-forget:hover{color:#ff7b72}.toolbar__overflow{position:relative;display:flex;align-items:center}.toolbar__sc-link.toolbar__overflow-btn{padding:0 10px}.toolbar__overflow-btn svg{width:16px;height:16px;display:block;fill:currentColor}.toolbar__overflow-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:100;display:flex;flex-direction:column;align-items:stretch;gap:var(--space-2);min-width:168px;padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-lg)}.toolbar__overflow-menu .toolbar__local{display:flex;align-self:stretch}.toolbar__overflow-menu .toolbar__local>.toolbar__sc-link{flex:1}.toolbar__overflow-menu .toolbar__local-popover{top:0;left:auto;right:100%;margin-right:var(--space-2)}.toolbar__prefs-popover{position:fixed;z-index:100;width:200px;box-sizing:border-box;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-lg)}.toolbar__prefs-row{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;user-select:none}.toolbar__prefs-label{font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary)}.preview-node{position:relative}.preview-node__canvas-wrap{padding:3px 5px;display:flex;justify-content:center}.preview-node__canvas{width:96px;height:96px;border-radius:var(--border-radius-sm);border:1px solid rgba(0,0,0,.1);image-rendering:pixelated}.preview-node>.react-flow__handle{transform:translateY(-50%)!important}.preview-node>.react-flow__handle-left{left:calc(var(--handle-size) / -2)!important}.preview-node>.react-flow__handle-right{right:calc(var(--handle-size) / -2)!important}.preview-node__range{position:absolute;right:3px;bottom:1px;font-size:8px;font-weight:700;line-height:1;color:#e74c3c;pointer-events:none}.math-preview-node{position:relative}.math-preview-node__canvas-wrap{padding:3px 5px;display:flex;flex-direction:column;align-items:center;gap:2px}.math-preview-node__canvas{width:72px;height:72px;border-radius:var(--border-radius-sm);border:1px solid rgba(0,0,0,.1)}.math-preview-node__port-row{display:flex;align-items:center;justify-content:space-between;padding:0 5px;min-height:16px;position:relative}.math-preview-node__left{display:flex;align-items:center;gap:2px}.math-preview-node__port-row .react-flow__handle{top:50%!important;transform:translateY(-50%)!important}.math-preview-node__port-row .react-flow__handle-left{left:calc(var(--handle-size) / -2)!important}.math-preview-node>.react-flow__handle{transform:translateY(-50%)!important}.math-preview-node>.react-flow__handle-right{right:calc(var(--handle-size) / -2)!important}.mesh-picker{display:flex;align-items:center;gap:2px;flex:1;min-width:0;max-width:104px;height:20px;padding:0 4px;border:1px solid var(--border-subtle);border-radius:0;background:#fff;font-family:var(--font-sans);color:#000000d9;cursor:pointer;text-align:left}.mesh-picker:hover{border-color:#00000059}.mesh-picker__label,.mesh-picker__name{font-size:11.7px;font-weight:700;line-height:1.1}.mesh-picker__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mesh-picker__more{flex:none;font-size:11.7px;font-weight:700;opacity:.6}.mesh-picker__caret{flex:none;width:0;height:0;margin-left:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid rgba(0,0,0,.45)}.mesh-picker--missing,.mesh-picker--unassigned{border-color:var(--cost-high, #c26a2a);color:var(--cost-high, #c26a2a)}.mesh-picker--shadowed{opacity:.55}.mesh-picker__pop{position:fixed;z-index:var(--z-menu);min-width:150px;max-width:260px;max-height:260px;overflow-y:auto;padding:3px;border:1px solid var(--border-default);border-radius:var(--border-radius-sm);background:var(--bg-panel);box-shadow:var(--shadow-float)}.mesh-picker__row{display:flex;align-items:center;gap:6px;padding:3px 5px;border-radius:0;cursor:pointer}.mesh-picker__row:hover{background:#7f7f7f29}.mesh-picker__row input{flex:none;margin:0;cursor:pointer}.mesh-picker__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary)}.mesh-picker__row--default{border-bottom:1px solid var(--border-subtle);border-radius:0;margin-bottom:2px}.mesh-picker__row--missing .mesh-picker__name{color:var(--cost-high, #c26a2a)}.output-node{position:relative;width:fit-content;min-width:140px;border:none;border-radius:var(--border-radius-md);box-shadow:var(--fs-node-lift, var(--shadow-node));translate:var(--fs-node-shift, 0px) var(--fs-node-shift, 0px);transition:box-shadow var(--transition-fast),translate var(--transition-fast);font-family:var(--font-sans);overflow:visible}.output-node--selected{--fs-node-lift: var(--shadow-node-selected)}.output-node__header{display:flex;align-items:center;padding:3px 8px;border-bottom:1px solid rgba(0,0,0,.1);border-radius:var(--border-radius-md) var(--border-radius-md) 0 0;background:var(--cat-output)}.output-node__preview-socket{position:absolute;top:50%;right:calc(var(--handle-size) * -1);width:calc(var(--handle-size) * 2);height:calc(var(--handle-size) * 2);transform:translateY(-50%);border:var(--handle-border) solid white;border-radius:50%;background:#000;box-shadow:0 0 0 1px #00000026;pointer-events:none}.react-flow .output-node__preview-socket{background:var(--node-cost-text, #000)}.output-node__material{position:relative}.output-node__mesh-row{display:flex;align-items:center;gap:4px;padding:3px 8px 1px}.output-node__dormant{margin:3px 8px 4px;padding:2px 6px;border:1px dashed var(--border-subtle);border-radius:0;font-size:8px;color:#00000073;text-align:center}.output-node__add-row{padding:2px 8px 4px}.output-node__add{width:100%;padding:2px 0;border:1px dashed var(--border-subtle);border-radius:0;background:transparent;color:#0000008c;font-family:var(--font-sans);font-size:9px;font-weight:600;cursor:pointer}.output-node__add:hover{border-color:var(--cat-output);color:#000000d9;background:#0000000a}.output-node__title{font-size:10px;font-weight:700;color:#fff;white-space:nowrap;text-transform:uppercase;letter-spacing:.5px}.output-node__section{padding:2px 0}.output-node__section-label{font-size:8px;font-weight:600;color:#0006;text-transform:uppercase;letter-spacing:.5px;padding:3px 8px 1px}.output-node__ports{padding:0}.output-node__row{position:relative;display:flex;align-items:center;min-height:18px;padding:0 8px;gap:2px}.output-node__row .react-flow__handle{top:50%!important;transform:translateY(-50%)!important}.output-node__row .react-flow__handle-left{left:calc(var(--handle-size) / -2)!important}.output-node__port-label{font-size:9px;color:#0009;white-space:nowrap;padding-left:4px}.output-node__val{margin-left:2px;width:20px;flex-shrink:0}.output-node__val .drag-num__arrow{display:none}.output-node__val .drag-num{width:100%}.output-node__row .shader-node__edge-val.output-node__val{display:inline-flex;align-items:center;justify-content:center}.output-node__divider{height:1.5px;margin:4px 0;background:var(--cat-output)}.output-node__subdivider{height:1px;margin:2px 10px;background:#0000000f}.clock-node{position:relative}.clock-node__canvas-wrap{padding:3px 5px;display:flex;justify-content:center;position:relative}.clock-node__canvas{width:56px;height:56px;border-radius:50%}.clock-node__canvas-wrap>.react-flow__handle{top:50%!important;transform:translateY(-50%)!important}.clock-node__speed-row>.react-flow__handle{top:auto!important;bottom:calc(4px + 6px * var(--node-text-scale, 1))!important;transform:translateY(50%)!important}.clock-node__canvas-wrap>.react-flow__handle-left,.clock-node__speed-row>.react-flow__handle-left{left:calc(var(--handle-size) / -2)!important}.clock-node__canvas-wrap>.react-flow__handle-right,.clock-node__speed-row>.react-flow__handle-right{right:calc(var(--handle-size) / -2)!important}.clock-node__speed-row{position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;padding:0 5px 4px}.clock-node__speed-x{font:700 calc(8px * var(--node-text-scale, 1)) var(--font-mono);color:#0000008c;line-height:1}.clock-node__speed-row .drag-num--compact,.clock-node__speed-wired{width:70%;justify-content:center}.clock-node__speed-wired{display:flex;align-items:center}.mic-node__body{position:relative}.mic-node__body .react-flow__handle{z-index:2}.mic-node__body>.react-flow__handle{transform:translateY(-50%)!important}.mic-node__body>.react-flow__handle-left{left:calc(var(--handle-size) / -2)!important}.mic-node__body>.react-flow__handle-right{right:calc(var(--handle-size) / -2)!important}.mic-node__val{position:absolute;transform:translateY(-50%);display:flex;align-items:stretch}.mic-node__val .drag-num--compact{flex:1;height:100%}.mic-node__wired{flex:1;display:flex;align-items:center;justify-content:center}.mic-node__btn-wrap{position:absolute;left:50%;transform:translate(-50%,-50%);z-index:1}.mic-node__btn-wrap .shader-node__mic-btn{margin:0}.react-flow__node{--fs-node-lift: var(--shadow-node);--fs-node-shift: 0px;--fs-node-border-scale: 1}.react-flow__node:hover,.react-flow__node.selected,.react-flow__node.fs-menu-active{--fs-node-lift: var(--shadow-node-selected);--fs-node-shift: var(--fs-node-rise)}.react-flow__node.selected,.react-flow__node.fs-menu-active{--fs-node-border-scale: 1.5}.node-editor__canvas.fs-connecting .react-flow__node:hover:not(.selected):not(.fs-menu-active){--fs-node-lift: var(--shadow-node);--fs-node-shift: 0px}.react-flow__node-group:not(:has(.group-node--collapsed)){--fs-node-shift: 0px}.node-base{position:relative;width:fit-content;min-width:40px;border:none;border-radius:var(--border-radius-md);box-shadow:var(--fs-node-lift, var(--shadow-node));translate:var(--fs-node-shift, 0px) var(--fs-node-shift, 0px);transition:box-shadow var(--transition-fast),translate var(--transition-fast);font-family:var(--font-sans);overflow:visible}.node-base:before{content:"";position:absolute;inset:0 var(--fs-node-shift, 0px) var(--fs-node-shift, 0px) 0;z-index:-1}.node-base__cost-badge{position:absolute;top:-14px;left:50%;transform:translate(-50%);font-size:12px;font-weight:800;line-height:1;white-space:nowrap;pointer-events:none;z-index:1;text-shadow:1px 1px 0 rgba(0,0,0,.45)}.react-flow .node-base__cost-badge{color:var(--node-cost-text, #000000)!important;text-shadow:1px 1px 0 var(--node-cost-text-shadow, rgba(255, 255, 255, .6))!important}.node-base--selected{--fs-node-lift: var(--shadow-node-selected)}.node-base--stacked.node-base--selected{box-shadow:none}.node-base__stack{position:absolute;inset:0;border-radius:var(--border-radius-md);border:calc(1.5px * var(--fs-node-border-scale, 1)) solid;background:var(--node-bg);z-index:-1;translate:var(--fs-node-shift, 0px) var(--fs-node-shift, 0px);pointer-events:none;transition:box-shadow var(--transition-fast),translate var(--transition-fast)}.node-base__header{display:flex;align-items:center;gap:2px;padding:0 4px;border-bottom:1px solid rgba(0,0,0,.1);border-radius:var(--border-radius-md) var(--border-radius-md) 0 0;background:#0000000f}.node-base__title{font-size:calc(9px * var(--node-text-scale, 1));font-weight:600;color:#000000bf;white-space:normal;overflow-wrap:normal;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1;min-width:0}.node-base__body{padding:0}.node-base__row{position:relative;display:flex;align-items:center;min-height:14px;padding:0 4px;gap:2px}.node-base__row .react-flow__handle{top:50%!important;transform:translateY(-50%)!important}.node-base__row .react-flow__handle-left{left:calc(var(--handle-size) / -2)!important}.node-base__row .react-flow__handle-right{right:calc(var(--handle-size) / -2)!important}.audio-node__body{position:relative}.audio-node__body .react-flow__handle{z-index:2}.audio-node__body>.react-flow__handle{transform:translateY(-50%)!important}.audio-node__body>.react-flow__handle-left{left:calc(var(--handle-size) / -2)!important}.audio-node__body>.react-flow__handle-right{right:calc(var(--handle-size) / -2)!important}.audio-node__val{position:absolute;transform:translateY(-50%);display:flex;align-items:stretch}.audio-node__val .drag-num--compact{flex:1;height:100%}.audio-node__wired{flex:1;display:flex;align-items:center;justify-content:center}.audio-node__source{position:absolute;transform:translateY(-50%);min-width:0;box-sizing:border-box;font-family:var(--font-mono);font-size:calc(8px * var(--node-text-scale, 1));line-height:1;padding:0 12px 0 3px;color:#1a1a1a;border:1px solid #b9bfc7;border-radius:0;cursor:pointer;appearance:none;-webkit-appearance:none;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%23555555' stroke-width='1.5' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 3px center;background-size:7px 5px;text-overflow:ellipsis}.audio-node__source:hover:not(:disabled){border-color:#7a828c}.audio-node__source:disabled{color:#8a9099;background-color:#f0f1f3;cursor:default;opacity:1}.audio-node__btn-wrap{position:absolute;left:50%;transform:translate(-50%,-50%);z-index:1}.audio-node__btn-wrap .shader-node__mic-btn{margin:0}.group-node{position:relative;border:calc(2px * var(--fs-node-border-scale, 1)) solid;border-radius:0;box-sizing:border-box;overflow:visible}.group-node--selected{box-shadow:0 0 0 2px #6382ff40}.group-node__header{display:flex;align-items:center;gap:6px;height:22px;padding:0 4px 0 10px;cursor:grab;user-select:none}.group-node__label{font-size:var(--font-size-xs);font-weight:600;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,.45);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}.group-node__toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;font-size:14px;font-weight:700;line-height:1;color:#fff;background:#0000002e;border:1px solid rgba(255,255,255,.35);border-radius:0;cursor:pointer;transition:background .12s ease}.group-node__toggle:hover{background:#00000052}@media(pointer:coarse){.group-node__toggle{width:28px;height:28px;font-size:18px}}.group-node--collapsed{border-radius:0;overflow:visible;box-shadow:var(--fs-node-lift, var(--shadow-node));translate:var(--fs-node-shift, 0px) var(--fs-node-shift, 0px);transition:box-shadow var(--transition-fast),translate var(--transition-fast)}.group-node--collapsed.group-node--selected{--fs-node-lift: var(--shadow-node-selected)}.group-node--collapsed .group-node__header{border-bottom-left-radius:0;border-bottom-right-radius:0;height:28px;flex-shrink:0}.group-node__socket{position:absolute;left:0;right:0;height:18px;display:flex;align-items:center;pointer-events:none;transform:translateY(-50%)}.group-node__socket--in{justify-content:flex-start;padding-left:10px}.group-node__socket--out{justify-content:flex-end;padding-right:10px}.group-node__socket-label{font-size:9px;font-weight:600;color:#000000b3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90px;pointer-events:none}.react-flow__node.react-flow__node-group{z-index:-1!important}.react-flow__node.react-flow__node-group,.react-flow__node-group .group-node{pointer-events:none!important}.react-flow__node-group .group-node--collapsed,.react-flow__node-group .group-node__header,.react-flow__node-group .react-flow__resize-control{pointer-events:auto!important}.note-node{display:flex;flex-direction:column;box-sizing:border-box;border:calc(1px * var(--fs-node-border-scale, 1)) solid rgba(0,0,0,.18);border-radius:var(--border-radius-sm);box-shadow:var(--fs-node-lift, var(--shadow-node));translate:var(--fs-node-shift, 0px) var(--fs-node-shift, 0px);transition:box-shadow var(--transition-fast),translate var(--transition-fast);overflow:hidden}.note-node--selected{--fs-node-lift: var(--shadow-node-selected)}.note-node__header{flex:0 0 auto;padding:3px 8px;font-family:var(--font-sans);font-weight:700;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab;user-select:none}.note-node__header:active{cursor:grabbing}.note-node__body{flex:1;width:100%;border:none;background:transparent;resize:none;padding:6px 8px;font-family:var(--font-sans);line-height:1.4;outline:none;overflow:auto}.note-node__body::placeholder{opacity:.5}.react-flow__node.react-flow__node-note{z-index:500!important}.react-flow__node.react-flow__node-note.selected,.react-flow__node.react-flow__node-note.dragging{z-index:1000!important}.edge-info-card{position:absolute;pointer-events:all;z-index:9999;padding:2px 10px;border-radius:0;box-shadow:var(--shadow-float);font-family:var(--font-sans);font-size:var(--font-size-xs);font-weight:700;color:#fff;white-space:nowrap;background:#2a2a2a;display:flex;align-items:center;gap:6px;animation:edge-info-enter .15s ease-out}.edge-info-card__values{display:flex;flex-direction:column;align-items:stretch;gap:1px;font-family:var(--font-mono);font-weight:400;font-size:10px}.edge-info-card__channel{display:flex;align-items:center;gap:4px}.edge-info-card__label{font-weight:700;font-size:9px}.edge-info-card__num{opacity:.95;color:#fff}@keyframes edge-info-enter{0%{opacity:0}to{opacity:1}}:root[data-theme=dark] .edge-info-card{background:#5f6570;border:1px solid rgba(255,255,255,.14)}.connection-stub{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:calc(var(--z-menu) - 1);overflow:visible}.connection-stub path{fill:none;stroke-width:2;stroke-linecap:round}.context-menu{position:fixed;z-index:var(--z-menu);background:var(--bg-panel);border:1px solid var(--border-default);border-radius:var(--border-radius-md);box-shadow:var(--shadow-float);overflow:hidden;min-width:260px;max-height:min(520px,calc(100vh - 16px));max-width:calc(100vw - 16px);display:flex;flex-direction:column;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px}.context-menu--add-node{width:280px}.context-menu--add-node .context-menu__item{overflow-wrap:break-word}.context-menu--add-node .context-menu__item>span:first-child{min-width:0}.context-menu--add-node .context-menu__item-category{flex:none;white-space:nowrap}.context-menu__item-cost{margin-left:var(--space-2);font-size:var(--font-size-xs);font-weight:600;font-variant-numeric:tabular-nums}.context-menu input[type=checkbox]{width:14px!important;height:14px!important}.context-menu .context-menu__color{width:80px;height:18px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);cursor:pointer}.context-menu__search{width:100%;padding:var(--space-2) var(--space-3);background:var(--bg-input);border:none;border-bottom:1px solid var(--border-subtle);color:var(--text-primary);font-size:var(--font-size-sm);outline:none}.context-menu__search::placeholder{color:var(--text-muted)}.context-menu__list{overflow-y:auto;overflow-x:auto;flex:1;min-height:0}.context-menu:not(.context-menu--add-node) .context-menu__list>*{min-width:max-content}.context-menu__category{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;background:var(--bg-app);position:sticky;top:0}.context-menu__item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);color:var(--text-primary);transition:background var(--transition-fast);text-align:left}.context-menu__item:hover{background:var(--bg-surface-hover)}.context-menu__item:disabled{opacity:.4;cursor:default}.context-menu__item:disabled:hover{background:none}.context-menu__item--focused,.context-menu__item--focused:hover{background:var(--bg-surface-hover);box-shadow:inset 2px 0 0 var(--border-focus)}.context-menu__item--danger{color:#c0392b}.context-menu__item--danger:hover{background:#e74c3c1a;color:#c0392b}:root[data-theme=dark] .context-menu__item--danger,:root[data-theme=dark] .context-menu__item--danger:hover{color:#ff6b5e}.context-menu__item-category{font-size:var(--font-size-xs);color:var(--text-muted)}.context-menu__item--stacked{flex-direction:column;align-items:stretch;gap:2px}.context-menu__item-desc{font-size:var(--font-size-xs);color:var(--text-muted);line-height:1.35;white-space:normal}.context-menu__divider{height:1px;background:var(--border-subtle);margin:var(--space-1) 0}@media(pointer:coarse){.context-menu{min-width:300px}.context-menu__item{padding:var(--space-3) var(--space-4);font-size:var(--font-size-md)}.context-menu__search{padding:var(--space-3) var(--space-3);font-size:var(--font-size-md)}}.asset-tooltip{position:fixed;transform:translate(-50%);z-index:var(--z-overlay);max-width:260px;padding:5px 9px;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;line-height:1.45;color:var(--text-primary);background:var(--bg-panel);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-md);pointer-events:none;text-align:left}.node-preview-card{flex-shrink:0;cursor:grab;user-select:none;padding:20px 8px 6px;zoom:.67}.node-preview-card:hover{--fs-node-lift: var(--shadow-node-selected);transform:translate(var(--fs-node-rise),var(--fs-node-rise))}.node-preview-card{transition:transform var(--transition-fast)}.node-preview-card:active{cursor:grabbing;opacity:.7}.node-preview-card__node{pointer-events:none}.node-preview-card .node-base__title{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:normal}.node-preview-card__inert{pointer-events:none;display:inline-flex}.node-preview-card__color-scale{transform-origin:top left;pointer-events:none}.node-preview-card__color-scale .color-node{cursor:inherit}.content-browser{position:relative;border-top:var(--fs-seam) solid var(--edge-color);transition:border-color var(--transition-fast);background:var(--bg-raised);display:flex;flex-direction:column;overflow:visible;min-height:0;max-height:calc(100% - 120px)}.content-browser__resizer{position:absolute;top:calc(-1 * var(--fs-seam));left:0;right:0;height:var(--fs-seam);z-index:var(--z-controls);pointer-events:none;--fs-grip-border: 2px}.content-browser__resizer .fs-grip{pointer-events:auto}.content-browser:has(.fs-grip:hover),.content-browser:has(.fs-grip:active),.content-browser:has(.fs-grip:focus-visible){border-top-color:var(--border-focus)}.content-browser__scroll-wrapper{position:relative;display:flex;flex-shrink:0;--fs-arrow-bg: var(--bg-raised-sub)}.content-browser__scroll-wrapper:last-child{--fs-arrow-bg: var(--bg-raised);flex:1;min-height:0;overflow-y:hidden}.content-browser__categories{display:flex;align-items:flex-end;gap:0;padding:0 var(--space-2);overflow-x:auto;flex:1;border-bottom:1px solid var(--border-subtle);background:var(--bg-raised-sub);position:relative;scrollbar-width:none}.content-browser__categories::-webkit-scrollbar{display:none}.content-browser__search{flex-shrink:0;width:124px;padding:3px 8px;margin-right:6px;margin-bottom:3px;font-size:var(--font-size-xs);font-family:var(--font-sans);font-weight:600;color:var(--text-primary);background:var(--bg-raised);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);outline:none;align-self:center}.content-browser__search:focus{border-color:var(--text-secondary)}.content-browser__search::placeholder{color:var(--text-muted);font-weight:500}.content-browser__cat-btn{flex-shrink:0;padding:5px 14px 4px;font-size:var(--font-size-sm);font-family:var(--font-sans);font-weight:600;cursor:pointer;transition:color .15s,background .15s;border:1px solid transparent;border-bottom:1px solid var(--border-subtle);border-radius:var(--border-radius-sm) var(--border-radius-sm) 0 0;background:var(--bg-raised-sub);color:var(--text-secondary);position:relative;bottom:-1px}.content-browser__cat-btn:hover{color:var(--text-primary);background:#00000005}:root[data-theme=dark] .content-browser__cat-btn:hover{background:#ffffff0f}.content-browser__cat-btn--active{color:var(--text-primary);border-color:var(--border-subtle);border-bottom-color:transparent}.content-browser__items{overflow-x:auto;overflow-y:hidden;padding:var(--space-1) var(--space-3) var(--space-2);display:flex;flex:1;flex-wrap:nowrap;gap:2px;align-items:flex-start;scrollbar-width:none}.content-browser__items::-webkit-scrollbar{display:none}.content-browser__empty{padding:var(--space-4) var(--space-3);color:var(--text-muted);font-size:var(--font-size-xs);font-style:italic}.saved-group-card{position:relative;flex-shrink:0;width:140px;margin:var(--space-2) var(--space-1) 0;cursor:grab;user-select:none;zoom:.67}.saved-group-card--preview{width:108px}.saved-group-card--preview .saved-group-card__title{min-height:2.4em}.saved-group-card:active{cursor:grabbing}.saved-group-card__frame{border:2px solid;border-radius:0;overflow:hidden;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-fast),transform var(--transition-fast)}.saved-group-card:hover .saved-group-card__frame{box-shadow:var(--shadow-lg);transform:translate(var(--fs-node-rise),var(--fs-node-rise))}.saved-group-card__header{display:flex;align-items:center;min-height:22px;padding:2px 8px}.saved-group-card__title{font-size:var(--font-size-xs);font-weight:600;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,.45);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;line-height:1.2}.saved-group-card__body{padding:var(--space-1);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:40px}.saved-group-card__count{font-size:var(--font-size-xs);color:var(--text-secondary);font-weight:500}.saved-group-card__delete{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border:none;border-radius:50%;background:var(--bg-panel);color:var(--text-secondary);font-size:14px;line-height:1;cursor:pointer;box-shadow:var(--shadow-sm);display:none;align-items:center;justify-content:center;padding:0}.saved-group-card:hover .saved-group-card__delete{display:flex}.saved-group-card__delete:hover{background:#e74c3c;color:#fff}@media(pointer:coarse){.content-browser__cat-btn{padding:10px 18px 9px;font-size:11px}.content-browser__search{padding:8px 10px;font-size:11px;width:140px}.saved-group-card__delete{display:flex;top:-10px;right:-10px;width:28px;height:28px;font-size:18px}}.limit-modal__suggestions{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.45}.limit-modal__ignore{display:flex;align-items:flex-start;gap:8px;font-size:var(--font-size-xs);color:var(--text-secondary);line-height:1.4;cursor:pointer;user-select:none}.limit-modal__ignore input{margin:2px 0 0;flex:none}.cost-profile-modal__field{display:flex;flex-direction:column;gap:4px;margin-top:12px;font-size:var(--font-size-sm);color:var(--text-secondary)}.cost-profile-modal__field input{padding:6px 8px;font-family:var(--font-sans);font-size:var(--font-size-sm);color:var(--text-primary);background:var(--bg-input, var(--bg-panel));border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm)}.cost-profile-modal__field input:focus{outline:none;border-color:var(--border-focus)}.cost-profile-modal__choices{display:flex;flex-direction:column;gap:8px;margin-top:12px}.cost-profile-modal__choice{display:flex;align-items:flex-start;gap:8px;font-size:var(--font-size-sm);color:var(--text-primary);cursor:pointer}.cost-profile-modal__choice--off{color:var(--text-secondary);opacity:.6;cursor:default}.cost-profile-modal__choice input{margin-top:2px;flex:none}.cost-bar{padding:var(--space-3);flex-shrink:0;border-radius:var(--border-radius-sm);transition:box-shadow var(--transition-fast),background var(--transition-fast)}.cost-bar--drop{box-shadow:inset 0 0 0 2px var(--border-focus);background:color-mix(in srgb,var(--border-focus) 8%,transparent)}.cost-bar__override{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap}.cost-bar__override-tag{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cost-bar__override--warn .cost-bar__override-tag{color:var(--cost-high)}.cost-bar__override-btn{font-family:var(--font-sans);font-size:var(--font-size-xs);color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);padding:1px var(--space-2);cursor:pointer;transition:border-color var(--transition-fast)}.cost-bar__override-btn:hover{border-color:var(--border-default)}.cost-bar__device-row{display:flex;align-items:stretch;gap:var(--space-1);margin-bottom:var(--space-2)}.cost-bar__headset-select{width:100%;font-family:var(--font-sans);font-size:var(--font-size-xs);font-weight:500;color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);padding:var(--space-1) var(--space-2);cursor:pointer;transition:border-color var(--transition-fast)}.cost-bar__device-row .cost-bar__headset-select{flex:1;width:auto;min-width:0}.cost-bar__device-remove{flex-shrink:0;font-family:var(--font-sans);font-size:var(--font-size-xs);color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);padding:0 var(--space-2);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast)}.cost-bar__device-remove:hover{border-color:var(--cost-high);color:var(--cost-high)}.cost-bar__bench-offer{display:flex;align-items:center;gap:var(--space-1);margin-top:var(--space-1);padding:2px var(--space-1) 2px var(--space-2);font-family:var(--font-sans);font-size:var(--font-size-xs);color:var(--text-primary);background:color-mix(in srgb,var(--border-focus) 8%,transparent);border:1px solid var(--border-focus);border-radius:var(--border-radius-sm)}.cost-bar__bench-offer-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cost-bar__bench-add{flex-shrink:0;font-family:var(--font-sans);font-size:var(--font-size-xs);font-weight:700;color:#fff;background:var(--border-focus);border:1px solid var(--border-focus);border-radius:var(--border-radius-sm);padding:1px var(--space-2);cursor:pointer}.cost-bar__bench-add:hover{filter:brightness(1.1)}.cost-bar__bench-dismiss{flex-shrink:0;font-family:var(--font-sans);font-size:var(--font-size-xs);color:var(--text-secondary);background:transparent;border:none;padding:1px var(--space-1);cursor:pointer}.cost-bar__bench-dismiss:hover{color:var(--cost-high)}.cost-bar__notice{display:flex;align-items:flex-start;gap:var(--space-1);margin-top:var(--space-1);padding:3px var(--space-1) 3px var(--space-2);font-family:var(--font-sans);font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm)}.cost-bar__notice-text{flex:1;min-width:0;overflow-wrap:anywhere}.cost-bar__headset-select:hover{border-color:var(--border-default)}.cost-bar__headset-select:focus{outline:none;border-color:var(--border-focus)}.cost-bar__labels{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2)}.cost-bar__label-end{font-size:var(--font-size-xs);color:var(--text-muted);font-family:var(--font-mono)}.cost-bar__value{font-family:var(--font-mono);font-size:var(--font-size-md);font-weight:700;color:var(--text-primary)}.cost-bar__value--link{padding:0;border:none;background:none;cursor:pointer;text-decoration:none}.cost-bar__value--link:hover{text-decoration:underline}.cost-bar__value--link:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.cost-bar__value--over{color:var(--cost-high)}.cost-bar__track-row{display:flex;align-items:center;gap:var(--space-2)}.cost-bar__track-row .cost-bar__pole-picker{width:20px;height:20px;padding:0;border:1px solid var(--border-subtle);border-radius:0;cursor:pointer;flex-shrink:0}.cost-bar__track{flex:1;height:10px;border-radius:0;position:relative}.cost-bar__indicator{position:absolute;top:-3px;width:5px;height:16px;background:var(--text-primary);border-radius:0;transform:translate(-50%);box-shadow:var(--shadow-sm);transition:left var(--transition-normal)}.cost-cap-menu{position:fixed;z-index:var(--z-menu);min-width:200px;padding:var(--space-2);background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-md);box-shadow:var(--shadow-md);font-size:var(--font-size-sm);color:var(--text-primary)}.cost-cap-menu__title{margin-bottom:var(--space-1);font-weight:600}.cost-cap-menu__row{display:flex;align-items:center;gap:var(--space-1)}.cost-cap-menu__input{flex:1;min-width:0;padding:3px 6px;font:inherit;color:var(--text-primary);background:var(--bg-app);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm)}.cost-cap-menu__unit{color:var(--text-secondary)}.cost-cap-menu__apply,.cost-cap-menu__reset{font:inherit;color:var(--text-primary);background:var(--bg-app);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);padding:3px 8px;cursor:pointer}.cost-cap-menu__reset{width:100%;margin-top:var(--space-1);color:var(--text-secondary);text-align:left}.cost-cap-menu__apply:hover:not(:disabled),.cost-cap-menu__reset:hover:not(:disabled){border-color:var(--border-focus)}.cost-cap-menu__reset:disabled{opacity:.5;cursor:default}.cost-bar__cap-mark{color:var(--text-secondary)}.preview-link{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:-1;transition:opacity .16s ease}.preview-link__path{stroke:var(--node-cost-text, #000);stroke-width:4.5;stroke-linecap:butt;stroke-dasharray:6 3;opacity:.8;filter:drop-shadow(1px 1px 0 var(--node-cost-text-shadow, rgba(0, 0, 0, .35)));animation:preview-link-flow .9s linear infinite}@keyframes preview-link-flow{to{stroke-dashoffset:-18}}@media(prefers-reduced-motion:reduce){.preview-link__path{animation:none}}.node-editor{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg-panel)}.node-editor__canvas{flex:1;position:relative;overflow:hidden}.node-editor__cost-overlay{position:absolute;top:var(--space-3);right:var(--space-3);z-index:var(--z-controls);width:280px;max-width:calc(100% - 110px)}.node-editor__new-btn{position:absolute;top:var(--space-3);left:var(--space-3);z-index:var(--z-controls);display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);line-height:1;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#1a1a1a;background:#cdeab0;border:1px solid #8fbf5e;border-radius:var(--border-radius-sm);box-shadow:var(--shadow-float);padding:0 14px;cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}.node-editor__new-btn:hover{background:#bce197;border-color:#6fa63e}.node-editor__new-btn:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.node-editor__cost-overlay .cost-bar{padding:var(--space-2);background:#ffffffd9;backdrop-filter:blur(8px);border:1px solid var(--border-subtle);border-radius:var(--border-radius-md);box-shadow:var(--shadow-float)}:root[data-theme=dark] .node-editor__cost-overlay .cost-bar{background:#4e535bd9}.node-editor .react-flow__edge.animated path:not(.react-flow__edge-interaction):not([stroke-dasharray]){stroke-linecap:round}.node-editor .react-flow__node{border:none;box-shadow:none;background:transparent;padding:0}.node-editor .react-flow__node-output,.node-editor .react-flow__node-output.selectable:hover,.node-editor .react-flow__node-output.selectable.selected,.node-editor .react-flow__node-output.selectable:focus,.node-editor .react-flow__node-output.selectable:focus-visible{width:auto;padding:0;border:none;background:transparent;box-shadow:none}.node-editor .react-flow__nodesselection-rect,.node-editor .react-flow__selection{background:transparent!important;border:none!important;border-radius:0}.node-editor .react-flow__selection{outline:1px dotted var(--border-focus)}.node-editor .react-flow__nodesselection-rect:after{--fs-sel-pad: 5px;content:"";position:absolute;inset:calc(var(--fs-node-rise) - var(--fs-sel-pad)) calc(-1 * (var(--fs-sel-dr, 0px) + var(--fs-sel-pad) + var(--fs-node-rise))) calc(-1 * (var(--fs-sel-db, 0px) + var(--fs-sel-pad) + var(--fs-node-rise))) calc(var(--fs-node-rise) - var(--fs-sel-pad));border:1px dotted var(--border-focus);pointer-events:none}.node-editor .react-flow__edge-interaction{stroke-width:20;stroke:transparent;fill:none;pointer-events:stroke;cursor:pointer}.node-editor .react-flow__node.fs-collapsed-member,.node-editor .react-flow__edge.fs-collapsed-edge{display:none!important}.node-editor .react-flow__edge.fs-edge-drop-target path:not(.react-flow__edge-interaction){stroke-width:4!important;opacity:1!important}.node-editor .react-flow__node.fs-connect-target{outline:2px solid var(--border-focus);outline-offset:4px;border-radius:var(--border-radius-md)}.node-editor .react-flow__node.fs-connect-front{z-index:10000!important}.node-editor .react-flow__handle.fs-connect-socket{box-shadow:0 0 0 3px var(--border-focus),0 0 0 1px #00000026}.node-editor__bg-color-btn{position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer}.node-editor__bg-color-swatch{width:14px;height:14px;border:1px solid var(--border-default);border-radius:0;pointer-events:none}.node-editor__canvas.fs-draw-active,.node-editor__canvas.fs-draw-active .react-flow__pane{cursor:crosshair}.node-editor__canvas.fs-erase-active,.node-editor__canvas.fs-erase-active .react-flow__pane{cursor:cell}.node-editor .fs-canvas-bar{display:flex;align-items:center;gap:10px;padding:6px 8px;background:var(--bg-raised);border:1px solid var(--border-subtle);border-radius:var(--border-radius-md);box-shadow:var(--shadow-float);width:max-content;flex-wrap:wrap;justify-content:flex-start;max-width:calc(100% - 30px)}.node-editor__import-note{position:absolute;top:var(--space-3);left:90px;right:calc(var(--ctl-size) + var(--space-2) + 290px);margin:0 auto;width:max-content;max-width:100%;z-index:var(--z-controls);display:flex;align-items:center;gap:8px;padding:5px 8px 5px 12px;font-size:var(--font-size-xs);color:var(--text-primary);background:var(--bg-raised);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-float)}.node-editor__import-note-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;font-size:12px;line-height:1;color:var(--text-secondary);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast)}.node-editor__import-note-btn:hover{border-color:var(--border-focus);color:var(--border-focus)}.node-editor__import-note-btn:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.node-editor__import-ghost{position:fixed;z-index:var(--z-controls);display:flex;align-items:center;gap:6px;padding:4px 10px;font-size:var(--font-size-xs);color:var(--text-primary);background:var(--bg-raised);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-float);pointer-events:none;transform:translate(-50%,-50%);white-space:nowrap}.node-editor__import-ghost-dot{width:8px;height:8px;border-radius:50%;background:var(--border-focus);animation:fs-import-pulse .9s ease-in-out infinite}@keyframes fs-import-pulse{0%,to{opacity:.35;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}.fs-canvas-bar__group{display:flex;align-items:center;gap:6px}.fs-canvas-bar__group+.fs-canvas-bar__group{padding-left:10px;border-left:1px solid var(--border-subtle)}.fs-canvas-bar__btn{display:inline-flex;align-items:center;justify-content:center;width:var(--ctl-size);height:var(--ctl-size);padding:0;font-size:15px;line-height:1;color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast),opacity var(--transition-fast)}.fs-canvas-bar__group--history{gap:0;border:2px solid var(--border-strong);border-radius:var(--border-radius-sm);background:var(--bg-panel);overflow:hidden}.fs-canvas-bar__btn--history{border:none;border-radius:0;background:none;color:var(--text-primary)}.fs-canvas-bar__btn--history+.fs-canvas-bar__btn--history{border-left:1px solid var(--border-default)}.fs-canvas-bar__btn--history svg{width:19px;height:19px;display:block;fill:currentColor}.fs-canvas-bar__btn--history:hover:not(:disabled){background:var(--bg-surface-hover);color:var(--border-focus)}.fs-canvas-bar__btn--history:focus-visible{outline:none;background:var(--bg-surface-hover);color:var(--border-focus)}.fs-canvas-bar__btn:hover:not(:disabled){border-color:var(--border-focus);color:var(--border-focus)}.fs-canvas-bar__btn:disabled{opacity:.35;cursor:default}.fs-canvas-bar__btn:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.fs-draw-controls{position:absolute;bottom:calc(100% + 8px);left:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;padding:6px 10px;background:var(--bg-raised);border:1px solid var(--border-subtle);border-radius:var(--border-radius-md);box-shadow:var(--shadow-float);width:max-content;max-width:100%}.fs-draw-btn{display:inline-flex;align-items:center;gap:5px;font-size:var(--font-size-xs);font-weight:600;color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);padding:5px 10px;cursor:pointer;white-space:nowrap}.fs-draw-btn:hover{border-color:var(--border-focus)}.fs-draw-btn.is-active{background:#2b6cff;border-color:#2b6cff;color:#fff}.fs-draw-btn--sm{padding:4px 8px}.fs-draw-btn:disabled{opacity:.45;cursor:not-allowed}.fs-draw-controls .fs-draw-swatch{position:relative;width:22px;height:22px;padding:0;border-radius:var(--border-radius-sm);border:1px solid var(--border-default);overflow:hidden;cursor:pointer}.fs-draw-field{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-xs);color:var(--text-secondary)}.fs-draw-field>span{width:12px;text-align:center}.fs-draw-field>input[type=range]{width:84px;accent-color:#2b6cff}.fs-draw-field>b{min-width:30px;color:var(--text-primary);font-variant-numeric:tabular-nums}.shader-preview{display:flex;flex-direction:column;height:100%;background:var(--bg-panel)}.shader-preview__ctl-wrap{position:relative;display:flex;flex-shrink:0;--fs-arrow-bg: var(--bg-surface)}.shader-preview__controls{display:flex;align-items:center;gap:8px;padding:var(--space-1) var(--space-3);background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);flex-shrink:0;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.shader-preview__controls::-webkit-scrollbar{display:none}.shader-preview__controls>*{flex-shrink:0}.shader-preview__reset-btn{display:flex;align-items:center;justify-content:center;width:var(--ctl-size);height:var(--ctl-size);padding:0;font-size:14px;font-weight:600;line-height:1;color:#d32f2f;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);cursor:pointer;font-family:var(--font-sans)}.shader-preview__reset-btn:hover{border-color:#d32f2f;background:#d32f2f0f}.shader-preview__reset-btn:active{background:#d32f2f1f}.shader-preview__vr-btn{display:flex;align-items:center;justify-content:center;height:var(--ctl-size);padding:0 9px;font-size:12px;font-weight:700;letter-spacing:.02em;line-height:1;color:var(--text-primary);background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);cursor:pointer;font-family:var(--font-sans)}.shader-preview__vr-btn:hover{border-color:var(--border-focus)}.shader-preview__play-btn,.shader-preview__anim-play,.shader-preview__anim-inplace,.shader-preview__anim-clips-btn{display:flex;align-items:center;justify-content:center;width:var(--ctl-size);height:var(--ctl-size);padding:0;font-size:12px;line-height:1;border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);background:var(--bg-panel);color:var(--text-primary);cursor:pointer;font-family:var(--font-sans)}.shader-preview__play-btn:hover,.shader-preview__anim-play:hover,.shader-preview__anim-clips-btn:hover,.shader-preview__anim-inplace:not(:disabled):hover{border-color:var(--border-focus)}.shader-preview__anim-clips-btn--active{color:var(--text-primary);border-color:var(--border-focus);background:#0000000a}:root[data-theme=dark] .shader-preview__anim-clips-btn--active{background:#ffffff0f}.shader-preview__fs-btn{display:flex;align-items:center;justify-content:center;width:var(--ctl-size);height:var(--ctl-size);padding:0;font-size:14px;line-height:1;border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);background:var(--bg-panel);color:var(--text-primary);cursor:pointer}.shader-preview__fs-btn:hover{border-color:var(--border-focus)}.shader-preview:fullscreen{width:100vw;height:100vh;background:var(--bg-panel)}.shader-preview:-webkit-full-screen{width:100vw;height:100vh;background:var(--bg-panel)}.shader-preview__bottom-controls .shader-preview__bg-color{width:var(--ctl-size);height:var(--ctl-size);padding:0;border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);box-shadow:inset 0 0 0 2px var(--bg-panel);cursor:pointer;flex-shrink:0}.shader-preview__bottom-controls .shader-preview__bg-color:hover{border-color:var(--border-focus)}.shader-preview__geo-select{box-sizing:border-box;height:var(--ctl-size);font-size:var(--font-size-sm);font-family:var(--font-sans);padding:0 6px;border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);background:var(--bg-panel);color:var(--text-primary);cursor:pointer;outline:none}.shader-preview__geo-select:hover{border-color:var(--border-focus)}.shader-preview__subdivision{display:flex;align-items:center;gap:4px;padding:0 6px;height:var(--ctl-size);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);background:var(--bg-panel)}.shader-preview__subdivision:hover{border-color:var(--border-focus)}.shader-preview__subdivision-slider{width:75px;margin:0;cursor:pointer}.shader-preview__subdivision-value{font-size:12px;font-family:var(--font-mono, monospace);color:var(--text-secondary);min-width:var(--ctl-size);text-align:right;user-select:none}.shader-preview__body{flex:1;position:relative;overflow:hidden;border-bottom:1px solid var(--border-subtle)}.shader-preview:fullscreen .shader-preview__body,.shader-preview:-webkit-full-screen .shader-preview__body{border-bottom:none}.shader-preview__ctl{display:inline-flex;align-items:center;gap:5px}.shader-preview__ctl-label{font-family:var(--font-sans);font-size:12px;font-weight:600;color:var(--text-secondary);user-select:none;white-space:nowrap}.shader-preview__bottom-bar{position:absolute;left:10px;right:10px;bottom:10px;z-index:2;display:flex;align-items:center;gap:8px;flex-wrap:wrap-reverse;pointer-events:none}.shader-preview__bottom-bar>*{pointer-events:auto}.shader-preview__bottom-controls,.shader-preview__anim-controls,.shader-preview__display-controls{display:flex;align-items:center;gap:8px;padding:6px 8px;background:#ffffffd9;border:1px solid var(--border-subtle);border-radius:var(--border-radius-md);box-shadow:var(--shadow-sm);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.shader-preview__display-controls{margin-left:auto}:root[data-theme=dark] .shader-preview__bottom-controls,:root[data-theme=dark] .shader-preview__anim-controls,:root[data-theme=dark] .shader-preview__display-controls{background:#464a51d9}.shader-preview__timeline{--fs-anim-thumb: 20px;position:relative;flex:1;height:var(--ctl-size);min-width:40px;cursor:pointer;touch-action:none}.shader-preview__timeline:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--border-radius-sm)}.shader-preview__timeline-line{position:absolute;top:50%;left:calc(var(--fs-anim-thumb) / 2);right:calc(var(--fs-anim-thumb) / 2);height:2px;transform:translateY(-50%);background:var(--text-primary);box-shadow:0 0 0 1px #ffffff8c;border-radius:0;pointer-events:none}:root[data-theme=dark] .shader-preview__timeline-line{box-shadow:0 0 0 1px #00000073}.shader-preview__timeline-thumb{position:absolute;top:50%;left:calc(var(--fs-anim-thumb) / 2);width:var(--fs-anim-thumb);height:var(--fs-anim-thumb);transform:translate(-50%,-50%);background:#ffffffd9;border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-sm);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:none}:root[data-theme=dark] .shader-preview__timeline-thumb{background:#464a51d9}.shader-preview__anim-inplace--active{color:var(--text-primary);border-color:var(--border-focus);background:#0000000a}:root[data-theme=dark] .shader-preview__anim-inplace--active{background:#ffffff0f}.shader-preview__anim-inplace:disabled{opacity:.35;cursor:default}.anim-clip-menu{position:fixed;z-index:1000;min-width:140px;max-width:260px;max-height:50vh;overflow-y:auto;padding:4px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-md);box-shadow:var(--shadow-md, 0 4px 16px rgba(0, 0, 0, .25));font-family:var(--font-sans)}.anim-clip-menu__head{padding:3px 8px 5px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);user-select:none}.anim-clip-menu__item{display:flex;align-items:center;gap:6px;width:100%;padding:4px 8px;font-size:12px;font-family:inherit;text-align:left;color:var(--text-primary);background:none;border:none;border-radius:var(--border-radius-sm);cursor:pointer}.anim-clip-menu__item:hover{background:#0000000f}:root[data-theme=dark] .anim-clip-menu__item:hover{background:#ffffff14}.anim-clip-menu__item--active{font-weight:600}.anim-clip-menu__mark{flex:0 0 auto;width:8px;font-size:9px;line-height:1;color:var(--border-focus)}.anim-clip-menu__name{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shader-preview__compiling{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:0;background:#0000009e;color:#fff;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:600;pointer-events:none}.shader-preview__compiling-dot{width:8px;height:8px;border-radius:50%;background:currentColor;animation:shader-preview-pulse 1s ease-in-out infinite}@keyframes shader-preview-pulse{0%,to{opacity:.25}50%{opacity:1}}.shader-preview__iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none;display:block}:root.fs-canvas-busy .shader-preview__iframe{pointer-events:none}.shader-preview__drop-veil{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:16px;text-align:center;background:#1e28468c;color:#fff;font-family:var(--font-sans);font-size:var(--font-size-md);font-weight:700;pointer-events:none}.shader-preview__drop-notice{position:absolute;top:8px;left:8px;max-width:calc(100% - 16px);z-index:3;padding:6px 10px;border-radius:var(--border-radius-md);background:#b42828eb;color:#fff;font-family:var(--font-sans);font-size:var(--font-size-sm);pointer-events:none;white-space:pre-wrap}.shader-preview__geo-select{max-width:180px}.shader-preview__props-btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--ctl-size);padding:0 10px;font-size:var(--font-size-sm);font-weight:600;line-height:1;font-family:var(--font-sans);color:var(--text-secondary);background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);cursor:pointer}.shader-preview__ctl-right{display:inline-flex;align-items:center;gap:8px;margin-left:auto}.shader-preview__props-btn:hover{border-color:var(--border-focus)}.shader-preview__props-btn[aria-disabled=true]{opacity:.45;cursor:default}.shader-preview__props-btn[aria-disabled=true]:hover{border-color:var(--border-subtle)}.shader-preview__props-btn--active{color:var(--text-primary);border-color:var(--border-focus);background:#0000000a}.shader-preview__stats{position:absolute;top:6px;right:6px;z-index:2;padding:4px 8px;color:#fff;background:#1415198c;border:1px solid rgba(255,255,255,.18);border-radius:var(--border-radius-sm);font:12px/1.35 var(--font-mono, ui-monospace, Menlo, monospace);font-variant-numeric:tabular-nums;white-space:pre;pointer-events:none}.shader-preview__body--stats .shader-preview__uniforms{top:36px;max-height:calc(100% - 95px)}.shader-preview__uniforms{position:absolute;top:6px;right:6px;z-index:5;display:flex;flex-direction:column;gap:4px;padding:6px 8px;max-width:220px;max-height:calc(100% - 65px);overflow-y:auto;overscroll-behavior:contain;background:#ffffffeb;border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-md);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font-size:10px;color:var(--text-primary)}:root[data-theme=dark] .shader-preview__uniforms{background:#3c4046f0}:root[data-theme=dark] .shader-preview__props-btn--active{background:#ffffff0f}.shader-preview__uniforms-default-btn{padding:3px 6px;font-size:10px;line-height:1.4;color:var(--text-secondary);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--border-radius-sm);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast)}.shader-preview__uniforms-default-btn:hover{border-color:var(--border-focus);color:var(--border-focus)}.shader-preview__uniform-row{display:flex;flex-direction:column;gap:1px}.shader-preview__uniform-header{display:flex;align-items:baseline;justify-content:space-between;gap:4px}.shader-preview__uniform-name{font-weight:600;font-family:var(--font-mono, monospace);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shader-preview__uniform-value{font-family:var(--font-mono, monospace);font-size:9px;color:var(--text-secondary);flex-shrink:0}.shader-preview__uniform-revert{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:11px;line-height:1;border-radius:var(--border-radius-sm);border:1px solid var(--border-subtle);background:transparent;color:var(--text-secondary);cursor:pointer}.shader-preview__uniform-revert:disabled{opacity:.35;cursor:default}.shader-preview__uniform-revert--active{background:#d62828;border-color:#d62828;color:#fff;font-weight:700}.shader-preview__uniform-revert--active:hover{background:#b21e1e;border-color:#b21e1e}.shader-preview__uniform-value--override{color:var(--text-primary);font-weight:600}.shader-preview__uniforms-default-btn--active{color:var(--text-primary);border-color:var(--text-primary)}.shader-preview__props-btn--override{border-color:var(--text-primary)}.shader-preview__props-btn--override:after{content:"";display:inline-block;width:5px;height:5px;margin-left:5px;border-radius:50%;background:var(--text-primary);vertical-align:middle}.shader-preview__uniform-controls{display:grid;grid-template-columns:32px 1fr 32px auto;align-items:center;gap:2px}.shader-preview__uniform-controls .shader-preview__uniform-color{grid-column:1 / -2;width:100%;height:18px;padding:0;border:1px solid var(--border-subtle);border-radius:0;cursor:pointer}.shader-preview__uniform-bound{width:100%;font-size:10px;font-family:var(--font-mono, monospace);padding:1px 3px;border:1px solid var(--border-subtle);border-radius:0;background:var(--bg-input, #fff);color:var(--text-primary);text-align:center;outline:none;-moz-appearance:textfield}.shader-preview__uniform-bound::-webkit-outer-spin-button,.shader-preview__uniform-bound::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.shader-preview__uniform-bound:hover,.shader-preview__uniform-bound:focus{border-color:var(--border-focus)}.shader-preview__uniform-slider{width:100%;margin:0}.shader-preview__mic{display:flex;align-items:center;gap:6px}.shader-preview__mic-btn{display:flex;align-items:center;gap:6px;height:var(--ctl-size);padding:0 8px;font-size:var(--font-size-sm);line-height:1;color:var(--text-primary);background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--border-radius-sm);cursor:pointer;font-family:var(--font-sans)}.shader-preview__mic-btn:hover{border-color:var(--border-focus)}.shader-preview__mic-btn.is-live{border-color:#d32f2f;background:#d32f2f14}.shader-preview__mic-btn.is-starting{opacity:.7;cursor:progress}.shader-preview__mic-btn.is-failed{border-color:#e08a1e;color:#b26a00}.shader-preview__mic-meter{display:block;width:34px;height:6px;overflow:hidden;background:var(--border-subtle);border-radius:0}.shader-preview__mic-meter-fill{display:block;width:100%;height:100%;background:#d32f2f;border-radius:0;transform:scaleX(0);transform-origin:left center}.shader-preview__mic-error{max-width:190px;font-size:11px;line-height:1.25;color:#b26a00;font-family:var(--font-sans)}:root[data-theme=dark] .shader-preview__mic-btn.is-failed{color:#f0b357}:root[data-theme=dark] .shader-preview__mic-error{color:#f0b357}.fs-tooltip{position:fixed;z-index:10000;max-width:260px;padding:5px 9px;background:var(--text-primary);color:var(--bg-panel);font-family:var(--font-sans);font-size:var(--font-size-xs);font-weight:500;line-height:1.4;border-radius:var(--border-radius-sm);box-shadow:var(--shadow-md);pointer-events:none;white-space:normal;overflow-wrap:break-word;transition:opacity 80ms ease-out}.app-layout{display:flex;flex-direction:column;height:100%;width:100%;background:var(--bg-app)}.app-layout__left{display:flex;flex-direction:column;height:100%;position:relative}.app-layout__left:before{content:"";position:absolute;top:0;left:6px;right:0;height:6px;background:var(--shadow-float-color);z-index:1;pointer-events:none}.app-layout__node-editor{flex:1;overflow:hidden}.app-layout__right,.app-layout__code-panel{display:flex;flex-direction:column;height:100%}.app-layout__code{flex:1;overflow:hidden}.app-layout__preview{height:100%}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--font-size-md);color:var(--text-primary);background:var(--bg-app);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-panel)}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:0}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.react-flow__edge-path,.react-flow__connection-path{animation:none!important}}:root.fs-dragging,:root.fs-dragging *{user-select:none!important;-webkit-user-select:none!important}.fs-grip{position:absolute;display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:var(--bg-surface);border:var(--fs-grip-border, 2px) solid var(--edge-color);color:var(--text-primary);transition:border-color var(--transition-fast),color var(--transition-fast);touch-action:none;user-select:none;-webkit-user-select:none}.fs-grip:hover,.fs-grip:active,.fs-grip:focus-visible{border-color:var(--border-focus);color:var(--border-focus)}.fs-grip:focus-visible{outline:1px solid var(--border-focus);outline-offset:2px}.fs-grip:before{content:"";position:absolute;top:50%;left:50%;width:13px;height:13px;background:currentColor;border-radius:0;transform:translate(-50%,-50%) rotate(45deg)}.fs-grip--v{--fs-tabbar-h: calc(var(--ctl-size) + 9px);--fs-grip-h: calc( var(--fs-seam, 2px) / 2 + var(--fs-grip-border, 2px) / 2 + var(--fs-tabbar-h) );top:min(calc(var(--fs-grip-offset, 50%) + var(--fs-seam, 2px) / 2 - var(--fs-grip-border, 2px) / 2 + var(--fs-grip-h) / 2),calc(100% - var(--fs-asset-bar-h, 0px) - var(--fs-grip-h) / 2 - 4px));transform:translateY(-50%);right:0;width:var(--ctl-size);height:var(--fs-grip-h);cursor:col-resize;border-radius:var(--border-radius-md) 0 0 var(--border-radius-md);border-right:none}.fs-grip--xy{cursor:move}.fs-grip--h{left:90%;bottom:0;transform:translate(-50%);height:var(--ctl-size);width:calc(var(--ctl-size) * 1.6);cursor:row-resize;border-radius:var(--border-radius-md) var(--border-radius-md) 0 0;border-bottom:none}.fs-scroll-arrow{position:absolute;top:0;bottom:0;width:24px;z-index:2;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;color:var(--text-secondary);background:var(--fs-arrow-bg, var(--bg-raised-sub));padding:0;transition:background var(--transition-fast),color var(--transition-fast)}.fs-scroll-arrow--left{left:0;border-right:1px solid var(--border-default)}.fs-scroll-arrow--right{right:0;border-left:1px solid var(--border-default)}.fs-scroll-arrow:hover{color:var(--text-primary);background:var(--bg-surface-hover)}.fs-scroll-arrow--invert{background:var(--text-primary);color:var(--bg-surface);border-color:var(--text-primary)}.fs-scroll-arrow--invert:hover{background:var(--border-focus);border-color:var(--border-focus);color:#fff}@media(pointer:coarse){.fs-scroll-arrow{width:40px;font-size:26px}}
