/* 160 Hz-ready canvas path: one compositor transform per display refresh. */
.graph-world{
  will-change:transform;
  backface-visibility:hidden;
  transform-style:flat;
  contain:layout style paint;
}

.white-canvas{
  overscroll-behavior:none;
}

/* Selected liquid controls have no light/dark rim in either theme. */
.task-node .mode-tabs button.active,
.task-node .mode-tabs button.active:hover,
.task-node .mode-tabs button.active:focus-visible,
.task-node .choice-group button.selected,
.task-node .choice-group button.selected:hover,
.task-node .choice-group button.selected:focus-visible{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}

/* The assistant send control is borderless in light and dark themes. */
.yz-assistant-send,
.yz-assistant-send:hover:not(:disabled),
.yz-assistant-send:focus,
.yz-assistant-send:focus-visible{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}

.white-canvas.is-panning .graph-world{
  pointer-events:none;
}

/* Nonessential paint animations yield while the viewport itself is moving. */
.white-canvas.is-panning .yz-flow-wire-pulse,
.white-canvas.is-panning .active-wire,
.white-canvas.is-panning .mode-tabs button.active,
.white-canvas.is-panning .choice-group button.selected,
.white-canvas.is-panning .primary-run,
.white-canvas.is-panning .mode-tabs button.active::before,
.white-canvas.is-panning .choice-group button.selected::before,
.white-canvas.is-panning .primary-run::before,
.white-canvas.is-panning .mode-tabs button.active::after,
.white-canvas.is-panning .choice-group button.selected::after,
.white-canvas.is-panning .primary-run::after{
  animation-play-state:paused!important;
}

.white-canvas.is-panning .thin-connections path{
  shape-rendering:optimizeSpeed;
}

.white-canvas.is-panning .clean-node,
.white-canvas.is-panning .image-input-card,
.white-canvas.is-panning .result-card{
  box-shadow:none!important;
}

@media(prefers-reduced-motion:reduce){
  .graph-world{will-change:auto}
}
