Skip to content

feat(landing): homepage rebuild — persona manifesto, card beat high, /lp/card retired - #2690

Draft
0xkkonrad wants to merge 17 commits into
devfrom
lp-refresh
Draft

feat(landing): homepage rebuild — persona manifesto, card beat high, /lp/card retired#2690
0xkkonrad wants to merge 17 commits into
devfrom
lp-refresh

Conversation

@0xkkonrad

@0xkkonrad 0xkkonrad commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Continues #2686 — same commits, branch renamed feat/lp-refreshlp-refresh per Konrad (org ruleset blocks in-place renames, so this is a successor PR; all QA history lives on #2686).

Summary

Rebuild of the peanut.me homepage per mockup v3.1 (mono projects/lp-refresh/mockups/mockup.html, Konrad-approved 2026-08-13). Doctrine: reuse the live page heavily — the homepage is the live sections reordered, plus two new folds. The earlier v1 implementation on this branch was rejected as too busy and is fully unwound (additive commits, no force-push).

New fold order (bg): live hero (pink) → ShhhhhFold (black, NEW) → ProblemFold (cream, NEW) → NoFees (blue) → yourMoney (yellow) → TweetCarousel (pink) → RegulatedRails (cream) → Manteca (blue ← was cream) → securityBuiltIn (pink) → sendInSeconds (yellow) → FAQs → footer. Yellow marquee strips between every fold as on live; the strip after ShhhhhFold carries the /shhhhh words (IYKYK · WORD TRAVELS · …).

  • ShhhhhFold — distills /shhhhh §1 onto black: wordmark, tagline, body with shared ScarcityCounter (51→50), TRY THE DOOR + waitlist link, blurred PixelatedCardFace at −12°. Every click routes to /shhhhh — no inline join logic. Copy comes from the existing shhhhh.* next-intl catalog (already localized, 4 locales). Pink drop shadows on this fold only (black shadows vanish on black).
  • ProblemFold — "You already know the problem." + three named cards (Living across borders / Sending money home / Paid from abroad) with inline line icons. Landing i18n keys added EN-first in all catalogs.
  • Restored verbatim from dev (v1 had deleted/edited them): TweetCarousel + tweets.consts, hero, noFees, StickyMobileCTA, ExchangeRateWidget, landingStrings/types/content, all src/i18n catalogs. sendInSeconds keeps the full scroll-freeze grow-button machinery.
  • Kept from v1: /lp/card retired (redirect → /shhhhh in redirects.json, route deleted, sitemap + robots cleaned), shared ScarcityCounter, 20→50/week admission copy across /shhhhh + metadata per product/card.md ruling 2026-08-12.
  • Deleted v1 beats: CardBeat, Manifesto, ProblemProse, WorksToday, NotForYou, Sparkle. CardPioneers + PioneerCard3D stay deleted (no longer rendered anywhere).
  • Kill switch: disableLandingCardFold (default off) hides ShhhhhFold + its marquee strip in one flip, mirroring the old disableCardPioneers gating.
  • Manteca background is now a prop (default cream) — only the homepage passes blue; /quests unchanged.

Design source: mockup v3.1 + decisions in mono projects/lp-refresh/README.md.

Task

TASK-21424 — https://app.notion.com/p/3ba83811757981dd8b7cd252044265e5

Risks / notes for review

  • ⚠️ Rain marketing compliance: the homepage card fold is a public card surface → needs Rain pre-publication review (14 days) before PROD merge. Preview/staging is fine.
  • ProblemFold copy ships EN-first in all landing catalogs; es-419 / es-AR / pt-BR translations are a follow-up before prod merge (PT-BR framing rules apply). ShhhhhFold needs no new translation (reuses the shhhhh catalog).
  • ShhhhhFold copy is app-locale (next-intl), not landing-locale: SSR renders EN, client swaps to the user's locale — same behavior as /shhhhh itself.
  • Pre-existing dev bug left in place (restored file): noFees "See the markup on" links point at /compare/wise|paypal|western-union, which 404 (only peanut-vs-* slugs are generated). Worth a separate one-line PR.
  • npm run build could not run locally (sandbox OOM, environmental); typecheck + 231 suites / 2939 tests green locally — CI + Vercel preview are the build verification.

QA

  • Local gate: prettier ✅ · typecheck ✅ · jest 231 suites / 2939 tests ✅ · eslint ✅.
  • Visual QA vs mockup v3.1 AND vs live peanut.me (reused folds must match live) runs against the Vercel preview — results in a follow-up comment.

🤖 Generated with Claude Code

#qr-pay lockups (cb10001 — revised ruling, partly reverts #2692)

Per mono projects/lp-refresh/handoff-qrpay-lockups.md: original wavy flag artwork restored (flag-only viewBox crop), pink tile + white card removed, black marks straight on the ground (9:1 on blue, 19:1 on cream), scale L. Two consequences stated deliberately, not to be "fixed":

  1. PIX and MercadoPago now present two ways on one page — pink tile in #regulated-rails, plain in #qr-pay, one scroll apart. Konrad accepted this inconsistency in exchange for a calmer fold.
  2. The Argentine flag has no black stroke in its original artwork — at 1.37:1 its light blue loses its edges against the homepage blue. Property of the artwork, predates the tile, survives it. An AR-only outline is a small separate change awaiting Konrad's say-so; do not bundle.

…, 11 sections diet to 5 beats

Locked plan (mono projects/lp-refresh): card beat imports /shhhhh straight
after the hero, manifesto + problem prose follow, works-today grid carries
the surviving proof (live FX widget, compare links), exclusion ending
closes. /lp/card retired via permanent redirect to /shhhhh; sitemap and
robots entries removed. Sticky bar splits by audience (SIGN UP NOW +
TRY THE DOOR). Weekly admission copy moves 20 -> 50 per product/card.md
ruling 2026-08-12. New landing copy ships EN-first in all catalogs;
localization follows before prod merge.
… FX widget landing mode, sticky-bar migration branch + robust suppression, card kill switch, shared ScarcityCounter, dead code out

17-item consolidated fix from 7 review angles + visual/copy QA:
zero-fee claim now appears exactly once; ExchangeRateWidget gains
hideCta/hideFees/default corridor props (USD->BRL — widget enforces a
USD leg); StickyMobileCTA regains the pwa-sunset store branch and
suppresses via data-own-cta + MutationObserver instead of one-shot id
lookup; disableCardBeat kill switch; DOOR_TRY gains surface on /shhhhh;
/lp/card purged from build scripts, /shhhhh added to the sitemap;
ScarcityCounter shared by homepage + /shhhhh with ADMISSIONS_PER_WEEK=50
in doorTally.utils; TweetCarousel + 10 orphaned i18n keys deleted;
static beats back to server slots; card face ssr:false behind a
reserved box; content submodule bumped to the Sumsub FAQ fix.
The manifesto rebuild rewrote sections that already earn their keep. Most
of the approved v3 page is the live folds in a new order, so restore them
and re-sequence instead of writing new ones.

Two folds are new. A black door fold distils the /shhhhh hero — same
catalog, same scarcity counter — and every click in it goes to /shhhhh, so
the fold makes the offer and the page does the work. A cream problem fold
names the three people we built peanut for, right before the product folds
answer them.

Restored from dev: the tweet wall, the hero, NoFees, the sticky mobile bar,
the exchange-rate widget, the landing string bag, and the marquee words
from the content system. Dropped with the rebuild: CardBeat, Manifesto,
ProblemProse, WorksToday, NotForYou. The DropLink fold leaves the homepage
because v3 has no slot for it; the component stays for /exchange.

Manteca turns blue: it now follows RegulatedRails, which is cream. On the
black fold the button and the card carry pink drop shadows, because a black
shadow is invisible there. disableCardBeat becomes disableLandingCardFold
and hides the door fold together with the closed-beta strip under it.
A transform is ignored on a non-replaced inline element, and next/link
renders an inline anchor, so the card sat straight instead of at -12deg.
The three placeholder line icons were generic stock shapes that belonged to
no other Peanut surface. Each card now carries art the site already uses, so
the fold reads as ours.

"Living across borders" takes the marquee's thumbs-up turned over — the
verdict every neobank hands these people. "Sending money home" is a Knerd
percent, outline rather than filled: at this size the filled cut closes its
counters and reads as a blob. "Paid from abroad" is the pinch hand cut out of
the no-hidden-fees art into its own asset, so the card pulls 11KB of paths
instead of the whole 34KB banner.

One 44px-tall slot holds all three, because the glyph and the drawings need
different type sizes to carry the same optical weight.
The landing page names cities and repeats product claims that all have a real
article behind them, and none of it was reachable. This links the ones with a
genuine destination and leaves the rest alone — "Instant" has no article, so
it stays plain text.

MarqueeComp now takes {label, href} items alongside plain strings, so a strip
can link some words and not others. Every existing caller passes strings and
is untouched. The strip under the door fold links all five words to /shhhhh,
since the whole strip is the door. Marquee thumbs lose their "Marquee Image"
alt: now that the strips carry links, a screen reader would read that filler
between every one.

The city line stays one translated string per locale. A helper splits it on
the city names — aliases cover "New York", "Nueva York" and "Nova York" — and
wraps the matches. A locale whose wording drops a city loses that link and
keeps its sentence, which is why the helper matches rather than interpolates.
Konrad drew a peace hand and a coin stack for the problem cards, so the
placeholder marks go: the turned-over thumbs-up and the pinch hand cropped
out of the no-hidden-fees banner last round. That crop had exactly one
consumer, so the asset goes with it. Card 2 keeps the Knerd percent, and all
three still share one 44px slot so the card tops line up.

The door fold loses its body paragraph. It was the /shhhhh pitch repeated a
click early, scarcity count and all — the fold only has to make the offer.
Wordmark, tagline, door, card. The shared ScarcityCounter stays; /shhhhh is
still its caller.
The works-with strip named nine partners and answered nothing about any of
them. Each logo now opens the page that honestly explains what it does with
Peanut: Wise and Revolut their compare pages, Mercado Pago the QR explainer,
PIX the Brazil page, and the SEPA/ACH banks the bank-deposit article. Brubank
and Stripe stay unlinked — no article covers their rail, and a logo that
lands somewhere vague is worse than one that does nothing.

Mercado Pago and PIX are the only two marks in the set that aren't a heavy
wordmark, and both were disappearing into the pink tile, so those two get a
white card behind them.

Round-2 links also stop underlining at rest. Eight underlined words in a
scrolling strip read as clutter; the underline now waits for the cursor.
…more

Six of the seven landing FAQs have a help article that answers the question
properly, and none of them said so. The FAQ panel takes an optional
learnMoreHref per question and the landing page supplies it from a map keyed
on the content system's question ids — the content file stays free of code
concerns, and a question with no honest article simply has no entry. "Why
Peanut?" has none; "My question is not here" already links the help centre.
Both other FAQsPanel callers pass nothing and are unchanged.

Konrad asked for the learn-more links right-aligned, remembering they used to
be. Git says otherwise: neither has ever carried an alignment class. The
securityBuiltIn one only looks centred on a phone because it inherits
text-center from the feature card while the paragraph beside it opts out with
text-left. Right-aligning all three is the change he actually wants; there was
nothing to revert.

The 24/7 card also drops "real humans" — we shouldn't promise a person picks
up. Spanish and Portuguese first sentences follow; second sentences untouched.
Both cards were carrying raster art at 44px. The peace hand already existed as
a vector — the same hand-peace.svg the footer and the security fold use, so the
homepage now draws from the same file instead of a near-duplicate PNG. Konrad
supplied the coin stack as an SVG too.

Ratios differ from the PNGs (37x57 and 197x173), but the shared 44px slot sizes
on height, so the row still lines up.
react-fast-marquee sets overflow-x:hidden on its container. A visible Y axis
against a hidden X axis computes to auto, so the strip clips vertically too —
and the tiles carried mb-2 with no top margin, sitting flush against that edge.
Hovering lifted a tile 2px into it and sheared off its top border.

my-2 gives the tile 8px above to move into. Measured under a real hover: the
tile top sat 2px past the clip edge before, and 6px clear of it after.
@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
peanut-wallet Ready Ready Preview Aug 14, 2026 10:45am

Request Review

@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 89f2d52b-b949-4ae1-8b46-76b57fefe9e9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Code-analysis diff

Painscore total: 7154.13 → 7161.12 (+6.99)
Findings: -12 net (+70 new, -82 resolved)

🆕 New findings (70)

  • critical complexity — src/components/LandingPage/LandingPageClient.tsx — CC 54, MI 55.94, SLOC 215
  • high complexity — src/app/shhhhh/ShhhhhLandingPage.tsx — CC 44, MI 55.87, SLOC 286
  • high hotspot — src/components/LandingPage/hero.tsx — 35 commits, +312/-223 lines since 6 months ago
  • high hotspot — src/app/shhhhh/ShhhhhLandingPage.tsx — 31 commits, +1087/-472 lines since 6 months ago
  • medium react-long-component — src/app/shhhhh/ShhhhhLandingPage.tsx:123 — ShhhhhLandingPage is 459 lines — split it
  • medium high-mdd — src/app/shhhhh/ShhhhhLandingPage.tsx:123 — ShhhhhLandingPage: MDD 176.6 (uses across many lines from declarations)
  • medium high-mdd — src/components/LandingPage/LandingPageClient.tsx:50 — LandingPageClient: MDD 66.8 (uses across many lines from declarations)
  • medium high-mdd — src/components/LandingPage/Manteca.tsx:26 — Manteca: MDD 46.1 (uses across many lines from declarations)
  • medium high-mdd — src/components/LandingPage/ProblemFold.tsx:21 — ProblemFold: MDD 37.0 (uses across many lines from declarations)
  • medium complexity — src/components/Card/share-asset/PixelatedCardFace.tsx — CC 29, MI 58.49, SLOC 146
  • medium structural-dup — app/shhhhh/ShhhhhLandingPage.tsx:82 — 28 duplicate lines / 159 tokens with components/LandingPage/StickyMobileCTA.tsx:27
  • medium high-mdd — src/components/LandingPage/ShhhhhFold.tsx:27 — ShhhhhFold: MDD 25.8 (uses across many lines from declarations)
  • medium high-mdd — src/components/LandingPage/securityBuiltIn.tsx:54 — SecurityBuiltIn: MDD 24.6 (uses across many lines from declarations)
  • medium high-mdd — src/components/LandingPage/RegulatedRails.tsx:52 — RegulatedRails: MDD 22.2 (uses across many lines from declarations)
  • medium high-mdd — src/components/LandingPage/landingStrings.ts:45 — landingStrings: MDD 20.9 (uses across many lines from declarations)
  • medium method-complexity — src/components/LandingPage/LandingPageClient.tsx:171 — CC 17 SLOC 39
  • medium complexity — src/components/Global/FAQs/index.tsx — CC 13, MI 62.66, SLOC 29
  • medium complexity — src/components/LandingPage/landingLinks.utils.ts — CC 7, MI 57.12, SLOC 35
  • medium complexity — src/components/LandingPage/RegulatedRails.tsx — CC 5, MI 55.44, SLOC 49
  • medium complexity — src/app/robots.ts — CC 4, MI 60.34, SLOC 32

…and 50 more.

✅ Resolved (82)

  • src/app/shhhhh/ShhhhhLandingPage.tsx — CC 48, MI 56.68, SLOC 304
  • src/components/LandingPage/LandingPageClient.tsx — CC 48, MI 55.67, SLOC 172
  • src/components/LandingPage/hero.tsx — 33 commits, +294/-205 lines since 6 months ago
  • src/components/LandingPage/PioneerCard3D.tsx — CC 31, MI 62.84, SLOC 153
  • src/app/lp/card/CardLandingPage.tsx — CC 15, MI 45.15, SLOC 308
  • src/app/shhhhh/ShhhhhLandingPage.tsx:140 — ShhhhhLandingPage is 457 lines — split it
  • src/app/lp/card/CardLandingPage.tsx:44 — CardLandingPage: MDD 318.2 (uses across many lines from declarations)
  • src/app/shhhhh/ShhhhhLandingPage.tsx:140 — ShhhhhLandingPage: MDD 175.8 (uses across many lines from declarations)
  • src/components/LandingPage/LandingPageClient.tsx:48 — LandingPageClient: MDD 48.3 (uses across many lines from declarations)
  • src/components/LandingPage/Manteca.tsx:20 — Manteca: MDD 47.8 (uses across many lines from declarations)
  • src/components/LandingPage/PioneerCard3D.tsx:14 — PioneerCard3D: MDD 39.7 (uses across many lines from declarations)
  • src/components/Card/share-asset/PixelatedCardFace.tsx — CC 29, MI 58.5, SLOC 146
  • app/shhhhh/ShhhhhLandingPage.tsx:99 — 28 duplicate lines / 159 tokens with components/LandingPage/StickyMobileCTA.tsx:27
  • src/app/shhhhh/ShhhhhLandingPage.tsx — 28 commits, +1078/-448 lines since 6 months ago
  • src/components/LandingPage/RegulatedRails.tsx:37 — RegulatedRails: MDD 26.8 (uses across many lines from declarations)
  • src/components/LandingPage/securityBuiltIn.tsx:54 — SecurityBuiltIn: MDD 23.2 (uses across many lines from declarations)
  • src/components/LandingPage/LandingPageClient.tsx:149 — CC 17 SLOC 39
  • src/components/Global/FAQs/index.tsx — CC 12, MI 63.28, SLOC 28
  • src/components/LandingPage/CardPioneers.tsx — CC 8, MI 63.74, SLOC 58
  • src/app/robots.ts — CC 4, MI 60.33, SLOC 32

…and 62 more.

📈 Painscore deltas (top movers)

File Before After Δ
src/components/LandingPage/ProblemFold.tsx 0.0 6.6 +6.6
src/components/LandingPage/ShhhhhFold.tsx 0.0 5.8 +5.8
src/components/LandingPage/landingLinks.utils.ts 0.0 5.7 +5.7
src/components/LandingPage/ScarcityCounter.tsx 0.0 4.9 +4.9
src/components/LandingPage/PartnerLockup.tsx 0.0 2.3 +2.3
src/components/LandingPage/landingStrings.ts 7.4 8.6 +1.2
src/components/LandingPage/yourMoney.tsx 5.3 6.2 +0.8
src/components/LandingPage/LandingPageContent.tsx 5.1 5.9 +0.8
src/components/LandingPage/RegulatedRails.tsx 7.5 8.3 +0.8
src/components/LandingPage/LandingPageClient.tsx 11.4 12.0 +0.6
src/app/lp/card/page.tsx 2.8 0.0 -2.8
src/components/LandingPage/CardPioneers.tsx 6.4 0.0 -6.4
src/components/LandingPage/PioneerCard3D.tsx 6.6 0.0 -6.6
src/app/lp/card/CardLandingPage.tsx 11.9 0.0 -11.9

@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

🧪 UI test report — ✅ all green

Suites

  • unit: 3040 ran, 0 failed, 0 skipped, 55.0s

📊 Coverage (unit)

metric %
statements 66.8%
branches 51.9%
functions 57.0%
lines 67.6%
⏱ 10 slowest test cases
time test
3.7s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › never places two stickers in heavy overlap (broad seed sweep)
1.2s src/utils/__tests__/demo-api.test.ts › isDemoMode() is false when not running under Capacitor
0.4s src/app/actions/__tests__/api-headers.test.ts › should include Content-Type in validateInviteCode
0.4s src/utils/__tests__/auth-token.test.ts › authReady does not park — hydrates the plain token without an unlock
0.3s src/utils/__tests__/sentry.utils.test.ts › defaults to the client budget under a browser global
0.3s src/utils/__tests__/auth-token.test.ts › ignores the guarded marker and falls back to the plain token
0.3s src/utils/__tests__/auth-token.test.ts › is none — never guarded — when only the guarded marker is present
0.3s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › every sticker stays within canvas at any count
0.3s src/app/(mobile-ui)/withdraw/__tests__/withdraw-states.test.tsx › Bank withdrawal keeps the $1 minimum for sub-$1 amounts
0.3s src/utils/__tests__/sentry.utils.test.ts › still lets a per-call timeoutMs win over the default
📍 Inline annotations are in the **Unit test report** check above. Coverage artifact: `coverage-unit`. Generated by `.github/workflows/tests.yml`.

The Pix wordmark in pix-brz.svg is mint #32BCAD. Against the homepage's
#90A8ED that is 1.01:1 — the same luminance as the ground — so it reads as
a rendering fault rather than a logo. It failed on cream too (2.15:1); the
blue only made it obvious. A lighter card does not rescue it either: the
mint is 2.35:1 on white and 1.17:1 on pink. Only the black mark clears 4.5:1.

So each lockup now uses what #regulated-rails already ships one fold up: the
pink partner tile, 1px black border and 4px hard shadow, holding the black
mark on the white inner card that fold gives PIX and MercadoPago (both are
line art, not heavy wordmarks, and go weak straight on the pink).

The flags stay, but as their own assets drawn to one rule — the old SVGs
baked flag and logo into a single file, so the logo could not move into a
tile without splitting them. mepa-arg.svg also carried no outline at all,
which is why Argentina dissolved into the background at 1.37:1; both flags
now have the same 3px black edge and hold their silhouette on either ground.

Also fixes the asset itself: pix-logo.svg declared viewBox "0 0 88 38" while
its ink spans x = -15.7..87.7, so the left petal of the diamond was sheared
off — visible on the rails marquee today, not just here.

Both links keep their hrefs and now look like links: the tile lifts on hover
and an underlined "Learn more ->" sits under each, reusing landingLearnMore,
so no locale file changes. On mobile the pair sits above the phone, so the
sticky CTA covers the screenshot instead of a link. Mobile and desktop share
one block via md:contents, which drops the duplicated markup from four link
elements to two.
…iles

fix(landing): give the country lockups the partner-tile treatment
Konrad hotfix ruling: the 'Settles in digital dollars at the real
exchange rate.' line goes (Manteca renders on / and /quests — removed
from both), dead landingPayLocalSettles key removed from all catalogs.
Footer link EN label Jobs → Career; es/pt keep their existing labels
for the localization gate to revisit.
@0xkkonrad

Copy link
Copy Markdown
Contributor Author

Follow-up queued for whoever is on this branch: the #qr-pay lockups need partly reverting

Nothing is in flight — no branch, no PR, no worktree. Picking this up is deliberate.

#2692 merged into lp-refresh at 06:54 today, moving the PIX and MercadoPago marks into the pink partner tile and redrawing the flags flat. Konrad then revised his own ruling after seeing it:

redraw it without the white and pink cards for the logos. just plain black on the light blue bg will suffice, no extra cards — original flags

So the target is: original flag artwork, black marks straight on the section ground, no tile and no card. That partly undoes #2692, which is exactly why it needs a handoff rather than being discovered later as a regression.

Full brief: projects/lp-refresh/handoff-qrpay-lockups.md in mono — it carries the measured contrast numbers, the exact viewBox crops that turn the combined flag+logo SVGs back into flag-only assets, and the next-env.d.ts gotcha that otherwise produces ~228 phantom TS2307 errors.

One decision is still open: mark scale, S or L. Konrad has the mockups and has not picked — https://claude.ai/code/artifact/f2f57741-2e87-4ea9-a1d6-c7749d2788aa. Don't guess; ask if he hasn't answered.

Three things from #2692 that should stay:

  • the pix-logo.svg viewBox fix — it corrects a real clip that is still live on the rails marquee, unrelated to this fold
  • the Manteca.tsx collapse to one block via md:contents (4 link elements → 2)
  • the underlined Learn more →, reusing the existing landingLearnMore key — with the tile gone it becomes the only affordance saying these are links, and it keeps the change at zero locale edits

And two consequences that belong in that PR's body rather than buried: the page will present these two brands two different ways one scroll apart (accepted, in exchange for a calmer fold — don't "fix" it by restoring the tile), and the original Argentine flag has no black stroke anywhere in the file, so at 1.37:1 it loses its edges against the blue. That's a property of the artwork, not the tile. Adding an outline to it is not authorised — offer it, don't bundle it.

…ground

Implements mono projects/lp-refresh/handoff-qrpay-lockups.md (Konrad's
revised ruling): the pink tile and white inner card go, the original
wavy flag artwork returns (cropped flag-only via root viewBox — ink
untouched), and the black marks sit directly on the section bg (9:1 on
the homepage blue, 19:1 on the /quests cream). Mark scale L per the
brief's recommendation — the PIX Banco Central strapline is illegible
at S. Fixed-height slot keeps the marks on a shared baseline; the
underlined Learn more stays as the sole click affordance. Kept from
#2692: the pix-logo viewBox fix and the Manteca mobile/desktop
collapse.
Konrad hotfix: small light-grey line below the CTA — verification
required, no monthly/annual fees, cardholder terms, beta programme.
New shhhhh.hero.disclaimer key in all four app catalogs (es/pt
machine-drafted, flag at the localization gate).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant