From 347b7f660cab3146a6211e41e00be1a5a1c48077 Mon Sep 17 00:00:00 2001
From: "smx.pusha" <139338836+smxpusha@users.noreply.github.com>
Date: Tue, 18 Aug 2026 10:34:56 +0200
Subject: [PATCH] FIX - improve VaultX text readability
Raise undersized captions and metadata across every VaultX view, preserve compact chart labels, and correct the profile security card structure so larger text remains separated.
---
.../src/views/apps/CryptoApp.contract.test.ts | 5 +
frontend/src/views/apps/CryptoApp.vue | 114 +++++++++---------
2 files changed, 62 insertions(+), 57 deletions(-)
diff --git a/frontend/src/views/apps/CryptoApp.contract.test.ts b/frontend/src/views/apps/CryptoApp.contract.test.ts
index 8fdca42..fec96d3 100644
--- a/frontend/src/views/apps/CryptoApp.contract.test.ts
+++ b/frontend/src/views/apps/CryptoApp.contract.test.ts
@@ -90,6 +90,11 @@ describe('VaultX crypto app contracts', () => {
expect(source).toContain('class="sheet-market-summary"')
})
+ it('keeps app typography readable on the scaled phone surface', () => {
+ expect(source).not.toMatch(/font-size:\s*[6-8]px/)
+ expect(source).toContain(':content-wrap="false"')
+ })
+
it('exposes a broad fictional market with dedicated logo marks', () => {
const cryptoConfig = config.slice(
config.indexOf('Config.Crypto = {'),
diff --git a/frontend/src/views/apps/CryptoApp.vue b/frontend/src/views/apps/CryptoApp.vue
index faed6a7..33e164f 100644
--- a/frontend/src/views/apps/CryptoApp.vue
+++ b/frontend/src/views/apps/CryptoApp.vue
@@ -1002,7 +1002,7 @@ onMounted(() => void crypto.load())
{{ t('profile.memberSince') }}
-
+
100/100
@@ -1280,7 +1280,7 @@ onMounted(() => void crypto.load())
}
.auth-hero p {
color: #49e4b2;
- font-size: 10px;
+ font-size: 12px;
font-weight: 800;
letter-spacing: 0.12em;
text-transform: uppercase;
@@ -1301,7 +1301,7 @@ onMounted(() => void crypto.load())
gap: 7px;
align-items: center;
color: var(--muted);
- font-size: 11px;
+ font-size: 13px;
}
.success,
.up {
@@ -1332,7 +1332,7 @@ onMounted(() => void crypto.load())
align-items: center;
margin: 15px 0 0;
color: var(--muted);
- font-size: 11px;
+ font-size: 12px;
}
.portfolio > strong {
margin: 7px 0 2px;
@@ -1341,7 +1341,7 @@ onMounted(() => void crypto.load())
}
.portfolio em,
.detail-head em {
- font-size: 11px;
+ font-size: 13px;
font-style: normal;
}
.portfolio svg {
@@ -1372,7 +1372,7 @@ onMounted(() => void crypto.load())
gap: 6px;
padding: 0;
color: #eef3f5;
- font-size: 9px;
+ font-size: 11px;
background: none;
border: 0;
}
@@ -1454,7 +1454,7 @@ onMounted(() => void crypto.load())
.row small {
margin-top: 3px;
color: var(--muted);
- font-size: 9px;
+ font-size: 11px;
}
.coin,
.activity-icon {
@@ -1472,7 +1472,7 @@ onMounted(() => void crypto.load())
}
.market-head small {
color: #49e4b2;
- font-size: 9px;
+ font-size: 11px;
font-weight: 800;
letter-spacing: 0.1em;
text-transform: uppercase;
@@ -1480,7 +1480,7 @@ onMounted(() => void crypto.load())
.market-head em,
.heading em {
color: #49e4b2;
- font-size: 9px;
+ font-size: 11px;
font-style: normal;
}
.market-grid {
@@ -1507,7 +1507,7 @@ onMounted(() => void crypto.load())
font-size: 18px;
}
.market-grid em {
- font-size: 10px;
+ font-size: 12px;
font-style: normal;
}
.market-grid svg {
@@ -1546,7 +1546,7 @@ onMounted(() => void crypto.load())
}
.movers small {
color: var(--muted);
- font-size: 9px;
+ font-size: 11px;
}
.detail-head {
display: grid;
@@ -1563,7 +1563,7 @@ onMounted(() => void crypto.load())
.detail-head p {
margin: 9px 0 0;
color: var(--muted);
- font-size: 11px;
+ font-size: 13px;
}
.detail-head > strong {
font-size: 34px;
@@ -1598,7 +1598,7 @@ onMounted(() => void crypto.load())
}
.detail-copy {
color: var(--muted);
- font-size: 10px;
+ font-size: 12px;
line-height: 1.5;
}
.investment,
@@ -1629,14 +1629,14 @@ onMounted(() => void crypto.load())
}
.investment small {
color: var(--muted);
- font-size: 9px;
+ font-size: 11px;
}
.stats div {
display: flex;
justify-content: space-between;
padding: 12px 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
- font-size: 10px;
+ font-size: 12px;
}
.stats div:last-child {
border: 0;
@@ -1661,7 +1661,7 @@ onMounted(() => void crypto.load())
.activity-head span {
margin: 0;
color: var(--muted);
- font-size: 10px;
+ font-size: 12px;
}
.activity-head strong {
font-size: 32px;
@@ -1681,7 +1681,7 @@ onMounted(() => void crypto.load())
align-items: center;
margin: 0;
color: #49e4b2;
- font-size: 10px;
+ font-size: 12px;
}
.profile-stats {
display: grid;
@@ -1698,7 +1698,7 @@ onMounted(() => void crypto.load())
}
.profile-stats small {
color: var(--muted);
- font-size: 8px;
+ font-size: 11px;
}
.settings {
padding: 0 14px;
@@ -1724,7 +1724,7 @@ onMounted(() => void crypto.load())
.settings small {
max-width: 180px;
color: var(--muted);
- font-size: 8px;
+ font-size: 11px;
}
.profile-form {
padding: 15px;
@@ -1745,7 +1745,7 @@ onMounted(() => void crypto.load())
}
.security small {
color: var(--muted);
- font-size: 9px;
+ font-size: 11px;
}
.sheet {
display: grid;
@@ -1765,11 +1765,11 @@ onMounted(() => void crypto.load())
display: flex;
justify-content: space-between;
color: var(--muted);
- font-size: 11px;
+ font-size: 13px;
}
.quote small {
color: var(--muted);
- font-size: 9px;
+ font-size: 11px;
}
/* VaultX owns a dense trading surface while shared phone geometry stays in Sky UI. */
@@ -1846,12 +1846,12 @@ onMounted(() => void crypto.load())
line-height: 1.05;
}
.vault-detail-title b {
- font-size: 13px;
+ font-size: 14px;
}
.vault-detail-title small {
margin-top: 2px;
color: var(--muted);
- font-size: 8px;
+ font-size: 11px;
font-weight: 600;
}
.crypto-app :deep(.sky-scroll-area__content) {
@@ -1956,7 +1956,7 @@ onMounted(() => void crypto.load())
z-index: 1;
justify-content: space-between;
color: var(--muted);
- font-size: 10px;
+ font-size: 12px;
font-weight: 700;
letter-spacing: 0.04em;
}
@@ -2015,7 +2015,7 @@ onMounted(() => void crypto.load())
.portfolio-value small {
margin-top: 2px;
color: var(--muted);
- font-size: 8px;
+ font-size: 11px;
font-weight: 600;
}
.portfolio-chart {
@@ -2036,7 +2036,7 @@ onMounted(() => void crypto.load())
height: 22px;
padding-right: 7px;
color: var(--muted);
- font-size: 7px;
+ font-size: 9px;
font-weight: 700;
}
.portfolio-chart__legend span {
@@ -2110,13 +2110,13 @@ onMounted(() => void crypto.load())
}
.portfolio-current-label text {
fill: #fff;
- font-size: 7px;
+ font-size: 9px;
font-weight: 800;
letter-spacing: 0.01em;
}
.portfolio-scale-label {
fill: rgba(255, 255, 255, 0.46);
- font-size: 7px;
+ font-size: 9px;
font-weight: 700;
}
.portfolio-metrics {
@@ -2136,10 +2136,10 @@ onMounted(() => void crypto.load())
}
.portfolio-metrics small {
color: var(--muted);
- font-size: 8px;
+ font-size: 11px;
}
.portfolio-metrics b {
- font-size: 12px;
+ font-size: 13px;
}
.portfolio-metrics > i {
width: 1px;
@@ -2172,13 +2172,13 @@ onMounted(() => void crypto.load())
background: rgba(101, 251, 210, 0.08);
}
.quick button b {
- font-size: 9px;
+ font-size: 11px;
}
.quick button small {
max-width: 62px;
overflow: hidden;
color: var(--muted);
- font-size: 7px;
+ font-size: 11px;
text-overflow: ellipsis;
white-space: nowrap;
}
@@ -2211,10 +2211,10 @@ onMounted(() => void crypto.load())
}
.allocation-copy small {
color: var(--muted);
- font-size: 8px;
+ font-size: 11px;
}
.allocation-copy b {
- font-size: 11px;
+ font-size: 13px;
}
.allocation-copy > strong {
color: var(--vault-mint);
@@ -2284,7 +2284,7 @@ onMounted(() => void crypto.load())
}
.featured-market__top small {
color: var(--vault-mint);
- font-size: 8px;
+ font-size: 11px;
font-weight: 800;
letter-spacing: 0.08em;
text-transform: uppercase;
@@ -2295,7 +2295,7 @@ onMounted(() => void crypto.load())
}
.featured-market__top em {
color: var(--muted);
- font-size: 8px;
+ font-size: 11px;
font-style: normal;
}
.featured-market__quote {
@@ -2307,7 +2307,7 @@ onMounted(() => void crypto.load())
letter-spacing: -0.04em;
}
.featured-market__quote span {
- font-size: 11px;
+ font-size: 13px;
font-weight: 800;
}
.featured-market > svg {
@@ -2329,10 +2329,10 @@ onMounted(() => void crypto.load())
}
.featured-market__stats small {
color: var(--muted);
- font-size: 7px;
+ font-size: 11px;
}
.featured-market__stats b {
- font-size: 10px;
+ font-size: 12px;
}
.market-list-heading {
margin-top: 2px;
@@ -2360,15 +2360,15 @@ onMounted(() => void crypto.load())
flex: 1;
}
.market-tile__top b {
- font-size: 12px;
+ font-size: 13px;
}
.market-tile__top small {
margin: 1px 0 0 !important;
- font-size: 8px !important;
+ font-size: 11px !important;
}
.market-tile__top em {
padding: 5px 7px;
- font-size: 9px;
+ font-size: 11px;
background: rgba(101, 251, 210, 0.08);
border-radius: var(--sky-radius-pill);
}
@@ -2447,7 +2447,7 @@ onMounted(() => void crypto.load())
max-width: 52px;
margin-top: 2px;
color: var(--muted);
- font-size: 6px;
+ font-size: 10px;
text-align: center;
}
.activity-title {
@@ -2550,7 +2550,7 @@ onMounted(() => void crypto.load())
.profile-status {
max-width: 150px;
color: var(--vault-mint);
- font-size: 7px;
+ font-size: 11px;
}
.profile-card h2 {
position: relative;
@@ -2564,7 +2564,7 @@ onMounted(() => void crypto.load())
align-items: center;
margin: 0;
color: var(--muted);
- font-size: 9px;
+ font-size: 11px;
}
.profile-card > p svg {
color: var(--vault-mint);
@@ -2579,13 +2579,13 @@ onMounted(() => void crypto.load())
}
.profile-card__id small {
color: var(--muted);
- font-size: 7px;
+ font-size: 11px;
letter-spacing: 0.14em;
}
.profile-card__id b {
grid-column: 1;
margin-top: 2px;
- font-size: 11px;
+ font-size: 13px;
letter-spacing: 0.16em;
}
.profile-card__id svg {
@@ -2636,7 +2636,7 @@ onMounted(() => void crypto.load())
line-height: 1;
}
.security-score small {
- font-size: 6px;
+ font-size: 9px;
}
.security-overview > span {
display: grid;
@@ -2644,14 +2644,14 @@ onMounted(() => void crypto.load())
}
.security-overview > span small {
color: var(--vault-mint);
- font-size: 8px;
+ font-size: 11px;
}
.security-overview > span b {
- font-size: 11px;
+ font-size: 13px;
}
.security-overview > span em {
color: var(--muted);
- font-size: 7px;
+ font-size: 11px;
font-style: normal;
line-height: 1.35;
}
@@ -2787,7 +2787,7 @@ onMounted(() => void crypto.load())
.sheet-heading small {
overflow: hidden;
color: var(--muted);
- font-size: 8px;
+ font-size: 11px;
font-weight: 700;
text-overflow: ellipsis;
white-space: nowrap;
@@ -2840,21 +2840,21 @@ onMounted(() => void crypto.load())
}
.sheet-market-summary span {
color: var(--muted);
- font-size: 9px;
+ font-size: 11px;
font-weight: 800;
}
.sheet-market-summary b {
flex: 1;
- font-size: 13px;
+ font-size: 14px;
}
.sheet-market-summary em {
- font-size: 9px;
+ font-size: 11px;
font-style: normal;
font-weight: 800;
}
.sheet-copy {
color: var(--muted);
- font-size: 10px;
+ font-size: 12px;
line-height: 1.5;
}
.quote {