Refactor chat component styles for responsiveness and consistency
- Updated padding and margin properties across various chat components to utilize responsive design tokens, ensuring better adaptability to different screen sizes. - Replaced fixed sizes with responsive variables for buttons, avatars, and bubbles to enhance UI flexibility. - Adjusted font sizes to use responsive tokens, improving text readability on various devices. - Standardized border-radius and other dimensions using CSS variables for a cohesive design language. - Enhanced dialog and screen components with safe area insets for better compatibility with modern devices.
This commit is contained in:
@@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
.floating {
|
.floating {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: var(--spacing-xl);
|
top: calc(var(--spacing-xl, 20px) + var(--app-safe-top, 0px));
|
||||||
left: var(--spacing-xl);
|
left: calc(var(--spacing-xl, 20px) + var(--app-safe-left, 0px));
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
width: var(--back-button-size);
|
width: var(--back-button-size);
|
||||||
height: var(--back-button-size);
|
height: var(--back-button-size);
|
||||||
@@ -27,8 +27,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.soft {
|
.soft {
|
||||||
width: 42px;
|
width: var(--responsive-icon-button-size, 42px);
|
||||||
height: 42px;
|
height: var(--responsive-icon-button-size, 42px);
|
||||||
color: #21191d;
|
color: #21191d;
|
||||||
border: 1px solid rgba(25, 19, 22, 0.08);
|
border: 1px solid rgba(25, 19, 22, 0.08);
|
||||||
background: rgba(255, 255, 255, 0.82);
|
background: rgba(255, 255, 255, 0.82);
|
||||||
|
|||||||
@@ -15,12 +15,12 @@
|
|||||||
.panel {
|
.panel {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 500px;
|
max-width: var(--app-max-width, 540px);
|
||||||
background: var(--color-auth-surface);
|
background: var(--color-auth-surface);
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
border-radius: var(--radius-bottom-sheet) var(--radius-bottom-sheet) 0 0;
|
border-radius: var(--radius-bottom-sheet) var(--radius-bottom-sheet) 0 0;
|
||||||
box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.18);
|
box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.18);
|
||||||
padding-bottom: env(safe-area-inset-bottom);
|
padding-bottom: var(--app-safe-bottom, env(safe-area-inset-bottom));
|
||||||
animation: slideUp 0.18s ease-out;
|
animation: slideUp 0.18s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* 设计目标:
|
* 设计目标:
|
||||||
* - portal 渲染到 body
|
* - portal 渲染到 body
|
||||||
* - 固定底部、最大宽度 500px、顶部圆角 `--radius-bottom-sheet`
|
* - 固定底部、最大宽度跟随 `--app-max-width`、顶部圆角 `--radius-bottom-sheet`
|
||||||
* - ESC 关闭 / 点击 scrim 关闭 / 打开时锁定 body 滚动
|
* - ESC 关闭 / 点击 scrim 关闭 / 打开时锁定 body 滚动
|
||||||
* - 简单 slide-up 动画(与原 Dart 行为接近)
|
* - 简单 slide-up 动画(与原 Dart 行为接近)
|
||||||
* - 调用方只关心内容布局
|
* - 调用方只关心内容布局
|
||||||
|
|||||||
@@ -5,15 +5,20 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: var(--spacing-md);
|
padding:
|
||||||
|
calc(var(--spacing-md, 12px) + var(--app-safe-top, 0px))
|
||||||
|
calc(var(--spacing-md, 12px) + var(--app-safe-right, 0px))
|
||||||
|
calc(var(--spacing-md, 12px) + var(--app-safe-bottom, 0px))
|
||||||
|
calc(var(--spacing-md, 12px) + var(--app-safe-left, 0px));
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel {
|
.panel {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
max-width: var(--dialog-max-width, 380px);
|
||||||
background: var(--color-dialog-background);
|
background: var(--color-dialog-background);
|
||||||
border: var(--border-light) solid var(--color-dialog-border);
|
border: var(--border-light) solid var(--color-dialog-border);
|
||||||
border-radius: var(--radius-xl);
|
border-radius: var(--responsive-card-radius, var(--radius-xl));
|
||||||
box-shadow: 0 24px 48px rgba(0, 0, 0, 0.45);
|
box-shadow: 0 24px 48px rgba(0, 0, 0, 0.45);
|
||||||
color: var(--color-text-primary);
|
color: var(--color-text-primary);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* Auth 背景图片
|
* Auth 背景图片
|
||||||
*
|
*
|
||||||
* 与 splash-background.tsx 同款模式(next/image fill + 500px sizes)。
|
* 与 splash-background.tsx 同款模式(next/image fill + 540px sizes)。
|
||||||
* 资源: /public/images/auth/bg-login.png
|
* 资源: /public/images/auth/bg-login.png
|
||||||
*/
|
*/
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
@@ -15,7 +15,7 @@ export function AuthBackground() {
|
|||||||
alt=""
|
alt=""
|
||||||
fill
|
fill
|
||||||
priority
|
priority
|
||||||
sizes="(max-width: 500px) 100vw, 500px"
|
sizes="(max-width: 540px) 100vw, 540px"
|
||||||
className={styles.image}
|
className={styles.image}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -28,16 +28,16 @@
|
|||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
display: block;
|
display: block;
|
||||||
height: var(--auth-logo-height);
|
height: clamp(92px, 22.222vw, var(--auth-logo-height));
|
||||||
width: auto;
|
width: auto;
|
||||||
max-width: 220px;
|
max-width: min(56vw, 220px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spacer {
|
.spacer {
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
min-height: var(--spacing-lg);
|
min-height: var(--page-section-gap, var(--spacing-lg));
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggleButton {
|
.toggleButton {
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
padding: var(--spacing-md) 0 0;
|
padding: var(--spacing-md) 0 0;
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
text-underline-offset: 3px;
|
text-underline-offset: 3px;
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
padding: var(--spacing-md) 0 var(--spacing-md);
|
padding: var(--spacing-md) 0 var(--spacing-md);
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
text-underline-offset: 3px;
|
text-underline-offset: 3px;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
background: transparent;
|
background: transparent;
|
||||||
border: none;
|
border: none;
|
||||||
color: var(--color-error);
|
color: var(--color-error);
|
||||||
font-size: var(--font-size-sm);
|
font-size: var(--responsive-caption, var(--font-size-sm));
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,14 +16,14 @@
|
|||||||
|
|
||||||
.spacer {
|
.spacer {
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
min-height: var(--spacing-lg);
|
min-height: var(--page-section-gap, var(--spacing-lg));
|
||||||
}
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
display: block;
|
display: block;
|
||||||
height: var(--auth-logo-height);
|
height: clamp(92px, 22.222vw, var(--auth-logo-height));
|
||||||
width: auto;
|
width: auto;
|
||||||
max-width: 220px;
|
max-width: min(56vw, 220px);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
}
|
}
|
||||||
@@ -34,13 +34,13 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: var(--spacing-md);
|
gap: var(--spacing-md);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: var(--auth-field-height);
|
min-height: var(--auth-field-height);
|
||||||
padding: 0 var(--spacing-lg);
|
padding: 0 var(--spacing-lg);
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: var(--radius-xxxl);
|
border-radius: var(--radius-full, 999px);
|
||||||
background: var(--color-auth-surface);
|
background: var(--color-auth-surface);
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-top: var(--spacing-md);
|
margin-top: var(--spacing-md);
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
padding: var(--spacing-md) 0;
|
padding: var(--spacing-md) 0;
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
text-underline-offset: 3px;
|
text-underline-offset: 3px;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
.text {
|
.text {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: var(--font-size-sm);
|
font-size: var(--responsive-caption, var(--font-size-sm));
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
gap: var(--spacing-md);
|
gap: var(--spacing-md);
|
||||||
padding: var(--spacing-md) var(--spacing-xxl)
|
padding: var(--spacing-md) var(--spacing-xxl)
|
||||||
calc(var(--spacing-xxl) + env(safe-area-inset-bottom));
|
calc(var(--spacing-xxl) + var(--app-safe-bottom, 0px));
|
||||||
}
|
}
|
||||||
|
|
||||||
.handle {
|
.handle {
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
.title {
|
.title {
|
||||||
margin: var(--spacing-sm) 0;
|
margin: var(--spacing-sm) 0;
|
||||||
font-size: var(--font-size-bottom-sheet-title);
|
font-size: var(--responsive-page-title, var(--font-size-bottom-sheet-title));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
border: none;
|
border: none;
|
||||||
padding: var(--spacing-md) 0;
|
padding: var(--spacing-md) 0;
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|||||||
@@ -13,10 +13,10 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: var(--spacing-sm);
|
gap: var(--spacing-sm);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: var(--auth-field-height);
|
min-height: var(--auth-field-height);
|
||||||
padding: 0 var(--spacing-lg);
|
padding: 0 var(--spacing-lg);
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: var(--radius-xxxl);
|
border-radius: var(--radius-full, 999px);
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
90deg,
|
90deg,
|
||||||
var(--color-auth-primary-gradient-start),
|
var(--color-auth-primary-gradient-start),
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
);
|
);
|
||||||
box-shadow: 0 3px 5px var(--color-auth-primary-button-shadow);
|
box-shadow: 0 3px 5px var(--color-auth-primary-button-shadow);
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
font-size: var(--font-size-lg);
|
font-size: var(--responsive-body, var(--font-size-lg));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: filter 0.15s ease, transform 0.05s ease, opacity 0.15s ease;
|
transition: filter 0.15s ease, transform 0.05s ease, opacity 0.15s ease;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* auth-screen.module.css
|
/* auth-screen.module.css
|
||||||
* 与 splash-screen.module.css 同款结构(MobileShell 顶层 + .wrapper + .content)
|
* 与 splash-screen.module.css 同款结构(MobileShell 顶层 + .wrapper + .content)
|
||||||
* 删:.fullBleed(mobile 宽度约束改由 MobileShell.content 的 max-width: 500px 提供)
|
* 移动端宽度约束由 ResponsiveMobileShell / MobileShell 统一提供。
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.wrapper {
|
.wrapper {
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 100dvh;
|
min-height: var(--app-viewport-height, 100dvh);
|
||||||
background: #fbf1f2;
|
background: #fbf1f2;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
@@ -21,5 +21,9 @@
|
|||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: var(--spacing-lg);
|
padding:
|
||||||
|
calc(var(--page-padding-y, var(--spacing-lg)) + var(--app-safe-top, 0px))
|
||||||
|
calc(var(--page-padding-x, var(--spacing-lg)) + var(--app-safe-right, 0px))
|
||||||
|
calc(var(--page-padding-y, var(--spacing-lg)) + var(--app-safe-bottom, 0px))
|
||||||
|
calc(var(--page-padding-x, var(--spacing-lg)) + var(--app-safe-left, 0px));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,13 +14,13 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: var(--spacing-md);
|
gap: var(--spacing-md);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: var(--auth-social-button-height);
|
min-height: var(--auth-social-button-height);
|
||||||
padding: 0 var(--spacing-lg);
|
padding: 0 var(--spacing-lg);
|
||||||
border: 1px solid var(--color-auth-border);
|
border: 1px solid var(--color-auth-border);
|
||||||
border-radius: var(--radius-xxl);
|
border-radius: var(--radius-full, 999px);
|
||||||
background: var(--color-auth-surface);
|
background: var(--color-auth-surface);
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: background 0.15s ease, opacity 0.15s ease;
|
transition: background 0.15s ease, opacity 0.15s ease;
|
||||||
|
|||||||
@@ -11,13 +11,13 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: var(--spacing-sm);
|
gap: var(--spacing-sm);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: var(--button-height);
|
min-height: var(--button-height);
|
||||||
padding: 0 var(--spacing-lg);
|
padding: 0 var(--spacing-lg);
|
||||||
border: var(--border-light) solid var(--color-chat-input-border);
|
border: var(--border-light) solid var(--color-chat-input-border);
|
||||||
border-radius: var(--radius-full);
|
border-radius: var(--radius-full);
|
||||||
background: rgba(255, 255, 255, 0.04);
|
background: rgba(255, 255, 255, 0.04);
|
||||||
color: var(--color-text-primary);
|
color: var(--color-text-primary);
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: background 0.15s ease;
|
transition: background 0.15s ease;
|
||||||
|
|||||||
@@ -16,19 +16,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.label {
|
.label {
|
||||||
font-size: var(--font-size-sm);
|
font-size: var(--responsive-caption, var(--font-size-sm));
|
||||||
color: var(--color-text-secondary);
|
color: var(--color-text-secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.input {
|
.input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: var(--auth-field-height);
|
min-height: var(--auth-field-height);
|
||||||
padding: 0 var(--spacing-lg) 0 var(--spacing-xxl);
|
padding: 0 var(--spacing-lg) 0 var(--spacing-xxl);
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: var(--radius-xxxl);
|
border-radius: var(--radius-full, 999px);
|
||||||
background: var(--color-auth-surface);
|
background: var(--color-auth-surface);
|
||||||
color: var(--color-auth-text-primary);
|
color: var(--color-auth-text-primary);
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
box-shadow: 0 3px 5px var(--color-auth-input-shadow);
|
box-shadow: 0 3px 5px var(--color-auth-input-shadow);
|
||||||
outline: none;
|
outline: none;
|
||||||
transition: box-shadow 0.15s ease;
|
transition: box-shadow 0.15s ease;
|
||||||
@@ -54,6 +54,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.error {
|
.error {
|
||||||
font-size: var(--font-size-sm);
|
font-size: var(--responsive-caption, var(--font-size-sm));
|
||||||
color: var(--color-error);
|
color: var(--color-error);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ export function ChatScreen() {
|
|||||||
alt=""
|
alt=""
|
||||||
fill
|
fill
|
||||||
priority
|
priority
|
||||||
sizes="(max-width: 500px) 100vw, 500px"
|
sizes="(max-width: 540px) 100vw, 540px"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,11 @@
|
|||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding: var(--spacing-4, 16px) var(--spacing-5, 20px);
|
padding:
|
||||||
|
var(--spacing-lg, 16px)
|
||||||
|
calc(var(--chat-inline-padding, 20px) + var(--app-safe-right, 0px))
|
||||||
|
var(--spacing-lg, 16px)
|
||||||
|
calc(var(--chat-inline-padding, 20px) + var(--app-safe-left, 0px));
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: var(--spacing-3, 12px);
|
gap: var(--spacing-3, 12px);
|
||||||
@@ -21,7 +25,7 @@
|
|||||||
background: var(--color-surface-muted, rgba(255, 255, 255, 0.06));
|
background: var(--color-surface-muted, rgba(255, 255, 255, 0.06));
|
||||||
border-radius: var(--radius-md, 8px);
|
border-radius: var(--radius-md, 8px);
|
||||||
padding: var(--spacing-1, 4px) var(--spacing-3, 12px);
|
padding: var(--spacing-1, 4px) var(--spacing-3, 12px);
|
||||||
font-size: var(--font-size-xs, 11px);
|
font-size: var(--responsive-micro, var(--font-size-xs, 11px));
|
||||||
color: #000;
|
color: #000;
|
||||||
opacity: 0.75;
|
opacity: 0.75;
|
||||||
}
|
}
|
||||||
@@ -31,7 +35,7 @@
|
|||||||
background: var(--color-surface-muted, rgba(255, 255, 255, 0.06));
|
background: var(--color-surface-muted, rgba(255, 255, 255, 0.06));
|
||||||
border-radius: var(--radius-md, 8px);
|
border-radius: var(--radius-md, 8px);
|
||||||
padding: var(--spacing-2, 8px) var(--spacing-4, 16px);
|
padding: var(--spacing-2, 8px) var(--spacing-4, 16px);
|
||||||
font-size: var(--font-size-sm, 12px);
|
font-size: var(--responsive-caption, var(--font-size-sm, 12px));
|
||||||
color: #8c8b8b;
|
color: #8c8b8b;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
@@ -56,22 +60,22 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.bubbleAi {
|
.bubbleAi {
|
||||||
max-width: 75%;
|
max-width: var(--chat-bubble-max-width, 75%);
|
||||||
background: var(--color-bubble-ai, rgba(255, 255, 255, 0.08));
|
background: var(--color-bubble-ai, rgba(255, 255, 255, 0.08));
|
||||||
padding: var(--spacing-3, 12px) var(--spacing-4, 16px);
|
padding: var(--spacing-3, 12px) var(--spacing-4, 16px);
|
||||||
border-radius: var(--radius-lg, 12px);
|
border-radius: var(--radius-lg, 12px);
|
||||||
font-size: var(--font-size-base, 14px);
|
font-size: var(--responsive-body, var(--font-size-base, 14px));
|
||||||
line-height: 1.45;
|
line-height: 1.45;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bubbleUser {
|
.bubbleUser {
|
||||||
max-width: 75%;
|
max-width: var(--chat-bubble-max-width, 75%);
|
||||||
background: var(--color-bubble-user, #4f46e5);
|
background: var(--color-bubble-user, #4f46e5);
|
||||||
padding: var(--spacing-3, 12px) var(--spacing-4, 16px);
|
padding: var(--spacing-3, 12px) var(--spacing-4, 16px);
|
||||||
border-radius: var(--radius-lg, 12px);
|
border-radius: var(--radius-lg, 12px);
|
||||||
font-size: var(--font-size-base, 14px);
|
font-size: var(--responsive-body, var(--font-size-base, 14px));
|
||||||
line-height: 1.45;
|
line-height: 1.45;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
@@ -79,7 +83,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.bubbleTime {
|
.bubbleTime {
|
||||||
font-size: var(--font-size-xs, 11px);
|
font-size: var(--responsive-micro, var(--font-size-xs, 11px));
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
padding: var(--spacing-sm, 8px) var(--spacing-md, 12px);
|
padding: var(--spacing-sm, 8px) var(--spacing-md, 12px);
|
||||||
background: var(--color-accent, #f84d96);
|
background: var(--color-accent, #f84d96);
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: var(--font-size-sm, 12px);
|
font-size: var(--responsive-caption, var(--font-size-sm, 12px));
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: 0;
|
border: 0;
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: var(--spacing-sm, 8px);
|
padding: var(--spacing-sm, 8px);
|
||||||
background: rgba(13, 11, 20, 0.7); /* AppColors.darkBackground #0d0b14 @ alpha 0.7 */
|
background: rgba(13, 11, 20, 0.7); /* AppColors.darkBackground #0d0b14 @ alpha 0.7 */
|
||||||
border-radius: 32px; /* AppSpacing.xxxl */
|
border-radius: var(--radius-full, 999px);
|
||||||
border: 0;
|
border: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: var(--color-text-primary, #fff);
|
color: var(--color-text-primary, #fff);
|
||||||
|
|||||||
@@ -2,16 +2,17 @@
|
|||||||
|
|
||||||
/* 键盘适配:
|
/* 键盘适配:
|
||||||
* --chat-input-lift 是小米 Android + Facebook IAB 的专用抬升值。
|
* --chat-input-lift 是小米 Android + Facebook IAB 的专用抬升值。
|
||||||
* env(safe-area-inset-bottom) 处理小米全面屏手势条 / iPhone home indicator。
|
* --app-safe-bottom 处理小米全面屏手势条 / iPhone home indicator。
|
||||||
* 正常浏览器中 --chat-input-lift 为 0,因此无视觉副作用。 */
|
* 正常浏览器中 --chat-input-lift 为 0,因此无视觉副作用。 */
|
||||||
.bar {
|
.bar {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
padding: 0
|
padding: 0
|
||||||
var(--spacing-lg, 16px)
|
calc(var(--chat-inline-padding, 16px) + var(--app-safe-right, 0px))
|
||||||
calc(
|
calc(
|
||||||
var(--spacing-lg, 16px) + var(--chat-input-lift, 0px) +
|
var(--spacing-lg, 16px) + var(--chat-input-lift, 0px) +
|
||||||
env(safe-area-inset-bottom, 0px)
|
var(--app-safe-bottom, 0px)
|
||||||
);
|
)
|
||||||
|
calc(var(--chat-inline-padding, 16px) + var(--app-safe-left, 0px));
|
||||||
background: transparent;
|
background: transparent;
|
||||||
transition: padding-top 0.2s ease, padding-bottom 0.2s ease,
|
transition: padding-top 0.2s ease, padding-bottom 0.2s ease,
|
||||||
background-color 0.2s ease, box-shadow 0.2s ease;
|
background-color 0.2s ease, box-shadow 0.2s ease;
|
||||||
@@ -30,7 +31,7 @@
|
|||||||
gap: var(--spacing-sm, 8px);
|
gap: var(--spacing-sm, 8px);
|
||||||
padding: var(--spacing-sm, 8px);
|
padding: var(--spacing-sm, 8px);
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border-radius: 32px;
|
border-radius: var(--radius-full, 999px);
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
transition: border-color 0.2s ease;
|
transition: border-color 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0 var(--spacing-lg, 16px); /* Dart: horizontal AppSpacing.lg */
|
padding: 0 var(--spacing-lg, 16px); /* Dart: horizontal AppSpacing.lg */
|
||||||
background: #fff; /* Dart: Colors.white */
|
background: #fff; /* Dart: Colors.white */
|
||||||
border-radius: 32px; /* Dart: AppRadius.xxxl */
|
border-radius: var(--radius-full, 999px);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* textarea 本身(裸元素,背景透明让外层白底透出) */
|
/* textarea 本身(裸元素,背景透明让外层白底透出) */
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 40px;
|
min-height: var(--chat-send-button-size, 40px);
|
||||||
max-height: 120px; /* 约 5 行 × 24px line-height */
|
max-height: 120px; /* 约 5 行 × 24px line-height */
|
||||||
padding: 6px 0 0 0; /* 上 6px:让文字视觉下移,避开正中位置 */
|
padding: 6px 0 0 0; /* 上 6px:让文字视觉下移,避开正中位置 */
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
.button {
|
.button {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
width: 40px;
|
width: var(--chat-send-button-size, 40px);
|
||||||
height: 40px;
|
height: var(--chat-send-button-size, 40px);
|
||||||
aspect-ratio: 1 / 1;
|
aspect-ratio: 1 / 1;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
@@ -37,8 +37,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 24px;
|
width: var(--icon-size-xl, 24px);
|
||||||
height: 24px;
|
height: var(--icon-size-xl, 24px);
|
||||||
font-size: 24px;
|
font-size: var(--icon-size-xl, 24px);
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,15 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
background: rgba(0, 0, 0, 0.5);
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog {
|
.dialog {
|
||||||
width: calc(100% - 40px);
|
width: 100%;
|
||||||
max-width: var(--pwa-install-dialog-max-width, 360px);
|
max-width: var(--pwa-install-dialog-max-width, 360px);
|
||||||
padding: 24px 16px 16px;
|
padding: 24px 16px 16px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -20,7 +25,7 @@
|
|||||||
|
|
||||||
.title {
|
.title {
|
||||||
margin: 0 0 10px;
|
margin: 0 0 10px;
|
||||||
font-size: var(--font-size-22, 22px);
|
font-size: var(--responsive-page-title, var(--font-size-22, 22px));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
color: var(--color-text-foreground, #171717);
|
color: var(--color-text-foreground, #171717);
|
||||||
@@ -28,7 +33,7 @@
|
|||||||
|
|
||||||
.content {
|
.content {
|
||||||
margin: 0 24px var(--spacing-xxl, 24px);
|
margin: 0 24px var(--spacing-xxl, 24px);
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #393939;
|
color: #393939;
|
||||||
@@ -43,10 +48,10 @@
|
|||||||
|
|
||||||
.button {
|
.button {
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
height: var(--pwa-button-height, 44px);
|
min-height: var(--pwa-button-height, 44px);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: var(--radius-bottom-sheet, 28px);
|
border-radius: var(--radius-bottom-sheet, 28px);
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -52,14 +52,14 @@
|
|||||||
|
|
||||||
.backButton {
|
.backButton {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 22px;
|
top: calc(var(--page-padding-y, 22px) + var(--app-safe-top, 0px));
|
||||||
left: 18px;
|
left: calc(var(--chat-inline-padding, 18px) + var(--app-safe-left, 0px));
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 54px;
|
width: clamp(48px, 10vw, 54px);
|
||||||
height: 54px;
|
height: clamp(48px, 10vw, 54px);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
background: rgba(255, 255, 255, 0.94);
|
background: rgba(255, 255, 255, 0.94);
|
||||||
@@ -70,11 +70,11 @@
|
|||||||
|
|
||||||
.unlockButton {
|
.unlockButton {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 18px;
|
right: calc(var(--chat-inline-padding, 18px) + var(--app-safe-right, 0px));
|
||||||
bottom: max(24px, env(safe-area-inset-bottom));
|
bottom: calc(var(--page-section-gap-lg, 24px) + var(--app-safe-bottom, 0px));
|
||||||
left: 18px;
|
left: calc(var(--chat-inline-padding, 18px) + var(--app-safe-left, 0px));
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
min-height: 64px;
|
min-height: clamp(56px, 11.852vw, 64px);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
background: linear-gradient(90deg, #e05ad7 0%, #ef66b0 100%);
|
background: linear-gradient(90deg, #e05ad7 0%, #ef66b0 100%);
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-family: var(--font-athelas), Athelas, serif;
|
font-family: var(--font-athelas), Athelas, serif;
|
||||||
font-size: 22px;
|
font-size: var(--responsive-page-title, 22px);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 0.01em;
|
letter-spacing: 0.01em;
|
||||||
}
|
}
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
|
|
||||||
.error {
|
.error {
|
||||||
color: var(--color-text-secondary, #9e9e9e);
|
color: var(--color-text-secondary, #9e9e9e);
|
||||||
font-size: 48px;
|
font-size: clamp(36px, 8.889vw, 48px);
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes spin {
|
@keyframes spin {
|
||||||
|
|||||||
@@ -6,10 +6,15 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
background: rgba(0, 0, 0, 0.5);
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog {
|
.dialog {
|
||||||
width: calc(100% - 40px);
|
width: 100%;
|
||||||
max-width: var(--pwa-install-dialog-max-width, 360px);
|
max-width: var(--pwa-install-dialog-max-width, 360px);
|
||||||
padding: 24px 16px 16px;
|
padding: 24px 16px 16px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -20,7 +25,7 @@
|
|||||||
|
|
||||||
.title {
|
.title {
|
||||||
margin: 0 0 10px;
|
margin: 0 0 10px;
|
||||||
font-size: var(--font-size-22, 22px);
|
font-size: var(--responsive-page-title, var(--font-size-22, 22px));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
color: var(--color-text-foreground, #171717);
|
color: var(--color-text-foreground, #171717);
|
||||||
@@ -28,7 +33,7 @@
|
|||||||
|
|
||||||
.content {
|
.content {
|
||||||
margin: 0 24px var(--spacing-lg, 16px);
|
margin: 0 24px var(--spacing-lg, 16px);
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #393939;
|
color: #393939;
|
||||||
@@ -36,7 +41,7 @@
|
|||||||
|
|
||||||
.error {
|
.error {
|
||||||
margin: 0 24px var(--spacing-lg, 16px);
|
margin: 0 24px var(--spacing-lg, 16px);
|
||||||
font-size: var(--font-size-md, 14px);
|
font-size: var(--responsive-caption, var(--font-size-md, 14px));
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #c0364c;
|
color: #c0364c;
|
||||||
@@ -50,10 +55,10 @@
|
|||||||
|
|
||||||
.button {
|
.button {
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
height: var(--pwa-button-height, 44px);
|
min-height: var(--pwa-button-height, 44px);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: var(--radius-bottom-sheet, 28px);
|
border-radius: var(--radius-bottom-sheet, 28px);
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
.bubble {
|
.bubble {
|
||||||
position: relative;
|
position: relative;
|
||||||
max-width: 220px;
|
max-width: var(--chat-media-size, 220px);
|
||||||
max-height: 220px;
|
max-height: var(--chat-media-size, 220px);
|
||||||
border-radius: var(--radius-lg, 12px);
|
border-radius: var(--radius-lg, 12px);
|
||||||
border-top-left-radius: 0;
|
border-top-left-radius: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -39,9 +39,9 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 220px;
|
width: var(--chat-media-size, 220px);
|
||||||
height: 220px;
|
height: var(--chat-media-size, 220px);
|
||||||
background: var(--color-bubble-background, #fff);
|
background: var(--color-bubble-background, #fff);
|
||||||
color: var(--color-text-secondary, #9e9e9e);
|
color: var(--color-text-secondary, #9e9e9e);
|
||||||
font-size: 24px;
|
font-size: var(--icon-size-xl, 24px);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,11 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 20px;
|
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));
|
||||||
background: rgba(0, 0, 0, 0.52);
|
background: rgba(0, 0, 0, 0.52);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,7 +27,7 @@
|
|||||||
.title {
|
.title {
|
||||||
margin: 0 0 10px;
|
margin: 0 0 10px;
|
||||||
color: var(--color-text-foreground, #171717);
|
color: var(--color-text-foreground, #171717);
|
||||||
font-size: var(--font-size-22, 22px);
|
font-size: var(--responsive-page-title, var(--font-size-22, 22px));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
@@ -31,7 +35,7 @@
|
|||||||
.content {
|
.content {
|
||||||
margin: 0 12px 18px;
|
margin: 0 12px 18px;
|
||||||
color: #393939;
|
color: #393939;
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +54,7 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
color: #4a3b43;
|
color: #4a3b43;
|
||||||
font-size: var(--font-size-md, 14px);
|
font-size: var(--responsive-caption, var(--font-size-md, 14px));
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +66,7 @@
|
|||||||
.creditItem dd {
|
.creditItem dd {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: #f657a0;
|
color: #f657a0;
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,10 +78,10 @@
|
|||||||
|
|
||||||
.button {
|
.button {
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
height: var(--pwa-button-height, 44px);
|
min-height: var(--pwa-button-height, 44px);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: var(--radius-bottom-sheet, 28px);
|
border-radius: var(--radius-bottom-sheet, 28px);
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -8,22 +8,27 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
z-index: 50;
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog {
|
.dialog {
|
||||||
width: calc(100% - 40px);
|
width: 100%;
|
||||||
max-width: 360px;
|
max-width: var(--dialog-max-width, 360px);
|
||||||
background: var(--color-surface, #1f1a2e);
|
background: var(--color-surface, #1f1a2e);
|
||||||
border-radius: var(--radius-lg, 12px);
|
border-radius: var(--radius-lg, 12px);
|
||||||
padding: var(--spacing-5, 20px);
|
padding: var(--spacing-5, 20px);
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: var(--spacing-3, 12px);
|
gap: var(--spacing-3, 12px);
|
||||||
max-height: 80vh;
|
max-height: min(80vh, calc(var(--app-visible-height, 100dvh) - 32px));
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
font-size: var(--font-size-lg, 18px);
|
font-size: var(--responsive-section-title, var(--font-size-lg, 18px));
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: var(--color-text-primary, #fff);
|
color: var(--color-text-primary, #fff);
|
||||||
@@ -34,7 +39,7 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: var(--spacing-1, 4px);
|
gap: var(--spacing-1, 4px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
max-height: 60vh;
|
max-height: min(60vh, calc(var(--app-visible-height, 100dvh) - 120px));
|
||||||
}
|
}
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
@@ -46,7 +51,7 @@
|
|||||||
border: 0;
|
border: 0;
|
||||||
border-radius: var(--radius-md, 8px);
|
border-radius: var(--radius-md, 8px);
|
||||||
color: var(--color-text-primary, #fff);
|
color: var(--color-text-primary, #fff);
|
||||||
font-size: var(--font-size-base, 14px);
|
font-size: var(--responsive-body, var(--font-size-base, 14px));
|
||||||
text-align: left;
|
text-align: left;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
width: 43px;
|
width: var(--chat-avatar-size, 43px);
|
||||||
height: 43px;
|
height: var(--chat-avatar-size, 43px);
|
||||||
border-radius: 9999px;
|
border-radius: 9999px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border: 2px solid var(--color-avatar-border, #fbf3f5);
|
border: 2px solid var(--color-avatar-border, #fbf3f5);
|
||||||
@@ -26,5 +26,5 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-size: 24px;
|
font-size: var(--icon-size-xl, 24px);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
.card {
|
.card {
|
||||||
max-width: min(280px, 100%);
|
max-width: min(72vw, 280px);
|
||||||
padding: 14px;
|
padding: var(--responsive-card-padding, 14px);
|
||||||
border: 1px solid rgba(246, 87, 160, 0.2);
|
border: 1px solid rgba(246, 87, 160, 0.2);
|
||||||
border-radius: 18px;
|
border-radius: var(--responsive-card-radius-sm, 18px);
|
||||||
border-top-left-radius: 0;
|
border-top-left-radius: 0;
|
||||||
background:
|
background:
|
||||||
linear-gradient(180deg, rgba(255, 244, 248, 0.95), rgba(255, 255, 255, 0.95)),
|
linear-gradient(180deg, rgba(255, 244, 248, 0.95), rgba(255, 255, 255, 0.95)),
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
.hint {
|
.hint {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: #3c3b3b;
|
color: #3c3b3b;
|
||||||
font-size: 14px;
|
font-size: var(--responsive-body, 14px);
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
background: linear-gradient(90deg, #ff67e0, #ff52a2);
|
background: linear-gradient(90deg, #ff67e0, #ff52a2);
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 14px;
|
font-size: var(--responsive-body, 14px);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,15 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
z-index: 60;
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog {
|
.dialog {
|
||||||
width: calc(100% - 40px);
|
width: 100%;
|
||||||
max-width: var(--pwa-install-dialog-max-width, 360px);
|
max-width: var(--pwa-install-dialog-max-width, 360px);
|
||||||
background: var(--color-page-background, #ffffff);
|
background: var(--color-page-background, #ffffff);
|
||||||
border-radius: 40px;
|
border-radius: 40px;
|
||||||
@@ -34,7 +39,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
font-size: var(--font-size-22, 22px);
|
font-size: var(--responsive-page-title, var(--font-size-22, 22px));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 0 0 var(--spacing-sm, 8px);
|
margin: 0 0 var(--spacing-sm, 8px);
|
||||||
color: var(--color-text-foreground, #171717);
|
color: var(--color-text-foreground, #171717);
|
||||||
@@ -42,7 +47,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
color: #393939;
|
color: #393939;
|
||||||
margin: 0 36px var(--spacing-xxl, 24px);
|
margin: 0 36px var(--spacing-xxl, 24px);
|
||||||
@@ -56,10 +61,10 @@
|
|||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
height: var(--pwa-button-height, 44px);
|
min-height: var(--pwa-button-height, 44px);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: var(--radius-bottom-sheet, 28px);
|
border-radius: var(--radius-bottom-sheet, 28px);
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: var(--color-page-background, #ffffff);
|
color: var(--color-page-background, #ffffff);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
align-self: stretch;
|
align-self: stretch;
|
||||||
padding: var(--spacing-3, 12px) var(--spacing-4, 16px);
|
padding: var(--spacing-3, 12px) var(--spacing-4, 16px);
|
||||||
border-radius: var(--radius-xxl, 24px);
|
border-radius: var(--radius-xxl, 24px);
|
||||||
font-size: var(--font-size-body-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-body-lg, 16px));
|
||||||
line-height: 1.45;
|
line-height: 1.45;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
.bubble {
|
.bubble {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
gap: 10px;
|
gap: var(--spacing-sm, 10px);
|
||||||
width: min(280px, 100%);
|
width: min(72vw, 280px);
|
||||||
padding: 12px 14px;
|
padding: var(--spacing-md, 12px) clamp(12px, 2.593vw, 14px);
|
||||||
border-radius: 20px;
|
border-radius: var(--responsive-card-radius-sm, 20px);
|
||||||
box-shadow: var(--shadow-input-box, 0 1px 2px rgba(0, 0, 0, 0.1));
|
box-shadow: var(--shadow-input-box, 0 1px 2px rgba(0, 0, 0, 0.1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,20 +123,20 @@
|
|||||||
.hint {
|
.hint {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: #3c3b3b;
|
color: #3c3b3b;
|
||||||
font-size: 14px;
|
font-size: var(--responsive-body, 14px);
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.unlockButton {
|
.unlockButton {
|
||||||
align-self: flex-start;
|
align-self: flex-start;
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
padding: 9px 14px;
|
padding: 9px clamp(12px, 2.593vw, 14px);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
background: linear-gradient(90deg, #ff67e0, #ff52a2);
|
background: linear-gradient(90deg, #ff67e0, #ff52a2);
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 14px;
|
font-size: var(--responsive-body, 14px);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,17 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 20px;
|
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));
|
||||||
background: rgba(0, 0, 0, 0.5);
|
background: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog {
|
.dialog {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 380px;
|
max-width: var(--dialog-max-width, 380px);
|
||||||
padding: 24px 18px 18px;
|
padding: 24px 18px 18px;
|
||||||
border-radius: 36px;
|
border-radius: 36px;
|
||||||
background: var(--color-page-background, #ffffff);
|
background: var(--color-page-background, #ffffff);
|
||||||
@@ -21,7 +25,7 @@
|
|||||||
.title {
|
.title {
|
||||||
margin: 0 0 8px;
|
margin: 0 0 8px;
|
||||||
color: var(--color-text-foreground, #171717);
|
color: var(--color-text-foreground, #171717);
|
||||||
font-size: var(--font-size-22, 22px);
|
font-size: var(--responsive-page-title, var(--font-size-22, 22px));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -30,7 +34,7 @@
|
|||||||
.content {
|
.content {
|
||||||
margin: 0 12px 20px;
|
margin: 0 12px 20px;
|
||||||
color: #393939;
|
color: #393939;
|
||||||
font-size: var(--font-size-md, 14px);
|
font-size: var(--responsive-body, var(--font-size-md, 14px));
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
@@ -48,7 +52,7 @@
|
|||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 28px;
|
border-radius: 28px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: var(--font-size-lg, 16px);
|
font-size: var(--responsive-body, var(--font-size-lg, 16px));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +85,7 @@
|
|||||||
|
|
||||||
.optionDescription {
|
.optionDescription {
|
||||||
color: #3c3b3b;
|
color: #3c3b3b;
|
||||||
font-size: 13px;
|
font-size: var(--responsive-caption, 13px);
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
line-height: 1.25;
|
line-height: 1.25;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,22 @@
|
|||||||
.emptyScreen {
|
.emptyScreen {
|
||||||
display: flex;
|
display: flex;
|
||||||
min-height: 100dvh;
|
min-height: var(--app-viewport-height, 100dvh);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: 18px;
|
gap: var(--page-section-gap, 18px);
|
||||||
padding: 24px;
|
padding:
|
||||||
|
calc(var(--page-padding-y, 24px) + var(--app-safe-top, 0px))
|
||||||
|
calc(var(--page-padding-x, 24px) + var(--app-safe-right, 0px))
|
||||||
|
calc(var(--page-padding-y, 24px) + var(--app-safe-bottom, 0px))
|
||||||
|
calc(var(--page-padding-x, 24px) + var(--app-safe-left, 0px));
|
||||||
background: #0d0b14;
|
background: #0d0b14;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.backButton {
|
.backButton {
|
||||||
min-height: 44px;
|
min-height: var(--responsive-control-height, 44px);
|
||||||
padding: 0 18px;
|
padding: 0 18px;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
@@ -20,13 +24,13 @@
|
|||||||
color: #191316;
|
color: #191316;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font: inherit;
|
font: inherit;
|
||||||
font-size: 15px;
|
font-size: var(--responsive-body, 15px);
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
}
|
}
|
||||||
|
|
||||||
.emptyText {
|
.emptyText {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: rgba(255, 255, 255, 0.78);
|
color: rgba(255, 255, 255, 0.78);
|
||||||
font-size: 16px;
|
font-size: var(--responsive-body, 16px);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.screen {
|
.screen {
|
||||||
min-height: 100dvh;
|
min-height: var(--app-viewport-height, 100dvh);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding:
|
padding:
|
||||||
calc(var(--page-padding-y, 18px) + var(--app-safe-top, 0px))
|
calc(var(--page-padding-y, 18px) + var(--app-safe-top, 0px))
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 14px;
|
gap: 14px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
min-height: 100dvh;
|
min-height: var(--app-viewport-height, 100dvh);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding:
|
padding:
|
||||||
var(--app-safe-top, 0px)
|
var(--app-safe-top, 0px)
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
* 原名: pic_bg_home.png (snake_case)
|
* 原名: pic_bg_home.png (snake_case)
|
||||||
*
|
*
|
||||||
* sizes 属性说明:
|
* sizes 属性说明:
|
||||||
* 图片在 MobileShell 内(max-width: 500px)。
|
* 图片在 MobileShell 内(max-width: 540px)。
|
||||||
* - 视口 ≤ 500px:MobileShell = 100vw,图片 = 100vw
|
* - 视口 ≤ 540px:MobileShell = 100vw,图片 = 100vw
|
||||||
* - 视口 > 500px:MobileShell = 500px,图片 = 500px
|
* - 视口 > 540px:MobileShell = 540px,图片 = 540px
|
||||||
*/
|
*/
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import styles from "./splash-background.module.css";
|
import styles from "./splash-background.module.css";
|
||||||
@@ -22,7 +22,7 @@ export function SplashBackground() {
|
|||||||
alt=""
|
alt=""
|
||||||
fill
|
fill
|
||||||
priority
|
priority
|
||||||
sizes="(max-width: 500px) 100vw, 500px"
|
sizes="(max-width: 540px) 100vw, 540px"
|
||||||
className={styles.image}
|
className={styles.image}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,13 +3,13 @@
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: var(--spacing-26);
|
gap: clamp(var(--spacing-md, 12px), 4.815vw, var(--spacing-26, 26px));
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.skip {
|
.skip {
|
||||||
font-size: var(--font-size-xxl);
|
font-size: var(--responsive-section-title, var(--font-size-xxl));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@@ -25,15 +25,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.separator {
|
.separator {
|
||||||
width: var(--spacing-26);
|
width: clamp(var(--spacing-md, 12px), 4.815vw, var(--spacing-26, 26px));
|
||||||
height: 1px;
|
height: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.facebookButton {
|
.facebookButton {
|
||||||
height: 48px;
|
min-height: var(--responsive-control-height, 48px);
|
||||||
padding: 0 30px;
|
padding: 0 clamp(var(--spacing-lg, 16px), 5.556vw, 30px);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 24px;
|
border-radius: var(--radius-full, 999px);
|
||||||
/* 渐变色引用 tokens/colors.css 中定义的 token */
|
/* 渐变色引用 tokens/colors.css 中定义的 token */
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
to right,
|
to right,
|
||||||
@@ -57,22 +57,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.facebookLabel {
|
.facebookLabel {
|
||||||
font-size: var(--font-size-xxl);
|
font-size: var(--responsive-section-title, var(--font-size-xxl));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 360px) {
|
|
||||||
.wrapper {
|
|
||||||
gap: var(--spacing-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
.separator {
|
|
||||||
width: var(--spacing-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
.facebookButton {
|
|
||||||
padding: 0 var(--spacing-lg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
.title {
|
.title {
|
||||||
font-family: var(--font-athelas);
|
font-family: var(--font-athelas);
|
||||||
font-size: var(--font-size-title);
|
font-size: var(--responsive-page-title, var(--font-size-title));
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 100dvh;
|
min-height: var(--app-viewport-height, 100dvh);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +28,11 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: var(--spacing-26) var(--spacing-26) var(--spacing-md);
|
padding:
|
||||||
|
calc(var(--page-padding-y, 20px) + var(--app-safe-top, 0px))
|
||||||
|
calc(var(--page-padding-x, 26px) + var(--app-safe-right, 0px))
|
||||||
|
calc(var(--spacing-md, 12px) + var(--app-safe-bottom, 0px))
|
||||||
|
calc(var(--page-padding-x, 26px) + var(--app-safe-left, 0px));
|
||||||
}
|
}
|
||||||
|
|
||||||
.spacer {
|
.spacer {
|
||||||
@@ -36,12 +40,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.buttonArea {
|
.buttonArea {
|
||||||
margin-top: var(--spacing-26);
|
margin-top: var(--page-section-gap-lg, 26px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom {
|
.bottom {
|
||||||
margin: var(--spacing-xxxl) 0 0 0;
|
margin: var(--page-section-gap-lg, 32px) 0 0 0;
|
||||||
font-size: var(--font-size-md);
|
font-size: var(--responsive-body, var(--font-size-md));
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
color: rgba(255, 255, 255, 0.9);
|
color: rgba(255, 255, 255, 0.9);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
.shell {
|
.shell {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
min-height: 100dvh;
|
min-height: var(--app-viewport-height, 100dvh);
|
||||||
background:
|
background:
|
||||||
radial-gradient(circle at 8% 4%, rgba(255, 255, 255, 0.95) 0 90px, transparent 160px),
|
radial-gradient(circle at 8% 4%, rgba(255, 255, 255, 0.95) 0 90px, transparent 160px),
|
||||||
linear-gradient(180deg, #fff9fb 0%, #fcf3f4 52%, #fffefe 100%);
|
linear-gradient(180deg, #fff9fb 0%, #fcf3f4 52%, #fffefe 100%);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
--auth-legal-checkbox-inner-size: 10px;
|
--auth-legal-checkbox-inner-size: 10px;
|
||||||
|
|
||||||
/* 悬浮返回按钮(40×40 圆形) */
|
/* 悬浮返回按钮(40×40 圆形) */
|
||||||
--back-button-size: 40px;
|
--back-button-size: var(--responsive-icon-button-size, 40px);
|
||||||
|
|
||||||
/* 底部弹层圆角(28px = Dart AppRadius.radius28) */
|
/* 底部弹层圆角(28px = Dart AppRadius.radius28) */
|
||||||
--auth-bottom-sheet-radius: 28px;
|
--auth-bottom-sheet-radius: 28px;
|
||||||
|
|||||||
@@ -40,6 +40,13 @@
|
|||||||
--responsive-control-height: clamp(44px, 8.889vw, 48px);
|
--responsive-control-height: clamp(44px, 8.889vw, 48px);
|
||||||
--responsive-icon-button-size: clamp(38px, 8.148vw, 44px);
|
--responsive-icon-button-size: clamp(38px, 8.148vw, 44px);
|
||||||
|
|
||||||
|
/* Chat 专用响应式尺寸 */
|
||||||
|
--chat-inline-padding: clamp(14px, 3.704vw, 20px);
|
||||||
|
--chat-bubble-max-width: min(75%, 280px);
|
||||||
|
--chat-media-size: min(64vw, 240px);
|
||||||
|
--chat-avatar-size: clamp(38px, 7.963vw, 43px);
|
||||||
|
--chat-send-button-size: clamp(40px, 8.148vw, 44px);
|
||||||
|
|
||||||
/* Sidebar 专用响应式尺寸 */
|
/* Sidebar 专用响应式尺寸 */
|
||||||
--sidebar-user-padding-y: clamp(18px, 3.704vw, 20px);
|
--sidebar-user-padding-y: clamp(18px, 3.704vw, 20px);
|
||||||
--sidebar-card-gap-y: clamp(6px, 1.481vw, 8px);
|
--sidebar-card-gap-y: clamp(6px, 1.481vw, 8px);
|
||||||
|
|||||||
Reference in New Issue
Block a user