From 75f775064cfe50a140663b1498429a3f330b91da Mon Sep 17 00:00:00 2001 From: c0mrade Date: Tue, 26 May 2026 23:26:20 +0300 Subject: [PATCH] fix(decoration): strip 4 accent / status-hue leaks across hero surfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DESIGN.md 'Tunable-but-Scarce Rule' caps accent at <=10% of any screen and reserves the accent + status hues for action / status, never decoration. Four sites were spending those tokens on pure chrome: - Subscription.tsx purchased-traffic bar: zone.mainHex linear-gradient on a non-status progress bar; the per-purchase bar inherited the user's GLOBAL traffic-zone color (a fresh purchase could read 'critical' just because the user's overall usage was). Replaced with solid accent-500 fill — same affordance, honest semantics. - SubscriptionCardActive tariff badge: zone-colored linear-gradient background + zone-colored label. The tariff name has no traffic-zone semantics, so tinting it by the global traffic zone was a Status-Hue Lockout violation. Switched to glass innerBg/innerBorder. - Balance hero card: bg-gradient-to-br from-accent-500/10 + glow prop on Card. Removed; flat surface, the giant numeric is the affordance. Eliminates the SaaS hero-metric template tell. - Login background: two stacked fixed inset gradients (linear + accent radial halo) read as the airdrop / crypto aesthetic PRODUCT.md explicitly anti-references. Replaced with the plain body bg-dark-950. --- .../dashboard/SubscriptionCardActive.tsx | 14 ++++++++------ src/pages/Balance.tsx | 7 +++++-- src/pages/Login.tsx | 7 ++++--- src/pages/Subscription.tsx | 3 +-- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/components/dashboard/SubscriptionCardActive.tsx b/src/components/dashboard/SubscriptionCardActive.tsx index b62c859..c05004f 100644 --- a/src/components/dashboard/SubscriptionCardActive.tsx +++ b/src/components/dashboard/SubscriptionCardActive.tsx @@ -282,18 +282,20 @@ export default function SubscriptionCardActive({ {/* ─── Stats row: Tariff + Days Left ─── */}
- {/* Tariff badge — clickable */} + {/* Tariff badge — clickable. Neutral chrome: the tariff name has + no traffic-zone semantics, so tinting it by the traffic zone + (DESIGN.md Status-Hue Lockout) was wrong. */}
{t('dashboard.tariff')}
diff --git a/src/pages/Balance.tsx b/src/pages/Balance.tsx index 01e5677..fd0978e 100644 --- a/src/pages/Balance.tsx +++ b/src/pages/Balance.tsx @@ -210,9 +210,12 @@ export default function Balance() {

{t('balance.title')}

- {/* Balance Card */} + {/* Balance Card — flat surface; the giant numeric carries the + weight. The previous accent gradient + glow leaked accent into + decoration (DESIGN.md Tunable-but-Scarce Rule) and read as the + SaaS hero-metric template. */} - +
{t('balance.currentBalance')}
{formatAmount(balanceData?.balance_rubles || 0)} diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx index cf0b45d..7cf03f9 100644 --- a/src/pages/Login.tsx +++ b/src/pages/Login.tsx @@ -321,9 +321,10 @@ export default function Login() { safeBottom > 0 ? `${safeBottom + 16}px` : 'calc(1rem + env(safe-area-inset-bottom, 0px))', }} > - {/* Background gradient */} -
-
+ {/* Flat background — the previous two layered gradients (linear + + accent radial halo) read as the airdrop / crypto aesthetic + PRODUCT.md explicitly anti-references. Body bg-dark-950 carries + the surface alone. */} {/* Language switcher */}