Coherencia con render() y renderWithVerticalFade(): el píxel no sustituido pasa por sub_palette_ en vez de copiarse crudo. Hoy es no-op (las surfaces que usan color replace no hacen fadeSubPalette) pero cierra la divergencia de API y previene regresiones futuras. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>