From bb6ebbae7e8feed16ab5dca59ce16c85a6a2887f Mon Sep 17 00:00:00 2001 From: chenhang Date: Fri, 3 Jul 2026 10:22:37 +0800 Subject: [PATCH] style(responsive): migrate fixed UI sizes to tokens --- .../user-message-avatar.module.css | 4 +- .../ai-disclosure-banner.module.css | 2 +- .../chat-input-text-field.module.css | 4 +- ...hat-insufficient-credits-banner.module.css | 18 ++++--- .../external-browser-dialog.module.css | 20 +++++--- .../first-recharge-offer-banner.module.css | 37 ++++++++------ .../fullscreen-image-viewer.module.css | 4 +- .../history-unlock-dialog.module.css | 25 ++++++---- .../insufficient-credits-dialog.module.css | 27 ++++++----- .../components/language-dialog.module.css | 23 +++++---- .../private-message-card.module.css | 12 +++-- .../components/pwa-install-dialog.module.css | 20 +++++--- .../chat/components/voice-bubble.module.css | 24 +++++----- .../voice-unlock-options-dialog.module.css | 29 ++++++----- .../chat-image-viewer-screen.module.css | 3 +- .../coins-rules/coins-rules-screen.module.css | 46 +++++++++--------- .../components/sidebar-screen.module.css | 48 +++++++++---------- .../components/sidebar-wallet-card.module.css | 34 ++++++------- .../components/vip-benefits-card.module.css | 6 +-- .../stripe-payment-dialog.module.css | 28 +++++++---- .../components/subscription-banner.module.css | 15 +++--- .../subscription-benefits-card.module.css | 12 ++--- .../subscription-cta-button.module.css | 12 ++--- .../subscription-payment-method.module.css | 14 +++--- ...cription-payment-success-dialog.module.css | 33 ++++++++----- .../subscription-plan-card.module.css | 21 ++++---- .../subscription-user-row.module.css | 8 ++-- src/tokens/dimensions.css | 12 ++++- 28 files changed, 312 insertions(+), 229 deletions(-) diff --git a/src/app/_components/user-message-avatar.module.css b/src/app/_components/user-message-avatar.module.css index 1bd63b43..c267dc38 100644 --- a/src/app/_components/user-message-avatar.module.css +++ b/src/app/_components/user-message-avatar.module.css @@ -1,7 +1,7 @@ .avatar { flex: 0 0 auto; - width: 43px; - height: 43px; + width: var(--chat-avatar-size, 43px); + height: var(--chat-avatar-size, 43px); border-radius: 9999px; overflow: hidden; border: 2px solid var(--color-avatar-border, #fbf3f5); diff --git a/src/app/chat/components/ai-disclosure-banner.module.css b/src/app/chat/components/ai-disclosure-banner.module.css index 040606dc..56337aed 100644 --- a/src/app/chat/components/ai-disclosure-banner.module.css +++ b/src/app/chat/components/ai-disclosure-banner.module.css @@ -3,7 +3,7 @@ .banner { align-self: center; background: transparent; - font-size: var(--font-size-xs, 11px); + font-size: var(--responsive-micro, var(--font-size-xs, 11px)); color: var(--color-text-banner, #8c8b8b); text-align: center; } diff --git a/src/app/chat/components/chat-input-text-field.module.css b/src/app/chat/components/chat-input-text-field.module.css index 30927293..39892418 100644 --- a/src/app/chat/components/chat-input-text-field.module.css +++ b/src/app/chat/components/chat-input-text-field.module.css @@ -17,7 +17,7 @@ min-width: 0; width: 100%; min-height: var(--chat-send-button-size, 40px); - max-height: 120px; /* 约 5 行 × 24px line-height */ + max-height: min(30vh, 120px); /* 约 5 行 × 24px line-height */ padding: 6px 0 0 0; /* 上 6px:让文字视觉下移,避开正中位置 */ border: 0; outline: none; @@ -26,7 +26,7 @@ caret-color: var(--color-accent, #f84d96); /* Dart: AppColors.accentColor */ /* iOS Facebook IAB/Safari auto-zooms focused text controls below 16px. */ font-size: 16px; - line-height: 24px; + line-height: clamp(22px, 4.444vw, 24px); resize: none; font-family: inherit; } diff --git a/src/app/chat/components/chat-insufficient-credits-banner.module.css b/src/app/chat/components/chat-insufficient-credits-banner.module.css index 85ace838..ac65a814 100644 --- a/src/app/chat/components/chat-insufficient-credits-banner.module.css +++ b/src/app/chat/components/chat-insufficient-credits-banner.module.css @@ -7,9 +7,14 @@ .banner { flex: 0 0 auto; - margin: 0 var(--spacing-lg, 16px) var(--spacing-lg, 16px); - padding: var(--spacing-xl, 24px) var(--spacing-lg, 16px); - border-radius: 24px; + margin: + 0 + var(--chat-inline-padding, 16px) + var(--page-section-gap, 16px); + padding: + var(--page-section-gap-lg, 24px) + var(--responsive-card-padding, 16px); + border-radius: var(--responsive-card-radius-sm, 24px); background: linear-gradient(135deg, #f96ade 0%, #f657a0 100%); text-align: center; box-shadow: 0 4px 16px rgba(248, 77, 150, 0.25); @@ -17,7 +22,7 @@ .text { color: #fff; - font-size: 1.125rem; + font-size: var(--responsive-card-title, 18px); font-weight: 600; line-height: 1.4; margin: 0 0 var(--spacing-lg, 16px); @@ -27,12 +32,13 @@ .cta { width: 100%; - padding: 0.875rem 1.5rem; + min-height: var(--responsive-control-height, 48px); + padding: 0 var(--responsive-card-padding-lg, 24px); border: none; border-radius: 999px; background: linear-gradient(135deg, #ffb8e0 0%, #f57ec0 100%); color: #fff; - font-size: 1.125rem; + font-size: var(--responsive-card-title, 18px); font-weight: 700; cursor: pointer; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); diff --git a/src/app/chat/components/external-browser-dialog.module.css b/src/app/chat/components/external-browser-dialog.module.css index 250dce59..bd1fc2cb 100644 --- a/src/app/chat/components/external-browser-dialog.module.css +++ b/src/app/chat/components/external-browser-dialog.module.css @@ -7,19 +7,22 @@ justify-content: center; background: rgba(0, 0, 0, 0.5); padding: - calc(var(--spacing-lg, 16px) + var(--app-safe-top, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-right, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-bottom, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-left, 0px)); + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-top, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-right, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-bottom, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-left, 0px)); } .dialog { width: 100%; max-width: var(--pwa-install-dialog-max-width, 360px); - padding: 24px 16px 16px; + padding: + var(--responsive-card-padding-lg, 24px) + var(--responsive-card-padding, 16px) + var(--responsive-card-padding, 16px); text-align: center; background: var(--color-page-background, #ffffff); - border-radius: 40px; + border-radius: var(--responsive-card-radius, 40px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); } @@ -32,7 +35,10 @@ } .content { - margin: 0 24px var(--spacing-xxl, 24px); + margin: + 0 + var(--responsive-card-padding-lg, 24px) + var(--page-section-gap-lg, 24px); font-size: var(--responsive-body, var(--font-size-lg, 16px)); line-height: 1.5; text-align: left; diff --git a/src/app/chat/components/first-recharge-offer-banner.module.css b/src/app/chat/components/first-recharge-offer-banner.module.css index 6caf6728..3b2dee68 100644 --- a/src/app/chat/components/first-recharge-offer-banner.module.css +++ b/src/app/chat/components/first-recharge-offer-banner.module.css @@ -4,10 +4,13 @@ display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; - margin: 6px var(--chat-inline-padding, 16px) 10px; + margin: + clamp(5px, 1.111vw, 6px) + var(--chat-inline-padding, 16px) + clamp(8px, 1.852vw, 10px); overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.34); - border-radius: 22px; + border-radius: var(--responsive-card-radius-sm, 22px); background: radial-gradient(circle at 14% 0%, rgba(255, 255, 255, 0.72), transparent 34%), linear-gradient(135deg, #fff0b8 0%, #ffd1df 45%, #ff61a7 100%); @@ -18,10 +21,10 @@ .banner::after { position: absolute; - right: -34px; - bottom: -52px; - width: 126px; - height: 126px; + right: clamp(-34px, -6.296vw, -28px); + bottom: clamp(-52px, -9.63vw, -42px); + width: clamp(104px, 23.333vw, 126px); + height: clamp(104px, 23.333vw, 126px); border-radius: 999px; background: rgba(255, 255, 255, 0.22); content: ""; @@ -33,10 +36,14 @@ z-index: 1; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; - gap: 10px; + gap: clamp(8px, 1.852vw, 10px); align-items: center; min-width: 0; - padding: 12px 8px 12px 14px; + padding: + clamp(10px, 2.222vw, 12px) + clamp(7px, 1.481vw, 8px) + clamp(10px, 2.222vw, 12px) + clamp(12px, 2.593vw, 14px); border: 0; background: transparent; color: inherit; @@ -46,11 +53,11 @@ .iconWrap { display: inline-flex; - width: 34px; - height: 34px; + width: clamp(30px, 6.296vw, 34px); + height: clamp(30px, 6.296vw, 34px); align-items: center; justify-content: center; - border-radius: 14px; + border-radius: clamp(12px, 2.593vw, 14px); background: rgba(255, 255, 255, 0.52); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.42); } @@ -68,7 +75,7 @@ .eyebrow { color: rgba(44, 17, 29, 0.74); - font-size: 11px; + font-size: var(--responsive-micro, 11px); font-weight: 800; letter-spacing: 0.04em; line-height: 1; @@ -82,14 +89,14 @@ gap: 5px; align-items: baseline; color: #241019; - font-size: 13px; + font-size: var(--responsive-caption, 13px); font-weight: 750; line-height: 1.18; } .title strong { color: #f90073; - font-size: 20px; + font-size: var(--responsive-section-title, 20px); font-weight: 950; letter-spacing: -0.04em; line-height: 1; @@ -103,7 +110,7 @@ position: relative; z-index: 1; display: flex; - width: 42px; + width: var(--responsive-icon-button-size, 42px); min-height: 100%; align-items: center; justify-content: center; diff --git a/src/app/chat/components/fullscreen-image-viewer.module.css b/src/app/chat/components/fullscreen-image-viewer.module.css index 3c4173a2..eda3a2df 100644 --- a/src/app/chat/components/fullscreen-image-viewer.module.css +++ b/src/app/chat/components/fullscreen-image-viewer.module.css @@ -97,8 +97,8 @@ } .loading { - width: 32px; - height: 32px; + width: clamp(28px, 5.926vw, 32px); + height: clamp(28px, 5.926vw, 32px); border: 3px solid rgba(255, 255, 255, 0.3); border-top-color: var(--color-accent, #f84d96); border-radius: 50%; diff --git a/src/app/chat/components/history-unlock-dialog.module.css b/src/app/chat/components/history-unlock-dialog.module.css index 9f4c20ab..587565b0 100644 --- a/src/app/chat/components/history-unlock-dialog.module.css +++ b/src/app/chat/components/history-unlock-dialog.module.css @@ -7,19 +7,22 @@ justify-content: center; background: rgba(0, 0, 0, 0.5); padding: - calc(var(--spacing-lg, 16px) + var(--app-safe-top, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-right, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-bottom, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-left, 0px)); + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-top, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-right, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-bottom, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-left, 0px)); } .dialog { width: 100%; max-width: var(--pwa-install-dialog-max-width, 360px); - padding: 24px 16px 16px; + padding: + var(--responsive-card-padding-lg, 24px) + var(--responsive-card-padding, 16px) + var(--responsive-card-padding, 16px); text-align: center; background: var(--color-page-background, #ffffff); - border-radius: 40px; + border-radius: var(--responsive-card-radius, 40px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); } @@ -32,7 +35,10 @@ } .content { - margin: 0 24px var(--spacing-lg, 16px); + margin: + 0 + var(--responsive-card-padding-lg, 24px) + var(--spacing-lg, 16px); font-size: var(--responsive-body, var(--font-size-lg, 16px)); line-height: 1.5; text-align: left; @@ -40,7 +46,10 @@ } .error { - margin: 0 24px var(--spacing-lg, 16px); + margin: + 0 + var(--responsive-card-padding-lg, 24px) + var(--spacing-lg, 16px); font-size: var(--responsive-caption, var(--font-size-md, 14px)); line-height: 1.4; text-align: left; diff --git a/src/app/chat/components/insufficient-credits-dialog.module.css b/src/app/chat/components/insufficient-credits-dialog.module.css index a706848e..2149da78 100644 --- a/src/app/chat/components/insufficient-credits-dialog.module.css +++ b/src/app/chat/components/insufficient-credits-dialog.module.css @@ -6,21 +6,24 @@ align-items: center; justify-content: center; padding: - calc(var(--spacing-lg, 16px) + var(--app-safe-top, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-right, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-bottom, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-left, 0px)); + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-top, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-right, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-bottom, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-left, 0px)); background: rgba(0, 0, 0, 0.52); } .dialog { width: 100%; max-width: var(--pwa-install-dialog-max-width, 360px); - padding: 24px 18px 18px; + padding: + var(--responsive-card-padding-lg, 24px) + var(--responsive-card-padding, 18px) + var(--responsive-card-padding, 18px); text-align: center; background: var(--color-page-background, #ffffff); border: 1px solid rgba(246, 87, 160, 0.16); - border-radius: 36px; + border-radius: var(--responsive-card-radius, 36px); box-shadow: 0 18px 46px rgba(38, 18, 31, 0.18); } @@ -33,7 +36,7 @@ } .content { - margin: 0 12px 18px; + margin: 0 var(--spacing-md, 12px) var(--page-section-gap, 18px); color: #393939; font-size: var(--responsive-body, var(--font-size-lg, 16px)); line-height: 1.5; @@ -41,18 +44,18 @@ .creditList { display: grid; - gap: 8px; - margin: 0 0 18px; - padding: 12px; + gap: var(--spacing-sm, 8px); + margin: 0 0 var(--page-section-gap, 18px); + padding: var(--spacing-md, 12px); background: #fff4f9; - border-radius: 22px; + border-radius: var(--responsive-card-radius-sm, 22px); } .creditItem { display: flex; align-items: center; justify-content: space-between; - gap: 12px; + gap: var(--spacing-md, 12px); color: #4a3b43; font-size: var(--responsive-caption, var(--font-size-md, 14px)); line-height: 1.3; diff --git a/src/app/chat/components/language-dialog.module.css b/src/app/chat/components/language-dialog.module.css index 4b34358b..5bafb96d 100644 --- a/src/app/chat/components/language-dialog.module.css +++ b/src/app/chat/components/language-dialog.module.css @@ -9,22 +9,25 @@ justify-content: center; z-index: 50; padding: - calc(var(--spacing-lg, 16px) + var(--app-safe-top, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-right, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-bottom, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-left, 0px)); + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-top, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-right, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-bottom, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-left, 0px)); } .dialog { width: 100%; max-width: var(--dialog-max-width, 360px); background: var(--color-surface, #1f1a2e); - border-radius: var(--radius-lg, 12px); - padding: var(--spacing-5, 20px); + border-radius: var(--responsive-card-radius-sm, var(--radius-lg, 12px)); + padding: var(--responsive-card-padding-lg, var(--spacing-5, 20px)); display: flex; flex-direction: column; gap: var(--spacing-3, 12px); - max-height: min(80vh, calc(var(--app-visible-height, 100dvh) - 32px)); + max-height: calc( + var(--app-visible-height, 100dvh) - + calc(var(--dialog-safe-margin, 16px) * 2) + ); } .title { @@ -39,7 +42,11 @@ flex-direction: column; gap: var(--spacing-1, 4px); overflow-y: auto; - max-height: min(60vh, calc(var(--app-visible-height, 100dvh) - 120px)); + max-height: calc( + var(--app-visible-height, 100dvh) - + calc(var(--dialog-safe-margin, 16px) * 2) - + 88px + ); } .item { diff --git a/src/app/chat/components/private-message-card.module.css b/src/app/chat/components/private-message-card.module.css index c4000415..bbbd2408 100644 --- a/src/app/chat/components/private-message-card.module.css +++ b/src/app/chat/components/private-message-card.module.css @@ -12,15 +12,15 @@ } .iconWrap { - width: 42px; - height: 42px; + width: var(--responsive-icon-button-size, 42px); + height: var(--responsive-icon-button-size, 42px); border-radius: 50%; background: linear-gradient(135deg, #ff8fc7 0%, #f657a0 100%); color: #ffffff; display: flex; align-items: center; justify-content: center; - margin-bottom: 10px; + margin-bottom: clamp(8px, 1.852vw, 10px); } .icon { @@ -36,8 +36,10 @@ .button { width: 100%; - margin-top: 12px; - padding: 10px 12px; + margin-top: var(--spacing-md, 12px); + padding: + clamp(9px, 1.852vw, 10px) + var(--spacing-md, 12px); border: 0; border-radius: 999px; background: linear-gradient(90deg, #ff67e0, #ff52a2); diff --git a/src/app/chat/components/pwa-install-dialog.module.css b/src/app/chat/components/pwa-install-dialog.module.css index 79b3d8a2..127023b1 100644 --- a/src/app/chat/components/pwa-install-dialog.module.css +++ b/src/app/chat/components/pwa-install-dialog.module.css @@ -12,18 +12,21 @@ justify-content: center; z-index: 60; padding: - calc(var(--spacing-lg, 16px) + var(--app-safe-top, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-right, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-bottom, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-left, 0px)); + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-top, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-right, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-bottom, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-left, 0px)); } .dialog { width: 100%; max-width: var(--pwa-install-dialog-max-width, 360px); background: var(--color-page-background, #ffffff); - border-radius: 40px; - padding: 20px 16px 16px 16px; + border-radius: var(--responsive-card-radius, 40px); + padding: + var(--responsive-card-padding-lg, 20px) + var(--responsive-card-padding, 16px) + var(--responsive-card-padding, 16px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); display: flex; flex-direction: column; @@ -50,7 +53,10 @@ font-size: var(--responsive-body, var(--font-size-lg, 16px)); line-height: 1.5; color: #393939; - margin: 0 36px var(--spacing-xxl, 24px); + margin: + 0 + var(--responsive-card-padding-lg, 36px) + var(--page-section-gap-lg, 24px); } .actions { diff --git a/src/app/chat/components/voice-bubble.module.css b/src/app/chat/components/voice-bubble.module.css index 0050aa80..8c6a6ca5 100644 --- a/src/app/chat/components/voice-bubble.module.css +++ b/src/app/chat/components/voice-bubble.module.css @@ -37,8 +37,8 @@ flex: 0 0 auto; align-items: center; justify-content: center; - width: 34px; - height: 34px; + width: clamp(32px, 6.296vw, 34px); + height: clamp(32px, 6.296vw, 34px); border: 0; border-radius: 50%; background: rgba(246, 87, 160, 0.14); @@ -71,14 +71,14 @@ min-width: 0; flex: 1 1 auto; flex-direction: column; - gap: 8px; + gap: var(--spacing-sm, 8px); } .wave { display: flex; align-items: center; gap: 4px; - height: 34px; + height: clamp(32px, 6.296vw, 34px); } .wave span { @@ -90,29 +90,29 @@ } .wave span:nth-child(1) { - height: 12px; + height: clamp(10px, 2.222vw, 12px); } .wave span:nth-child(2) { - height: 22px; + height: clamp(18px, 4.074vw, 22px); } .wave span:nth-child(3) { - height: 30px; + height: clamp(24px, 5.556vw, 30px); } .wave span:nth-child(4) { - height: 18px; + height: clamp(15px, 3.333vw, 18px); } .wave span:nth-child(5) { - height: 26px; + height: clamp(21px, 4.815vw, 26px); } .error { margin: 0; color: var(--color-error, #ff4d4f); - font-size: var(--font-size-sm, 12px); + font-size: var(--responsive-micro, var(--font-size-sm, 12px)); line-height: 1.4; } @@ -130,7 +130,9 @@ .unlockButton { align-self: flex-start; margin-top: 2px; - padding: 9px clamp(12px, 2.593vw, 14px); + padding: + clamp(8px, 1.667vw, 9px) + clamp(12px, 2.593vw, 14px); border: 0; border-radius: 999px; background: linear-gradient(90deg, #ff67e0, #ff52a2); diff --git a/src/app/chat/components/voice-unlock-options-dialog.module.css b/src/app/chat/components/voice-unlock-options-dialog.module.css index 64bf0e68..a647a960 100644 --- a/src/app/chat/components/voice-unlock-options-dialog.module.css +++ b/src/app/chat/components/voice-unlock-options-dialog.module.css @@ -6,18 +6,21 @@ align-items: center; justify-content: center; padding: - calc(var(--spacing-lg, 16px) + var(--app-safe-top, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-right, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-bottom, 0px)) - calc(var(--spacing-lg, 16px) + var(--app-safe-left, 0px)); + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-top, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-right, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-bottom, 0px)) + calc(var(--dialog-safe-margin, 16px) + var(--app-safe-left, 0px)); background: rgba(0, 0, 0, 0.5); } .dialog { width: 100%; max-width: var(--dialog-max-width, 380px); - padding: 24px 18px 18px; - border-radius: 36px; + padding: + var(--responsive-card-padding-lg, 24px) + var(--responsive-card-padding, 18px) + var(--responsive-card-padding, 18px); + border-radius: var(--responsive-card-radius, 36px); background: var(--color-page-background, #ffffff); box-shadow: 0 18px 40px rgba(0, 0, 0, 0.16); } @@ -32,7 +35,7 @@ } .content { - margin: 0 12px 20px; + margin: 0 var(--spacing-md, 12px) var(--page-section-gap-lg, 20px); color: #393939; font-size: var(--responsive-body, var(--font-size-md, 14px)); line-height: 1.5; @@ -42,15 +45,15 @@ .options { display: flex; flex-direction: column; - gap: 12px; + gap: var(--spacing-md, 12px); } .optionButton, .cancel { width: 100%; - min-height: 48px; + min-height: var(--responsive-control-height, 48px); border: 0; - border-radius: 28px; + border-radius: var(--radius-bottom-sheet, 28px); cursor: pointer; font-size: var(--responsive-body, var(--font-size-lg, 16px)); font-weight: 700; @@ -62,7 +65,9 @@ align-items: center; justify-content: center; gap: 4px; - padding: 10px 16px; + padding: + clamp(9px, 1.852vw, 10px) + var(--responsive-card-padding, 16px); } .primary { @@ -91,7 +96,7 @@ } .cancel { - margin-top: 14px; + margin-top: clamp(12px, 2.593vw, 14px); color: #ffffff; background: var(--color-text-secondary, #9e9e9e); } diff --git a/src/app/chat/image/[messageId]/chat-image-viewer-screen.module.css b/src/app/chat/image/[messageId]/chat-image-viewer-screen.module.css index a406dd12..0f9f7d58 100644 --- a/src/app/chat/image/[messageId]/chat-image-viewer-screen.module.css +++ b/src/app/chat/image/[messageId]/chat-image-viewer-screen.module.css @@ -17,7 +17,7 @@ .backButton { min-height: var(--responsive-control-height, 44px); - padding: 0 18px; + padding: 0 var(--responsive-card-padding, 18px); border: 0; border-radius: 999px; background: rgba(255, 255, 255, 0.92); @@ -33,4 +33,5 @@ color: rgba(255, 255, 255, 0.78); font-size: var(--responsive-body, 16px); font-weight: 700; + text-align: center; } diff --git a/src/app/coins-rules/coins-rules-screen.module.css b/src/app/coins-rules/coins-rules-screen.module.css index 2696ead4..12e3e12b 100644 --- a/src/app/coins-rules/coins-rules-screen.module.css +++ b/src/app/coins-rules/coins-rules-screen.module.css @@ -33,10 +33,10 @@ .hero::after { position: absolute; - right: -34px; - bottom: -42px; - width: 150px; - height: 150px; + right: clamp(-34px, -6.296vw, -28px); + bottom: clamp(-42px, -7.778vw, -34px); + width: clamp(124px, 27.778vw, 150px); + height: clamp(124px, 27.778vw, 150px); border-radius: 999px; background: radial-gradient(circle, rgba(246, 87, 160, 0.2), transparent 68%); content: ""; @@ -44,11 +44,11 @@ .heroIcon { display: inline-flex; - width: 46px; - height: 46px; + width: var(--responsive-control-height, 46px); + height: var(--responsive-control-height, 46px); align-items: center; justify-content: center; - border-radius: 16px; + border-radius: clamp(14px, 2.963vw, 16px); background: linear-gradient(180deg, #ffe89c 0%, #f8b83e 100%); color: #8f5400; box-shadow: @@ -57,7 +57,7 @@ } .eyebrow { - margin: 16px 0 0; + margin: var(--page-section-gap, 16px) 0 0; color: #f657a0; font-size: var(--responsive-micro, 12px); font-weight: 850; @@ -76,8 +76,8 @@ } .subtitle { - max-width: 300px; - margin: 10px 0 0; + max-width: min(100%, 300px); + margin: clamp(8px, 1.852vw, 10px) 0 0; color: #6d5d64; font-size: var(--responsive-body, 15px); font-weight: 650; @@ -87,7 +87,7 @@ .freeCard { display: grid; grid-template-columns: auto minmax(0, 1fr); - gap: 12px; + gap: var(--spacing-md, 12px); align-items: center; margin-top: var(--page-section-gap, 16px); padding: var(--responsive-card-padding, 16px); @@ -99,11 +99,11 @@ .freeIcon { display: inline-flex; - width: 40px; - height: 40px; + width: var(--responsive-icon-button-size, 40px); + height: var(--responsive-icon-button-size, 40px); align-items: center; justify-content: center; - border-radius: 14px; + border-radius: clamp(12px, 2.593vw, 14px); background: #ffffff; color: #d98100; box-shadow: 0 8px 18px rgba(142, 93, 18, 0.1); @@ -128,14 +128,14 @@ .ruleList { display: flex; flex-direction: column; - gap: 10px; + gap: clamp(8px, 1.852vw, 10px); margin-top: var(--page-section-gap, 16px); } .ruleCard { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; - gap: 12px; + gap: var(--spacing-md, 12px); align-items: center; padding: var(--responsive-card-padding, 14px); border: 1px solid rgba(25, 19, 22, 0.06); @@ -153,11 +153,11 @@ .ruleIcon { display: inline-flex; - width: 36px; - height: 36px; + width: clamp(34px, 6.667vw, 36px); + height: clamp(34px, 6.667vw, 36px); align-items: center; justify-content: center; - border-radius: 14px; + border-radius: clamp(12px, 2.593vw, 14px); background: #fff0f6; color: #f657a0; } @@ -210,16 +210,16 @@ @media (max-width: 360px) { .screen { - padding-right: 16px; - padding-left: 16px; + padding-right: calc(var(--page-padding-x, 16px) + var(--app-safe-right, 0px)); + padding-left: calc(var(--page-padding-x, 16px) + var(--app-safe-left, 0px)); } .hero { - padding: 20px; + padding: var(--responsive-card-padding-lg, 20px); } .title { - font-size: 27px; + font-size: var(--responsive-page-title, 27px); } .ruleCard { diff --git a/src/app/sidebar/components/sidebar-screen.module.css b/src/app/sidebar/components/sidebar-screen.module.css index 24565655..0a04e5dc 100644 --- a/src/app/sidebar/components/sidebar-screen.module.css +++ b/src/app/sidebar/components/sidebar-screen.module.css @@ -2,7 +2,7 @@ position: relative; display: flex; flex-direction: column; - gap: 14px; + gap: var(--page-section-gap, 14px); overflow: hidden; min-height: var(--app-viewport-height, 100dvh); box-sizing: border-box; @@ -28,18 +28,18 @@ } .bgOrbOne { - top: 86px; - right: -72px; - width: 168px; - height: 168px; + top: clamp(72px, 15.926vw, 86px); + right: clamp(-72px, -13.333vw, -58px); + width: clamp(140px, 31.111vw, 168px); + height: clamp(140px, 31.111vw, 168px); background: rgba(246, 87, 160, 0.11); } .bgOrbTwo { - bottom: 56px; - left: -88px; - width: 180px; - height: 180px; + bottom: clamp(46px, 10.37vw, 56px); + left: clamp(-88px, -16.296vw, -70px); + width: clamp(148px, 33.333vw, 180px); + height: clamp(148px, 33.333vw, 180px); background: rgba(248, 184, 62, 0.1); } @@ -87,8 +87,8 @@ } .subtitle { - max-width: 320px; - margin: 10px 0 0; + max-width: min(100%, 320px); + margin: clamp(8px, 1.852vw, 10px) 0 0; color: #75636a; font-size: var(--responsive-caption, 14px); font-weight: 650; @@ -114,8 +114,8 @@ } .settingsLabel { - margin: 0 0 9px; - padding: 0 4px; + margin: 0 0 clamp(7px, 1.667vw, 9px); + padding: 0 clamp(3px, 0.741vw, 4px); color: #817076; font-size: var(--responsive-caption, 13px); font-weight: 800; @@ -127,7 +127,7 @@ display: flex; width: 100%; align-items: center; - gap: 12px; + gap: var(--spacing-md, 12px); box-sizing: border-box; padding: var(--responsive-card-padding, 16px); border: 1px solid rgba(25, 19, 22, 0.06); @@ -158,12 +158,12 @@ .logoutIcon { display: inline-flex; - width: 40px; - height: 40px; + width: var(--responsive-icon-button-size, 40px); + height: var(--responsive-icon-button-size, 40px); flex: 0 0 auto; align-items: center; justify-content: center; - border-radius: 15px; + border-radius: clamp(13px, 2.778vw, 15px); background: rgba(255, 107, 107, 0.1); color: #ef4d64; } @@ -221,21 +221,21 @@ @media (max-width: 360px) { .shell { - gap: 12px; - padding-right: 20px; - padding-left: 20px; + gap: var(--page-section-gap, 12px); + padding-right: calc(var(--page-padding-x, 20px) + var(--app-safe-right, 0px)); + padding-left: calc(var(--page-padding-x, 20px) + var(--app-safe-left, 0px)); } .title { - font-size: 30px; + font-size: var(--responsive-page-title, 30px); } .subtitle { - font-size: 13px; + font-size: var(--responsive-caption, 13px); } .userSlot { - padding: 16px; - border-radius: 22px; + padding: var(--responsive-card-padding, 16px); + border-radius: var(--responsive-card-radius-sm, 22px); } } diff --git a/src/app/sidebar/components/sidebar-wallet-card.module.css b/src/app/sidebar/components/sidebar-wallet-card.module.css index c3679b32..c1da3d74 100644 --- a/src/app/sidebar/components/sidebar-wallet-card.module.css +++ b/src/app/sidebar/components/sidebar-wallet-card.module.css @@ -20,20 +20,20 @@ min-width: 0; flex-direction: column; align-items: flex-start; - gap: 9px; + gap: clamp(7px, 1.667vw, 9px); } .titleRow { display: inline-flex; max-width: 100%; align-items: center; - gap: 8px; + gap: var(--spacing-sm, 8px); } .iconWrap { display: inline-flex; - width: 30px; - height: 30px; + width: clamp(28px, 5.556vw, 30px); + height: clamp(28px, 5.556vw, 30px); flex: 0 0 auto; align-items: center; justify-content: center; @@ -75,7 +75,7 @@ display: inline-flex; align-items: center; justify-content: center; - min-height: 28px; + min-height: clamp(26px, 5.185vw, 28px); padding: 0; border: 0; border-radius: 999px; @@ -102,20 +102,20 @@ display: flex; flex: 0 0 auto; flex-direction: column; - gap: 9px; + gap: clamp(7px, 1.667vw, 9px); align-items: stretch; } .activateButton, .topUpButton { display: inline-flex; - min-width: 92px; + min-width: clamp(78px, 17.037vw, 92px); min-height: var(--responsive-control-height, 44px); align-items: center; justify-content: center; - padding: 0 18px; + padding: 0 var(--responsive-card-padding, 18px); border: 1px solid transparent; - border-radius: 18px; + border-radius: var(--responsive-card-radius-sm, 18px); cursor: pointer; font: inherit; font-size: var(--responsive-body, 15px); @@ -166,24 +166,24 @@ @media (max-width: 360px) { .card { - gap: 12px; - padding: 16px; + gap: var(--spacing-md, 12px); + padding: var(--responsive-card-padding, 16px); } .activateButton, .topUpButton { - min-width: 78px; - min-height: 40px; - padding: 0 14px; - font-size: 14px; + min-width: clamp(78px, 17.037vw, 92px); + min-height: var(--responsive-control-height, 40px); + padding: 0 clamp(12px, 2.593vw, 14px); + font-size: var(--responsive-body, 14px); } .balanceValue { - font-size: 20px; + font-size: var(--responsive-page-title, 20px); } .balanceUnit, .rulesButton { - font-size: 14px; + font-size: var(--responsive-body, 14px); } } diff --git a/src/app/sidebar/components/vip-benefits-card.module.css b/src/app/sidebar/components/vip-benefits-card.module.css index a8cfd7f1..ca33903a 100644 --- a/src/app/sidebar/components/vip-benefits-card.module.css +++ b/src/app/sidebar/components/vip-benefits-card.module.css @@ -14,7 +14,7 @@ background-size: 50% 100%, cover, cover; background-blend-mode: normal, normal, normal; border: solid 1px #fac4dc; - border-radius: 21px; + border-radius: var(--responsive-card-radius-sm, 21px); width: 100%; box-sizing: border-box; padding: var(--sidebar-card-padding-y, 18px) 0 @@ -56,7 +56,7 @@ .list { list-style: none; - margin: 18px 0; + margin: var(--page-section-gap, 18px) 0; padding: 0; } @@ -94,7 +94,7 @@ align-items: center; justify-content: center; padding: var(--spacing-xs) var(--spacing-md); - border-radius: 22px; + border-radius: var(--responsive-card-radius-sm, 22px); background-image: linear-gradient( 135deg, diff --git a/src/app/subscription/components/stripe-payment-dialog.module.css b/src/app/subscription/components/stripe-payment-dialog.module.css index 2cd64a18..ea61a937 100644 --- a/src/app/subscription/components/stripe-payment-dialog.module.css +++ b/src/app/subscription/components/stripe-payment-dialog.module.css @@ -5,19 +5,29 @@ display: flex; align-items: center; justify-content: center; - padding: 20px; + padding: + calc(var(--dialog-safe-margin, 20px) + var(--app-safe-top, 0px)) + calc(var(--dialog-safe-margin, 20px) + var(--app-safe-right, 0px)) + calc(var(--dialog-safe-margin, 20px) + var(--app-safe-bottom, 0px)) + calc(var(--dialog-safe-margin, 20px) + var(--app-safe-left, 0px)); background: rgba(0, 0, 0, 0.5); } .dialog { width: 100%; - max-width: 420px; - max-height: calc(100vh - 40px); + max-width: var(--dialog-wide-max-width, 420px); + max-height: calc( + var(--app-visible-height, 100dvh) - + calc(var(--dialog-safe-margin, 20px) * 2) + ); overflow-y: auto; - border-radius: 32px; + border-radius: var(--responsive-card-radius, 32px); background: var(--color-page-background, #ffffff); box-shadow: 0 18px 40px rgba(0, 0, 0, 0.16); - padding: 24px 18px 18px; + padding: + var(--responsive-card-padding-lg, 24px) + var(--responsive-card-padding, 18px) + var(--responsive-card-padding, 18px); } .header { @@ -28,7 +38,7 @@ .title { margin: 0 0 8px; color: var(--color-text-foreground, #171717); - font-size: var(--font-size-22, 22px); + font-size: var(--responsive-page-title, 22px); font-weight: 700; line-height: 1.2; } @@ -36,7 +46,7 @@ .content { margin: 0; color: #393939; - font-size: var(--font-size-md, 14px); + font-size: var(--responsive-body, 14px); line-height: 1.5; } @@ -49,7 +59,7 @@ .error { margin: 0; color: #c0392b; - font-size: var(--font-size-sm, 13px); + font-size: var(--responsive-caption, 13px); line-height: 1.45; } @@ -64,7 +74,7 @@ min-height: var(--pwa-button-height, 44px); border: 0; border-radius: var(--radius-bottom-sheet, 28px); - font-size: var(--font-size-lg, 16px); + font-size: var(--responsive-body, 16px); font-weight: 600; cursor: pointer; } diff --git a/src/app/subscription/components/subscription-banner.module.css b/src/app/subscription/components/subscription-banner.module.css index d118d929..9f6b67ef 100644 --- a/src/app/subscription/components/subscription-banner.module.css +++ b/src/app/subscription/components/subscription-banner.module.css @@ -1,14 +1,15 @@ .banner { position: relative; background: linear-gradient(90deg, #f96ade 0%, #ffb88a 100%); - border-radius: var(--radius-xl); - padding: var(--spacing-lg) var(--spacing-md); + border-radius: var(--responsive-card-radius-sm, var(--radius-xl)); + padding: var(--responsive-card-padding, var(--spacing-lg)) + var(--responsive-card-padding, var(--spacing-md)); text-align: center; } .text { margin: 0; - font-size: 17px; + font-size: var(--responsive-card-title, 17px); font-weight: 600; color: #ffffff; line-height: 1.3; @@ -17,12 +18,12 @@ /* 向下指的 CSS 三角 */ .pointer { position: absolute; - bottom: -8px; + bottom: clamp(-8px, -1.481vw, -6px); left: 50%; transform: translateX(-50%); width: 0; height: 0; - border-left: 10px solid transparent; - border-right: 10px solid transparent; - border-top: 10px solid #ffb88a; + border-left: clamp(8px, 1.852vw, 10px) solid transparent; + border-right: clamp(8px, 1.852vw, 10px) solid transparent; + border-top: clamp(8px, 1.852vw, 10px) solid #ffb88a; } diff --git a/src/app/subscription/components/subscription-benefits-card.module.css b/src/app/subscription/components/subscription-benefits-card.module.css index 74eea6f4..ff3fd4c6 100644 --- a/src/app/subscription/components/subscription-benefits-card.module.css +++ b/src/app/subscription/components/subscription-benefits-card.module.css @@ -1,6 +1,6 @@ .card { background-color: #ffffff; - border-radius: 21px; + border-radius: var(--responsive-card-radius-sm, 21px); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); overflow: hidden; border: solid 1px rgba(0, 0, 0, 0.14); @@ -9,12 +9,12 @@ .header { background-color: #fce4ec; border-radius: 5px; - padding: var(--spacing-md); + padding: var(--responsive-card-padding, var(--spacing-md)); text-align: center; } .title { - font-size: var(--font-size-lg); + font-size: var(--responsive-card-title, var(--font-size-lg)); font-weight: 600; color: #f657a0; line-height: 1.3; @@ -22,8 +22,8 @@ .list { list-style: none; - margin: 18px 0; - padding: 0 0 0 20px; + margin: var(--page-section-gap, 18px) 0; + padding: 0 0 0 var(--responsive-card-padding, 20px); } .item { @@ -31,7 +31,7 @@ align-items: flex-start; gap: 0; padding: 0; - font-size: var(--font-size-lg); + font-size: var(--responsive-body, var(--font-size-lg)); color: #1e1e1e; line-height: normal; } diff --git a/src/app/subscription/components/subscription-cta-button.module.css b/src/app/subscription/components/subscription-cta-button.module.css index a84c0d57..3431e54a 100644 --- a/src/app/subscription/components/subscription-cta-button.module.css +++ b/src/app/subscription/components/subscription-cta-button.module.css @@ -3,10 +3,10 @@ align-items: center; justify-content: center; width: 100%; - height: 52px; - padding: 0 var(--spacing-lg); + min-height: clamp(48px, 9.63vw, 52px); + padding: 0 var(--responsive-card-padding, var(--spacing-lg)); border: none; - border-radius: 35px; + border-radius: var(--radius-full, 999px); background-image: linear-gradient( 269deg, @@ -19,7 +19,7 @@ background-blend-mode: normal, normal; box-shadow: 0 5px 7px 0 rgba(247, 89, 168, 0.31); color: #ffffff; - font-size: var(--font-size-lg); + font-size: var(--responsive-body, var(--font-size-lg)); font-weight: 600; cursor: pointer; opacity: 0.85; @@ -51,8 +51,8 @@ .spinner { display: inline-block; - width: 18px; - height: 18px; + width: clamp(16px, 3.333vw, 18px); + height: clamp(16px, 3.333vw, 18px); border-width: 2px; border-style: solid; border-color: #ffffff transparent transparent transparent; diff --git a/src/app/subscription/components/subscription-payment-method.module.css b/src/app/subscription/components/subscription-payment-method.module.css index 91b73247..b0a578e1 100644 --- a/src/app/subscription/components/subscription-payment-method.module.css +++ b/src/app/subscription/components/subscription-payment-method.module.css @@ -1,7 +1,7 @@ .root { display: flex; flex-direction: column; - gap: 10px; + gap: clamp(8px, 1.852vw, 10px); } .header { @@ -15,7 +15,7 @@ .title { margin: 0; font-family: var(--font-athelas), var(--font-system); - font-size: var(--font-size-lg); + font-size: var(--responsive-card-title, var(--font-size-lg)); font-weight: 700; color: var(--color-auth-text-primary); line-height: 1.2; @@ -23,7 +23,7 @@ .caption { color: var(--color-text-secondary); - font-size: var(--font-size-sm); + font-size: var(--responsive-caption, var(--font-size-sm)); line-height: 1.2; white-space: nowrap; } @@ -36,12 +36,12 @@ .option { display: flex; - min-height: 62px; + min-height: clamp(54px, 11.481vw, 62px); align-items: center; justify-content: center; - padding: 10px 14px; + padding: clamp(9px, 1.852vw, 10px) clamp(12px, 2.593vw, 14px); border: 1px solid rgba(246, 87, 160, 0.18); - border-radius: 18px; + border-radius: var(--responsive-card-radius-sm, 18px); background: #ffffff; box-shadow: 0 5px 7px 0 rgba(247, 89, 168, 0.08); color: #3c3b3b; @@ -74,7 +74,7 @@ .optionTitle { color: #1e1e1e; - font-size: 16px; + font-size: var(--responsive-body, 16px); font-weight: 700; line-height: 1.1; } diff --git a/src/app/subscription/components/subscription-payment-success-dialog.module.css b/src/app/subscription/components/subscription-payment-success-dialog.module.css index f2f30caf..b22289b8 100644 --- a/src/app/subscription/components/subscription-payment-success-dialog.module.css +++ b/src/app/subscription/components/subscription-payment-success-dialog.module.css @@ -5,17 +5,24 @@ display: flex; align-items: center; justify-content: center; - padding: 20px; + padding: + calc(var(--dialog-safe-margin, 20px) + var(--app-safe-top, 0px)) + calc(var(--dialog-safe-margin, 20px) + var(--app-safe-right, 0px)) + calc(var(--dialog-safe-margin, 20px) + var(--app-safe-bottom, 0px)) + calc(var(--dialog-safe-margin, 20px) + var(--app-safe-left, 0px)); background: rgba(0, 0, 0, 0.45); } .dialog { width: 100%; - max-width: 380px; - border-radius: 32px; + max-width: var(--dialog-max-width, 380px); + border-radius: var(--responsive-card-radius, 32px); background: var(--color-page-background, #ffffff); box-shadow: 0 18px 40px rgba(0, 0, 0, 0.16); - padding: 28px 20px 20px; + padding: + var(--responsive-card-padding-lg, 28px) + var(--responsive-card-padding, 20px) + var(--responsive-card-padding, 20px); text-align: center; } @@ -23,13 +30,13 @@ display: inline-flex; align-items: center; justify-content: center; - width: 58px; - height: 58px; - margin-bottom: 16px; + width: clamp(52px, 10.741vw, 58px); + height: clamp(52px, 10.741vw, 58px); + margin-bottom: var(--page-section-gap, 16px); border-radius: 999px; background: linear-gradient(135deg, #ff67e0 0%, #f657a0 100%); color: #ffffff; - font-size: 32px; + font-size: clamp(28px, 5.926vw, 32px); font-weight: 700; line-height: 1; box-shadow: 0 8px 18px rgba(247, 89, 168, 0.28); @@ -38,7 +45,7 @@ .title { margin: 0 0 8px; color: var(--color-text-foreground, #171717); - font-size: var(--font-size-22, 22px); + font-size: var(--responsive-page-title, 22px); font-weight: 700; line-height: 1.2; } @@ -46,14 +53,14 @@ .content { margin: 0; color: #393939; - font-size: var(--font-size-md, 14px); + font-size: var(--responsive-body, 14px); line-height: 1.5; } .button { width: 100%; - min-height: 48px; - margin-top: 22px; + min-height: var(--responsive-control-height, 48px); + margin-top: var(--page-section-gap-lg, 22px); border: 0; border-radius: 999px; background: @@ -63,7 +70,7 @@ box-shadow: 0 5px 7px rgba(247, 89, 168, 0.31); color: #ffffff; cursor: pointer; - font-size: var(--font-size-lg, 16px); + font-size: var(--responsive-body, 16px); font-weight: 700; } diff --git a/src/app/subscription/components/subscription-plan-card.module.css b/src/app/subscription/components/subscription-plan-card.module.css index 684330ce..17b14ea8 100644 --- a/src/app/subscription/components/subscription-plan-card.module.css +++ b/src/app/subscription/components/subscription-plan-card.module.css @@ -3,11 +3,14 @@ display: flex; flex-direction: column; align-items: center; - height: 154px; - padding: var(--spacing-sm) var(--spacing-xs) 0; + min-height: clamp(136px, 28.519vw, 154px); + padding: + clamp(7px, 1.481vw, 8px) + clamp(4px, 0.926vw, 5px) + 0; background: #ffffff; border: 1px solid transparent; - border-radius: 20px; + border-radius: var(--responsive-card-radius-sm, 20px); border-style: solid; box-shadow: 0 5px 7px 0 rgba(247, 89, 168, 0.1); cursor: pointer; @@ -32,12 +35,12 @@ .selected { border-color: #f657a0; border-width: 3px; - border-radius: 20px; + border-radius: var(--responsive-card-radius-sm, 20px); } .name { margin-top: var(--spacing-lg); - font-size: var(--font-size-lg); + font-size: var(--responsive-body, var(--font-size-lg)); font-weight: 500; color: var(--color-auth-text-primary); line-height: 1.2; @@ -53,17 +56,17 @@ } .currency { - font-size: var(--font-size-lg); + font-size: var(--responsive-body, var(--font-size-lg)); } .price { - font-size: var(--font-size-40); + font-size: clamp(32px, 7.407vw, var(--font-size-40)); line-height: 1; } .originalPrice { margin: 4px 0 var(--spacing-sm); - font-size: var(--font-size-lg); + font-size: var(--responsive-body, var(--font-size-lg)); color: #999999; text-decoration: line-through; line-height: 1; @@ -75,7 +78,7 @@ padding: 6px 0; border-radius: 0; color: #ffffff; - font-size: var(--font-size-md); + font-size: var(--responsive-caption, var(--font-size-md)); font-weight: 600; text-align: center; line-height: 1.2; diff --git a/src/app/subscription/components/subscription-user-row.module.css b/src/app/subscription/components/subscription-user-row.module.css index bf138f26..99e6024a 100644 --- a/src/app/subscription/components/subscription-user-row.module.css +++ b/src/app/subscription/components/subscription-user-row.module.css @@ -6,8 +6,8 @@ .avatar { flex: 0 0 auto; - width: 56px; - height: 56px; + width: var(--sidebar-avatar-size, 56px); + height: var(--sidebar-avatar-size, 56px); border-radius: 50%; background: var(--color-accent); display: flex; @@ -38,7 +38,7 @@ .name { margin: 0; - font-size: var(--font-size-lg); + font-size: var(--responsive-body, var(--font-size-lg)); font-weight: 600; color: #000; line-height: 1.2; @@ -46,7 +46,7 @@ .subtitle { margin: 0; - font-size: var(--font-size-sm); + font-size: var(--responsive-caption, var(--font-size-sm)); color: var(--color-text-secondary); line-height: 1.2; } diff --git a/src/tokens/dimensions.css b/src/tokens/dimensions.css index 95fd9c93..95d59cd7 100644 --- a/src/tokens/dimensions.css +++ b/src/tokens/dimensions.css @@ -17,8 +17,16 @@ --pwa-button-height: 44px; /* 对话框 */ - --dialog-max-width: min(calc(100vw - 40px), 380px); - --pwa-install-dialog-max-width: min(calc(100vw - 40px), 380px); + --dialog-safe-margin: clamp(16px, 4.444vw, 24px); + --dialog-max-width: min( + calc(100vw - calc(var(--dialog-safe-margin) * 2)), + 380px + ); + --dialog-wide-max-width: min( + calc(100vw - calc(var(--dialog-safe-margin) * 2)), + 420px + ); + --pwa-install-dialog-max-width: var(--dialog-max-width); --pwa-install-container-size: 64px; /* 列表项 */