fix: the predict card matches its design - #587
Merged
Merged
Conversation
…opy, tile gap, and Make a guess then Find out
…d scrolls with it after the content
… around the body, as the design draws it
… ring, accent once saved
This was referenced Sep 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
An audit of #510 and #523 found both correct. Every mood-following mark on Roasty reads the mood the design gives it, the palette guard pins the rest, and the predict card hands its guess to Roasty exactly as the design calls the feedback block. What the audit also found is the predict card around that block, ported before #523 and never compared to the design since:
gap: 11px.And the button on every card. The design lays each card out as a stretching column with a spacer before the button, so the way on sits at the foot of the screen and a taller card scrolls with the button after it. The app's shell put the button straight after the content, on every kind. The lesson screen and the mini-game player now scroll the card through a host that gives it the viewport's height, and the shell spreads its two halves into it, with the design's
paddingTop: 32above the button.And Roasty's card face. The design shows two things once the guess is taken: a wide, still halo behind him, and a tight glow in the mood's warn colour breathing around his body,
drop-shadow(0 0 12px var(--warn))at its peak every 1.6 seconds. The app had one halo that blinked and no glow on the body. The halo now holds, and the shimmer is the bean's outline blurred in warn under the body's own transform, so it hugs him through the sway.And the top bar's bookmark. The design's bookmark style is settled as
ring: on a top bar the save control is a 32 ring on a1px solid var(--rule)border, muted ink, with the mark at 16, turning accent once saved. The app drew the bare mark in full ink. The lesson, the term page and Term of the Day now pass the ring; the term page's back control was already ringed, so its two ends finally match, as the design's note on that page says they should.Watch for
AppLabels, because the simulator smoke walk waits for a live Continue on every card and the first lesson opens on a predict card. The walk now takes Continue or Find out as the way on, from the same constants.marginTop: 18,margin: '30px 0 0',lineHeight: 1.55,lineHeight: 1.5andgap: 11px; the register test holds them against the prototype.Not here
Two spacings that reach every card kind, filed as #594 and listed on #365: the verdict block's
marginTop = 22, which nine hosts set at 16 each, and the gap above the button, which the design sets at 30 on predict and decision and 26 on recall where the shell keeps 32.Checks
The simulator smoke walk, which gates
mainonly, ran locally with CI's own recipe and passed with the Dart tests executing: the cold launch walks the first lesson through its predict card on the new gate.