From e713d6958213d575d43eaa188cbf62e9528c4bc3 Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Mon, 17 Aug 2026 10:34:02 -0400 Subject: [PATCH] Round two of the outside eye: contrast, scale, and travel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The whiff darkens to slate and sweeps longer; the portal-cell opens a dark void behind its collapsing rings — an opening in space, not a selected square; the tacks grow half again and recoil harder; the streak's reveal slows so the travel reads even in a sampled frame; dust lifts its contrast a step without turning heavy. The sector ghosts stay board-machinery on purpose — the reviewer allowed it, and the maze grinding IS an operation, not a spell. Co-Authored-By: Claude Fable 5 --- packages/web/src/fx-sprites/DustPuff.svelte | 6 +++--- packages/web/src/fx-sprites/Portal.svelte | 19 ++++++++++++++++++ packages/web/src/fx-sprites/Streak.svelte | 8 ++++---- packages/web/src/fx-sprites/TacksOw.svelte | 14 ++++++------- packages/web/src/fx-sprites/Whiff.svelte | 22 ++++++++++----------- 5 files changed, 44 insertions(+), 25 deletions(-) diff --git a/packages/web/src/fx-sprites/DustPuff.svelte b/packages/web/src/fx-sprites/DustPuff.svelte index 2bd1edf..60c7f4a 100644 --- a/packages/web/src/fx-sprites/DustPuff.svelte +++ b/packages/web/src/fx-sprites/DustPuff.svelte @@ -32,8 +32,8 @@ - - + + @@ -47,7 +47,7 @@ .puff.back { animation-name: blow-b; } .puff.late { animation-delay: 0.08s; } .puff.later { animation-delay: 0.16s; } - .grit circle { fill: #5c523e; animation: grit-fall 0.6s ease-in forwards; } + .grit circle { fill: #4a4232; animation: grit-fall 0.6s ease-in forwards; } @keyframes blow-a { 0% { opacity: 1; transform: translate(0, 0) scale(0.8); } 100% { opacity: 0; transform: translate(var(--ax), var(--ay)) scale(2); } diff --git a/packages/web/src/fx-sprites/Portal.svelte b/packages/web/src/fx-sprites/Portal.svelte index f9f92ca..6b325b2 100644 --- a/packages/web/src/fx-sprites/Portal.svelte +++ b/packages/web/src/fx-sprites/Portal.svelte @@ -2,6 +2,7 @@ import type { FxOf } from "../fx"; import { CELL } from "./geom"; let { fx }: { fx: FxOf<"portal" | "portal-cell"> } = $props(); + const uid = $props.id(); {#if fx.kind === "portal"} @@ -12,6 +13,17 @@ {:else} + + + + + + + + @@ -55,6 +67,7 @@ stroke-dasharray: 7 5; filter: drop-shadow(0 0 4px rgba(155, 227, 224, 0.8)); } + .void { animation: void-open 0.9s ease-out forwards; } .veil.outer { stroke-width: 2.5; animation: veil-in 0.9s ease-in forwards; } .veil.inner { stroke: rgba(180, 138, 224, 0.8); @@ -62,6 +75,12 @@ animation: veil-in 0.9s ease-in 0.2s forwards; opacity: 0; } + @keyframes void-open { + 0% { opacity: 0; transform: scale(0.4); } + 30% { opacity: 1; transform: scale(1); } + 75% { opacity: 0.9; transform: scale(0.92); } + 100% { opacity: 0; transform: scale(0.5); } + } @keyframes veil-in { 0% { opacity: 0; transform: scale(1.25); } 25% { opacity: 1; } diff --git a/packages/web/src/fx-sprites/Streak.svelte b/packages/web/src/fx-sprites/Streak.svelte index 311cc86..8b3992c 100644 --- a/packages/web/src/fx-sprites/Streak.svelte +++ b/packages/web/src/fx-sprites/Streak.svelte @@ -11,7 +11,7 @@ - @@ -20,18 +20,18 @@ fill: none; stroke-linecap: round; stroke-dasharray: 100 100; - animation: draw-collapse 0.55s ease-out forwards; + animation: draw-collapse 0.68s ease-out forwards; } .trail.wide { stroke: rgba(233, 225, 203, 0.4); stroke-width: 7; } .trail.bright { stroke: rgba(255, 253, 240, 0.9); stroke-width: 3; } .head { fill: #fffdf0; - animation: head-life 0.5s ease-out forwards; + animation: head-life 0.6s ease-out forwards; } /* Draw from source to head, then the tail chases it into the destination. */ @keyframes draw-collapse { 0% { stroke-dashoffset: 100; opacity: 0.95; } - 47% { stroke-dashoffset: 0; opacity: 0.95; } + 56% { stroke-dashoffset: 0; opacity: 0.95; } 100% { stroke-dashoffset: -100; opacity: 0; } } @keyframes head-life { diff --git a/packages/web/src/fx-sprites/TacksOw.svelte b/packages/web/src/fx-sprites/TacksOw.svelte index 75a4473..9f93389 100644 --- a/packages/web/src/fx-sprites/TacksOw.svelte +++ b/packages/web/src/fx-sprites/TacksOw.svelte @@ -14,8 +14,8 @@ {#each TACKS as t (t.cls)} - - + + {/each} @@ -34,10 +34,10 @@ .tack.late { animation-delay: 0.1s; } .tack.later { animation-delay: 0.2s; } @keyframes tack-hop { - 0% { opacity: 0; transform: translateY(3px); } - 25% { opacity: 1; transform: translateY(-6px); } - 55% { transform: translateY(-1px); } - 75% { transform: translateY(-4px); } - 100% { opacity: 0; transform: translateY(-1px); } + 0% { opacity: 0; transform: translateY(4px); } + 22% { opacity: 1; transform: translateY(-10px); } + 50% { transform: translateY(-2px); } + 72% { transform: translateY(-7px); } + 100% { opacity: 0; transform: translateY(-2px); } } diff --git a/packages/web/src/fx-sprites/Whiff.svelte b/packages/web/src/fx-sprites/Whiff.svelte index 8b90edd..7b844df 100644 --- a/packages/web/src/fx-sprites/Whiff.svelte +++ b/packages/web/src/fx-sprites/Whiff.svelte @@ -6,27 +6,27 @@ - - - + + +