feat(mobile): 重做员工端首页、问答和训练页视觉
统一员工端 tabBar、共享卡片和三大核心页面的视觉基础,同时保持现有移动端业务流程不变。补充 H5 输入兼容、页面结构和训练回滚行为的回归测试。
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
<template>
|
||||
<view class="page today-page">
|
||||
<view class="page today-page employee-page-shell">
|
||||
<view v-if="message" class="status-message">{{ message }}</view>
|
||||
|
||||
<view class="mentor-hero">
|
||||
<image class="hero-scene" src="/static/mentor.png" mode="aspectFill" />
|
||||
<view class="hero-scene-scrim" />
|
||||
<view class="hero-copy">
|
||||
<text class="employee-kicker hero-kicker">数字师傅 · 今日带练</text>
|
||||
<text class="hero-role">{{ positionProfile.value }}</text>
|
||||
<text class="hero-title">{{ positionProfile.heroTitle }}</text>
|
||||
<text class="hero-sub">有问题,随时问老师傅</text>
|
||||
@@ -16,8 +19,13 @@
|
||||
|
||||
<view class="voice-panel">
|
||||
<button class="voice-primary" @click="goSop">
|
||||
<text class="voice-mark">问</text>
|
||||
<text>问老师傅</text>
|
||||
<view class="voice-emblem">
|
||||
<text class="voice-mark">问</text>
|
||||
</view>
|
||||
<view class="voice-copy">
|
||||
<text>问老师傅</text>
|
||||
<text>语音或文字都可以</text>
|
||||
</view>
|
||||
</button>
|
||||
<button class="voice-secondary" @click="goSop">
|
||||
<text class="keyboard-mark">键</text>
|
||||
@@ -33,7 +41,7 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="section-card login-section" v-if="!loggedIn">
|
||||
<view class="section-card employee-card login-section" v-if="!loggedIn">
|
||||
<view>
|
||||
<text class="login-title">登录后查看今日安排</text>
|
||||
<text class="login-desc">训练任务、复习提醒和成长数据会按你的手机号展示。</text>
|
||||
@@ -41,11 +49,14 @@
|
||||
<button class="primary-button login-button" @click="goLogin">去登录</button>
|
||||
</view>
|
||||
|
||||
<view class="section-card" v-else-if="hasSchedule">
|
||||
<view class="section-card employee-card" v-else-if="hasSchedule">
|
||||
<view class="section-head">
|
||||
<view class="section-title">
|
||||
<text class="section-icon">日</text>
|
||||
<text>今日安排</text>
|
||||
<view class="section-heading-block">
|
||||
<view class="section-title">
|
||||
<text class="section-icon">日</text>
|
||||
<text>今日安排</text>
|
||||
</view>
|
||||
<text class="section-subtitle">先完成训练,再补一轮复习,今天的学习节奏就完整了。</text>
|
||||
</view>
|
||||
<button class="section-link" @click="openTool('训练')">查看全部</button>
|
||||
</view>
|
||||
@@ -69,11 +80,14 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view v-if="loggedIn" class="section-card">
|
||||
<view v-if="loggedIn" class="section-card employee-card">
|
||||
<view class="section-head">
|
||||
<view class="section-title">
|
||||
<text class="section-icon">图</text>
|
||||
<text>{{ loggedIn ? '我的地图' : '常用入口' }}</text>
|
||||
<view class="section-heading-block">
|
||||
<view class="section-title">
|
||||
<text class="section-icon">图</text>
|
||||
<text>{{ loggedIn ? '我的地图' : '常用入口' }}</text>
|
||||
</view>
|
||||
<text class="section-subtitle">把今天最常用的问、练、学、报都放在手边。</text>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="mapTiles.length" class="map-grid">
|
||||
@@ -84,7 +98,7 @@
|
||||
:class="tile.tone"
|
||||
@click="openTool(tile.title)"
|
||||
>
|
||||
<image class="map-icon" :src="tile.icon" mode="aspectFit" />
|
||||
<text class="map-symbol">{{ tile.shortTitle }}</text>
|
||||
<view class="map-copy">
|
||||
<text class="map-title">{{ tile.title }}</text>
|
||||
<text class="map-desc">{{ tile.desc }}</text>
|
||||
@@ -123,13 +137,6 @@ const primaryTipQuestion = computed(() => quickQuestions.value[0] || '岗位SOP'
|
||||
const pendingSopQueryKey = 'aihr_sop_pending_query';
|
||||
const pendingAssignmentKey = 'aihr_pending_assignment_id';
|
||||
|
||||
const iconFor = (title: string) => {
|
||||
if (title.includes('SOP') || title.includes('查')) return '/static/map-icons/ask.png';
|
||||
if (title.includes('练')) return '/static/map-icons/practice.png';
|
||||
if (title.includes('学') || title.includes('案例')) return '/static/map-icons/learn.png';
|
||||
return '/static/map-icons/report.png';
|
||||
};
|
||||
|
||||
const toneFor = (title: string) => {
|
||||
if (title.includes('SOP') || title.includes('查')) return 'ask';
|
||||
if (title.includes('练')) return 'practice';
|
||||
@@ -137,14 +144,28 @@ const toneFor = (title: string) => {
|
||||
return 'report';
|
||||
};
|
||||
|
||||
const shortTitleFor = (tone: string) => {
|
||||
if (tone === 'ask') return '问';
|
||||
if (tone === 'practice') return '练';
|
||||
if (tone === 'learn') return '学';
|
||||
return '报';
|
||||
};
|
||||
|
||||
const toolOrder = ['ask', 'practice', 'learn', 'report'];
|
||||
|
||||
const mapTiles = computed(() => {
|
||||
if (!home.value?.tools?.length) return [];
|
||||
return home.value.tools.map((item) => ({
|
||||
title: item.title,
|
||||
desc: item.desc.replace(/\n/g, ' / '),
|
||||
tone: toneFor(item.title),
|
||||
icon: iconFor(item.title)
|
||||
}));
|
||||
return home.value.tools
|
||||
.map((item) => {
|
||||
const tone = toneFor(item.title);
|
||||
return {
|
||||
title: item.title,
|
||||
shortTitle: shortTitleFor(tone),
|
||||
desc: item.desc.replace(/\n/g, ' / '),
|
||||
tone
|
||||
};
|
||||
})
|
||||
.sort((left, right) => toolOrder.indexOf(left.tone) - toolOrder.indexOf(right.tone));
|
||||
});
|
||||
|
||||
const primaryAssignment = computed(() =>
|
||||
@@ -261,169 +282,261 @@ onShow(() => {
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* Homepage composition follows the approved employee-home visual reference. */
|
||||
.today-page {
|
||||
min-height: 100vh;
|
||||
padding: 0 14px 86px;
|
||||
background: #f4f7fb;
|
||||
padding: 0 18px 96px;
|
||||
background: linear-gradient(180deg, var(--employee-bg-soft) 0%, var(--employee-bg) 100%);
|
||||
}
|
||||
|
||||
.mentor-hero {
|
||||
position: relative;
|
||||
height: 224px;
|
||||
margin: 0 -14px;
|
||||
height: 244px;
|
||||
margin: 0 -18px;
|
||||
overflow: hidden;
|
||||
background:
|
||||
linear-gradient(180deg, rgba(237, 247, 255, 0.72), rgba(244, 247, 251, 0.98)),
|
||||
linear-gradient(135deg, #d9ecff 0%, #f7fbff 45%, #dfeff2 100%);
|
||||
border: 0;
|
||||
background: #f0f1ee;
|
||||
}
|
||||
|
||||
.mentor-hero::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.hero-scene,
|
||||
.hero-scene-scrim {
|
||||
position: absolute;
|
||||
right: -36px;
|
||||
bottom: 12px;
|
||||
width: 190px;
|
||||
height: 96px;
|
||||
border-radius: 30px;
|
||||
background: rgba(255, 255, 255, 0.46);
|
||||
content: '';
|
||||
inset: -18px;
|
||||
width: calc(100% + 36px);
|
||||
height: calc(100% + 36px);
|
||||
}
|
||||
|
||||
.hero-scene {
|
||||
object-fit: cover;
|
||||
opacity: 0.18;
|
||||
filter: blur(13px) saturate(0.34) brightness(1.28);
|
||||
transform: scale(1.12);
|
||||
}
|
||||
|
||||
.hero-scene-scrim {
|
||||
background: rgba(247, 247, 248, 0.76);
|
||||
}
|
||||
|
||||
.hero-copy {
|
||||
position: absolute;
|
||||
left: 22px;
|
||||
left: 28px;
|
||||
top: 34px;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.hero-kicker {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.hero-role,
|
||||
.hero-title {
|
||||
color: #11235a;
|
||||
font-size: 22px;
|
||||
font-weight: 900;
|
||||
line-height: 1.08;
|
||||
color: #25282d;
|
||||
font-size: 29px;
|
||||
line-height: 1.04;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.hero-sub {
|
||||
margin-top: 8px;
|
||||
color: #1e3a8a;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
margin-top: 12px;
|
||||
color: #6a6d72;
|
||||
font-size: 15px;
|
||||
line-height: 1.35;
|
||||
}
|
||||
|
||||
.mentor-image {
|
||||
position: absolute;
|
||||
right: 88px;
|
||||
bottom: 14px;
|
||||
right: 105px;
|
||||
bottom: 0;
|
||||
z-index: 1;
|
||||
width: 104px;
|
||||
height: 138px;
|
||||
border-radius: 24px;
|
||||
box-shadow: 0 14px 36px rgba(15, 23, 42, 0.14);
|
||||
width: 132px;
|
||||
height: 176px;
|
||||
border-radius: 0;
|
||||
filter: drop-shadow(0 8px 8px rgba(37, 40, 45, 0.16));
|
||||
-webkit-clip-path: ellipse(44% 56% at 50% 48%);
|
||||
clip-path: ellipse(44% 56% at 50% 48%);
|
||||
-webkit-mask-image: radial-gradient(ellipse 68% 61% at 50% 42%, #000 58%, transparent 100%);
|
||||
mask-image: radial-gradient(ellipse 68% 61% at 50% 42%, #000 58%, transparent 100%);
|
||||
}
|
||||
|
||||
.mentor-bubble {
|
||||
position: absolute;
|
||||
right: 16px;
|
||||
top: 80px;
|
||||
right: 18px;
|
||||
top: 96px;
|
||||
z-index: 3;
|
||||
width: 128px;
|
||||
padding: 12px 14px;
|
||||
border-radius: 18px;
|
||||
background: rgba(255, 255, 255, 0.92);
|
||||
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.12);
|
||||
width: 142px;
|
||||
padding: 14px 16px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.9);
|
||||
border-radius: 22px;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
box-shadow: 0 10px 24px rgba(37, 40, 45, 0.14);
|
||||
}
|
||||
|
||||
.mentor-bubble text {
|
||||
color: #111827;
|
||||
color: #1c2940;
|
||||
font-size: 17px;
|
||||
font-weight: 700;
|
||||
line-height: 1.45;
|
||||
font-weight: 800;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.voice-panel {
|
||||
position: relative;
|
||||
z-index: 4;
|
||||
display: grid;
|
||||
margin: -34px 8px 0;
|
||||
padding: 16px;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 14px;
|
||||
border-radius: 22px;
|
||||
min-height: 106px;
|
||||
margin: -42px 10px 0;
|
||||
padding: 15px;
|
||||
grid-template-columns: minmax(0, 1fr) 112px;
|
||||
gap: 0;
|
||||
border: 1px solid rgba(47, 74, 117, 0.08);
|
||||
border-radius: 25px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 14px 38px rgba(15, 23, 42, 0.12);
|
||||
box-shadow: 0 14px 36px rgba(47, 107, 255, 0.12);
|
||||
}
|
||||
|
||||
.voice-primary,
|
||||
.voice-secondary {
|
||||
display: flex;
|
||||
min-height: 64px;
|
||||
min-height: 76px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
border-radius: 18px;
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
color: #1d4ed8;
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
color: #e70014;
|
||||
}
|
||||
|
||||
.voice-secondary {
|
||||
color: #4b5563;
|
||||
background: #f1f5f9;
|
||||
.voice-primary {
|
||||
justify-content: flex-start;
|
||||
gap: 14px;
|
||||
padding: 0 16px 0 4px;
|
||||
border-right: 1px solid #e7e7e9;
|
||||
}
|
||||
|
||||
.voice-primary text:last-child,
|
||||
.voice-secondary text:last-child {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.voice-mark,
|
||||
.keyboard-mark {
|
||||
.voice-emblem {
|
||||
display: flex;
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
flex: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 50%;
|
||||
background: linear-gradient(135deg, #2563eb, #1d9bf0);
|
||||
background: #e70014;
|
||||
box-shadow: 0 0 0 9px #fff0f1, 0 7px 14px rgba(231, 0, 20, 0.22);
|
||||
}
|
||||
|
||||
.voice-mark {
|
||||
width: auto;
|
||||
height: auto;
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
.voice-copy {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.voice-copy text:first-child {
|
||||
font-size: 21px;
|
||||
font-weight: 900;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.voice-copy text:last-child {
|
||||
color: #777a80;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.voice-secondary {
|
||||
gap: 7px;
|
||||
padding: 0 8px;
|
||||
border-radius: 24px;
|
||||
background: #f1f1f2;
|
||||
color: #45474d;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.keyboard-mark {
|
||||
background: #e5e7eb;
|
||||
color: #4b5563;
|
||||
display: flex;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
flex: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 9px;
|
||||
background: #dedee1;
|
||||
color: #45474d;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.mentor-chips {
|
||||
margin-top: 14px;
|
||||
margin: 22px 0 0;
|
||||
}
|
||||
|
||||
.mentor-chips .chip-row {
|
||||
justify-content: space-between;
|
||||
gap: 8px;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.mentor-chips .chip {
|
||||
min-height: 42px;
|
||||
flex: 1;
|
||||
border: 1px solid rgba(203, 213, 225, 0.7);
|
||||
position: relative;
|
||||
display: flex;
|
||||
min-height: 48px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 5px;
|
||||
padding: 0 6px;
|
||||
border: 0;
|
||||
border-radius: 24px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 8px 20px rgba(15, 23, 42, 0.06);
|
||||
color: #1f2937;
|
||||
font-size: 15px;
|
||||
box-shadow: 0 7px 18px rgba(37, 40, 45, 0.08);
|
||||
color: #34373c;
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.mentor-chips .chip::before {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
flex: none;
|
||||
border-radius: 50%;
|
||||
background: #e70014;
|
||||
content: '';
|
||||
}
|
||||
|
||||
.mentor-chips .chip::after {
|
||||
content: none;
|
||||
}
|
||||
|
||||
.mentor-chips .chip:nth-child(2)::before {
|
||||
background: #d98200;
|
||||
}
|
||||
|
||||
.mentor-chips .chip:nth-child(3)::before {
|
||||
background: #168243;
|
||||
}
|
||||
|
||||
.section-card {
|
||||
margin-top: 18px;
|
||||
margin-top: 24px;
|
||||
padding: 18px;
|
||||
border-radius: 18px;
|
||||
border: 1px solid rgba(47, 74, 117, 0.08);
|
||||
border-radius: var(--employee-card-radius);
|
||||
background: #ffffff;
|
||||
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.07);
|
||||
box-shadow: var(--employee-card-shadow);
|
||||
}
|
||||
|
||||
.login-section {
|
||||
@@ -431,6 +544,7 @@ onShow(() => {
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
border-left: 4px solid #e70014;
|
||||
}
|
||||
|
||||
.login-title,
|
||||
@@ -439,74 +553,84 @@ onShow(() => {
|
||||
}
|
||||
|
||||
.login-title {
|
||||
color: #111827;
|
||||
font-size: 18px;
|
||||
font-weight: 900;
|
||||
font-size: 19px;
|
||||
}
|
||||
|
||||
.login-desc {
|
||||
margin-top: 6px;
|
||||
color: #64748b;
|
||||
font-size: 13px;
|
||||
line-height: 1.4;
|
||||
max-width: 190px;
|
||||
font-size: 14px;
|
||||
line-height: 1.48;
|
||||
}
|
||||
|
||||
.today-page .primary-button,
|
||||
.login-button {
|
||||
flex: 0 0 84px;
|
||||
min-width: 84px;
|
||||
white-space: nowrap;
|
||||
width: 96px;
|
||||
min-width: 96px;
|
||||
min-height: 50px;
|
||||
flex: 0 0 96px;
|
||||
border-radius: 14px;
|
||||
background: #e70014;
|
||||
box-shadow: 0 8px 16px rgba(231, 0, 20, 0.2);
|
||||
}
|
||||
|
||||
.section-head,
|
||||
.section-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
color: #25282d;
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.section-head {
|
||||
justify-content: space-between;
|
||||
.section-heading-block {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
gap: 9px;
|
||||
color: #111827;
|
||||
font-size: 21px;
|
||||
font-weight: 900;
|
||||
.section-subtitle {
|
||||
color: #707682;
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.section-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border-radius: 9px;
|
||||
background: #fff0f1;
|
||||
color: #e70014;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.section-head {
|
||||
display: flex;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 8px;
|
||||
background: #dbeafe;
|
||||
color: #2563eb;
|
||||
font-size: 13px;
|
||||
font-weight: 900;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.section-link {
|
||||
color: #64748b;
|
||||
font-size: 14px;
|
||||
flex: none;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.schedule-list {
|
||||
display: flex;
|
||||
margin-top: 16px;
|
||||
margin-top: 18px;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.schedule-row {
|
||||
display: flex;
|
||||
min-height: 82px;
|
||||
min-height: 94px;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding: 12px;
|
||||
border-radius: 15px;
|
||||
background: #f8fafc;
|
||||
padding: 14px;
|
||||
border: 0;
|
||||
border-radius: 18px;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
|
||||
.step-dot {
|
||||
@@ -523,11 +647,11 @@ onShow(() => {
|
||||
}
|
||||
|
||||
.step-dot.blue {
|
||||
background: #2563eb;
|
||||
background: #e70014;
|
||||
}
|
||||
|
||||
.step-dot.orange {
|
||||
background: #f97316;
|
||||
background: #d98200;
|
||||
}
|
||||
|
||||
.schedule-copy {
|
||||
@@ -539,26 +663,22 @@ onShow(() => {
|
||||
}
|
||||
|
||||
.schedule-title {
|
||||
color: #111827;
|
||||
font-size: 16px;
|
||||
font-weight: 900;
|
||||
line-height: 1.25;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.schedule-desc {
|
||||
color: #64748b;
|
||||
font-size: 13px;
|
||||
line-height: 1.35;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.schedule-action {
|
||||
display: flex;
|
||||
width: 68px;
|
||||
min-height: 42px;
|
||||
width: 76px;
|
||||
min-height: 48px;
|
||||
flex: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 7px 14px rgba(231, 0, 20, 0.2);
|
||||
color: #ffffff;
|
||||
font-size: 16px;
|
||||
font-weight: 900;
|
||||
@@ -566,117 +686,165 @@ onShow(() => {
|
||||
}
|
||||
|
||||
.blue-action {
|
||||
background: #2563eb;
|
||||
background: #e70014;
|
||||
}
|
||||
|
||||
.orange-action {
|
||||
background: #f97316;
|
||||
background: #d98200;
|
||||
box-shadow: 0 7px 14px rgba(217, 130, 0, 0.18);
|
||||
}
|
||||
|
||||
.map-grid {
|
||||
display: grid;
|
||||
margin-top: 16px;
|
||||
margin-top: 18px;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 10px;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.map-tile {
|
||||
position: relative;
|
||||
display: flex;
|
||||
min-height: 108px;
|
||||
display: grid;
|
||||
min-height: 128px;
|
||||
grid-template-columns: 42px minmax(0, 1fr) 14px;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
gap: 9px;
|
||||
padding: 16px 12px;
|
||||
border-radius: 17px;
|
||||
border: 0;
|
||||
border-radius: 19px;
|
||||
color: #ffffff;
|
||||
overflow: hidden;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.map-tile.ask {
|
||||
background: linear-gradient(135deg, #1d4ed8, #2682ff);
|
||||
background: linear-gradient(135deg, #c90012, #f02135);
|
||||
}
|
||||
|
||||
.map-tile.practice {
|
||||
background: linear-gradient(135deg, #16a34a, #22c55e);
|
||||
background: linear-gradient(135deg, #0d7137, #239954);
|
||||
}
|
||||
|
||||
.map-tile.learn {
|
||||
background: linear-gradient(135deg, #f59e0b, #fb923c);
|
||||
background: linear-gradient(135deg, #ba6d00, #e89410);
|
||||
}
|
||||
|
||||
.map-tile.report {
|
||||
background: linear-gradient(135deg, #ef4444, #f97316);
|
||||
background: linear-gradient(135deg, #5a5d63, #85888d);
|
||||
}
|
||||
|
||||
.map-icon {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
flex: none;
|
||||
filter: brightness(0) invert(1);
|
||||
.map-symbol {
|
||||
display: flex;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 2px solid rgba(255, 255, 255, 0.76);
|
||||
border-radius: 14px;
|
||||
color: #ffffff;
|
||||
font-size: 22px;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.map-title {
|
||||
color: #ffffff;
|
||||
font-size: 26px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.map-copy {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.map-title {
|
||||
color: #ffffff;
|
||||
font-size: 24px;
|
||||
font-weight: 900;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.map-desc {
|
||||
margin-top: 6px;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
margin-top: 7px;
|
||||
color: rgba(255, 255, 255, 0.92);
|
||||
font-size: 13px;
|
||||
line-height: 1.35;
|
||||
line-height: 1.28;
|
||||
}
|
||||
|
||||
.map-arrow {
|
||||
color: #ffffff;
|
||||
font-size: 28px;
|
||||
font-weight: 500;
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
.tip-card {
|
||||
display: flex;
|
||||
margin-top: 18px;
|
||||
min-height: 58px;
|
||||
margin-top: 22px;
|
||||
min-height: 64px;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 0 14px;
|
||||
border-radius: 16px;
|
||||
background: #ffffff;
|
||||
color: #475569;
|
||||
box-shadow: 0 8px 22px rgba(15, 23, 42, 0.06);
|
||||
padding: 0 16px;
|
||||
border: 1px solid rgba(255, 179, 64, 0.18);
|
||||
border-radius: 20px;
|
||||
background: #fff7eb;
|
||||
color: #64666b;
|
||||
box-shadow: 0 10px 24px rgba(255, 155, 61, 0.08);
|
||||
}
|
||||
|
||||
.tip-mark {
|
||||
display: flex;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
flex: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 50%;
|
||||
background: #fef3c7;
|
||||
color: #d97706;
|
||||
font-size: 13px;
|
||||
font-weight: 900;
|
||||
border-radius: 10px;
|
||||
background: #fff0c4;
|
||||
color: #bf7000;
|
||||
}
|
||||
|
||||
.tip-card text:nth-child(2) {
|
||||
flex: 1;
|
||||
font-size: 14px;
|
||||
line-height: 1.45;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.tip-arrow {
|
||||
color: #94a3b8;
|
||||
color: #85878c;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
@media (max-width: 350px) {
|
||||
.hero-role,
|
||||
.hero-title {
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
.mentor-image {
|
||||
right: 63px;
|
||||
width: 122px;
|
||||
height: 164px;
|
||||
}
|
||||
|
||||
.mentor-bubble {
|
||||
right: 12px;
|
||||
width: 128px;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.voice-panel {
|
||||
grid-template-columns: minmax(0, 1fr) 98px;
|
||||
margin-right: 4px;
|
||||
margin-left: 4px;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.voice-primary {
|
||||
gap: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.voice-emblem {
|
||||
width: 52px;
|
||||
height: 52px;
|
||||
}
|
||||
|
||||
.voice-copy text:first-child {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.mentor-chips .chip {
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user