diff --git a/apps/taro/src/components/StudentLegacyShell.css b/apps/taro/src/components/StudentLegacyShell.css
index 37b4fbb1..85673d9b 100644
--- a/apps/taro/src/components/StudentLegacyShell.css
+++ b/apps/taro/src/components/StudentLegacyShell.css
@@ -74,31 +74,36 @@
@media (min-width: 900px) {
.student-legacy-layout {
display: grid;
- grid-template-columns: 260px minmax(0, 1fr);
- gap: 28px;
+ grid-template-columns: 256px minmax(0, 1fr);
+ gap: 24px;
min-height: 100vh;
- padding: 24px;
+ padding: 16px 24px 16px 16px;
+ background:
+ linear-gradient(to right, rgba(15, 23, 42, 0.03) 1px, transparent 1px),
+ linear-gradient(to bottom, rgba(15, 23, 42, 0.03) 1px, transparent 1px),
+ #f4f6f9;
+ background-size: 40px 40px;
}
.legacy-student-sidebar {
position: sticky;
- top: 24px;
+ top: 16px;
display: flex;
- height: calc(100vh - 48px);
+ height: calc(100vh - 32px);
flex-direction: column;
- padding: 22px;
- border: 1px solid rgba(226, 232, 240, 0.9);
- border-radius: 30px;
- background: rgba(255, 255, 255, 0.92);
- box-shadow: 0 16px 34px rgba(15, 23, 42, 0.08);
+ padding: 20px 16px;
+ border-right: 1px solid #e5e7eb;
+ background: rgba(255, 255, 255, 0.9);
+ box-shadow: none;
+ backdrop-filter: blur(18px);
}
.legacy-brand-block {
display: flex;
align-items: center;
- gap: 14px;
+ gap: 12px;
min-width: 0;
- padding: 6px 4px 24px;
+ padding: 4px 8px 28px;
}
.legacy-brand-icon {
@@ -108,7 +113,7 @@
flex: 0 0 48px;
width: 48px;
height: 48px;
- border-radius: 16px;
+ border-radius: 14px;
background: var(--tiku-primary);
box-shadow: 0 10px 20px rgba(17, 82, 212, 0.26);
}
@@ -126,7 +131,7 @@
.legacy-brand-name {
display: block;
color: #111827;
- font-size: 19px;
+ font-size: 18px;
font-weight: 950;
line-height: 1.25;
overflow: hidden;
@@ -138,7 +143,7 @@
display: block;
margin-top: 3px;
color: var(--tiku-primary);
- font-size: 14px;
+ font-size: 12px;
font-weight: 850;
}
@@ -146,8 +151,8 @@
display: flex;
flex: 1;
flex-direction: column;
- gap: 8px;
- padding-top: 8px;
+ gap: 7px;
+ padding-top: 12px;
border-top: 1px solid #f1f5f9;
}
@@ -155,9 +160,9 @@
display: flex;
align-items: center;
gap: 12px;
- min-height: 52px;
+ min-height: 48px;
padding: 0 14px;
- border-radius: 16px;
+ border-radius: 12px;
color: #64748b;
}
@@ -173,10 +178,10 @@
justify-content: center;
width: 28px;
height: 28px;
- border-radius: 10px;
+ border-radius: 8px;
background: #f1f5f9;
color: inherit;
- font-size: 16px;
+ font-size: 15px;
font-weight: 900;
}
@@ -185,7 +190,7 @@
}
.legacy-nav-text {
- font-size: 18px;
+ font-size: 15px;
font-weight: 850;
}
@@ -193,7 +198,8 @@
display: flex;
align-items: center;
gap: 12px;
- padding-top: 18px;
+ margin-top: 10px;
+ padding: 16px 8px 12px;
border-top: 1px solid #f1f5f9;
}
@@ -222,7 +228,7 @@
.legacy-sidebar-user-name {
display: block;
color: #334155;
- font-size: 16px;
+ font-size: 14px;
font-weight: 850;
overflow: hidden;
text-overflow: ellipsis;
@@ -236,10 +242,24 @@
border-radius: 999px;
background: linear-gradient(90deg, #fef3c7, #fde68a);
color: #92400e;
- font-size: 13px;
+ font-size: 11px;
font-weight: 850;
}
+ .legacy-logout-button {
+ display: block;
+ width: 100%;
+ height: 44px;
+ margin-top: 8px;
+ border: 0;
+ border-radius: 12px;
+ background: #fef2f2;
+ color: #ef4444;
+ font-size: 14px;
+ font-weight: 900;
+ line-height: 44px;
+ }
+
.legacy-mobile-dock {
display: none;
}
diff --git a/apps/taro/src/components/StudentLegacyShell.tsx b/apps/taro/src/components/StudentLegacyShell.tsx
index fb7579f7..ea7d5578 100644
--- a/apps/taro/src/components/StudentLegacyShell.tsx
+++ b/apps/taro/src/components/StudentLegacyShell.tsx
@@ -1,17 +1,18 @@
import { PropsWithChildren } from 'react';
import Taro from '@tarojs/taro';
-import { Text, View } from '@tarojs/components';
+import { Button, Text, View } from '@tarojs/components';
import { getTenantContext } from '@/services/api';
+import { logout } from '@/services/auth';
import { currentPagePath } from '@/services/routeGuard';
import './StudentLegacyShell.css';
const navItems = [
- { name: '首页', path: '/pages/student/home/index' },
- { name: '背单词', path: '/pages/student/vocabulary/index' },
- { name: '知识手册', path: '/pages/student/handbook/index' },
- { name: '购买', path: '/pages/student/checkout/index' },
- { name: '分数线', path: '/pages/student/scoreline/index' },
- { name: '我的', path: '/pages/student/profile/index' },
+ { name: '学习工作台', path: '/pages/student/home/index', mark: '台' },
+ { name: '背单词', path: '/pages/student/vocabulary/index', mark: '词' },
+ { name: '知识手册', path: '/pages/student/handbook/index', mark: '册' },
+ { name: '购买', path: '/pages/student/checkout/index', mark: '购' },
+ { name: '分数线', path: '/pages/student/scoreline/index', mark: '线' },
+ { name: '个人中心', path: '/pages/student/profile/index', mark: '我' },
];
function isActivePath(currentPath: string, itemPath: string) {
@@ -24,6 +25,11 @@ export function StudentLegacyShell({ children }: PropsWithChildren) {
const currentPath = currentPagePath();
const brandName = tenant?.branding.brandName || tenant?.branding.shortName || '工学题库';
+ async function handleLogout() {
+ await logout();
+ Taro.reLaunch({ url: '/pages/student/login/index' });
+ }
+
return (
@@ -39,7 +45,7 @@ export function StudentLegacyShell({ children }: PropsWithChildren) {
{navItems.map(item => (
Taro.navigateTo({ url: item.path })}>
- {item.name.slice(0, 1)}
+ {item.mark}
{item.name}
))}
@@ -53,13 +59,14 @@ export function StudentLegacyShell({ children }: PropsWithChildren) {
SVIP
+
{children}
{navItems.slice(0, 5).map(item => (
Taro.navigateTo({ url: item.path })}>
- {item.name.slice(0, 1)}
- {item.name}
+ {item.mark}
+ {item.name === '学习工作台' ? '首页' : item.name}
))}
diff --git a/apps/taro/src/index.html b/apps/taro/src/index.html
index 7a343498..379a713a 100644
--- a/apps/taro/src/index.html
+++ b/apps/taro/src/index.html
@@ -16,12 +16,15 @@
var path = window.location.pathname || '';
var portal = '<%= process.env.TARO_APP_PORTAL || "student" %>';
var redirect = path + (window.location.search || '');
+ var isRootEntry = !path || path === '/' || /\/index\.html$/.test(path);
var publicStudentPaths = {
'/pages/student/login/index': true,
- '/pages/student/region/index': true,
- '/pages/student/catalog/index': true,
- '/pages/student/scoreline/index': true
+ '/pages/student/region/index': true
};
+ if (isRootEntry) {
+ window.location.replace('/pages/bootstrap/index?redirect=' + encodeURIComponent('/'));
+ return;
+ }
if (path.indexOf('/pages/student/') === 0 && !publicStudentPaths[path]) {
window.location.replace('/pages/bootstrap/index?redirect=' + encodeURIComponent(redirect));
return;
diff --git a/apps/taro/src/pages/student/catalog/index.tsx b/apps/taro/src/pages/student/catalog/index.tsx
index 3cb003ad..c22413e6 100644
--- a/apps/taro/src/pages/student/catalog/index.tsx
+++ b/apps/taro/src/pages/student/catalog/index.tsx
@@ -73,7 +73,7 @@ export default function StudentCatalogPage() {
}
return (
-
+
Question Bank
diff --git a/apps/taro/src/pages/student/checkout/index.tsx b/apps/taro/src/pages/student/checkout/index.tsx
index 020b9064..40405bb7 100644
--- a/apps/taro/src/pages/student/checkout/index.tsx
+++ b/apps/taro/src/pages/student/checkout/index.tsx
@@ -198,7 +198,7 @@ export default function StudentCheckoutPage() {
}
return (
-
+
Checkout
diff --git a/apps/taro/src/pages/student/home/index.css b/apps/taro/src/pages/student/home/index.css
index 08e13c9b..53b4238a 100644
--- a/apps/taro/src/pages/student/home/index.css
+++ b/apps/taro/src/pages/student/home/index.css
@@ -1,6 +1,11 @@
.student-page {
min-height: 100vh;
padding: 28px;
+ background:
+ linear-gradient(to right, rgba(15, 23, 42, 0.032) 1px, transparent 1px),
+ linear-gradient(to bottom, rgba(15, 23, 42, 0.032) 1px, transparent 1px),
+ #f4f6f9;
+ background-size: 40px 40px;
}
.topbar {
@@ -68,27 +73,27 @@
.ghost-button {
flex: 0 0 auto;
- width: 132px;
- height: 64px;
+ width: 104px;
+ height: 48px;
border: 1px solid var(--tiku-border);
- border-radius: 999px;
+ border-radius: 12px;
background: #fff;
color: var(--tiku-primary);
- font-size: 24px;
+ font-size: 18px;
font-weight: 800;
- line-height: 64px;
- box-shadow: 0 5px 18px rgba(15, 23, 42, 0.05);
+ line-height: 48px;
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.hero-band {
position: relative;
overflow: hidden;
min-height: 280px;
- margin-top: 34px;
+ margin-top: 24px;
padding: 36px 32px;
- border-radius: 30px;
+ border-radius: 24px;
background: linear-gradient(135deg, #1152d4 0%, #2563eb 56%, #60a5fa 100%);
- box-shadow: 0 18px 34px rgba(17, 82, 212, 0.2);
+ box-shadow: 0 14px 30px rgba(17, 82, 212, 0.2);
}
.hero-band::before,
@@ -182,10 +187,10 @@
.home-stat {
min-height: 126px;
padding: 20px 18px;
- border: 1px solid var(--tiku-border);
- border-radius: 24px;
+ border: 1px solid #f1f5f9;
+ border-radius: 16px;
background: #fff;
- box-shadow: var(--tiku-shadow);
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.home-stat-value {
@@ -209,13 +214,23 @@
}
.section-title {
- display: block;
+ display: flex;
+ align-items: center;
+ gap: 10px;
margin-bottom: 18px;
color: var(--tiku-text);
font-size: 30px;
font-weight: 900;
}
+.section-title::before {
+ content: "";
+ width: 8px;
+ height: 24px;
+ border-radius: 999px;
+ background: #1152d4;
+}
+
.entry-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -228,22 +243,35 @@
min-height: 176px;
padding: 24px;
border: 0;
- border-radius: 28px;
+ border-radius: 24px;
color: #fff;
- box-shadow: 0 12px 24px rgba(15, 23, 42, 0.12);
+ box-shadow: 0 8px 25px rgba(15, 23, 42, 0.1);
+ transition: transform 180ms ease, box-shadow 180ms ease;
}
.entry-tile::after {
content: "";
position: absolute;
- right: -26px;
- bottom: -38px;
- width: 118px;
- height: 118px;
+ right: -22px;
+ bottom: -22px;
+ width: 96px;
+ height: 96px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.14);
}
+.entry-tile::before {
+ content: "";
+ position: absolute;
+ right: 22px;
+ bottom: 24px;
+ width: 36px;
+ height: 36px;
+ border-right: 3px solid rgba(255, 255, 255, 0.46);
+ border-bottom: 3px solid rgba(255, 255, 255, 0.46);
+ transform: rotate(-45deg);
+}
+
.entry-label {
display: block;
position: relative;
@@ -295,10 +323,10 @@
gap: 16px;
min-height: 104px;
padding: 20px 22px;
- border: 1px solid var(--tiku-border);
- border-radius: 24px;
+ border: 1px solid #f1f5f9;
+ border-radius: 16px;
background: #fff;
- box-shadow: 0 5px 16px rgba(15, 23, 42, 0.04);
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.quick-name {
@@ -329,17 +357,17 @@
width: 100%;
max-width: 1180px;
margin: 0 auto;
- padding: 36px;
+ padding: 28px 32px 36px;
padding-bottom: 48px;
}
.hero-band {
- min-height: 320px;
- padding: 44px;
+ min-height: 240px;
+ padding: 40px;
}
.hero-title {
- font-size: 52px;
+ font-size: 44px;
}
.entry-grid {
diff --git a/apps/taro/src/pages/student/home/index.tsx b/apps/taro/src/pages/student/home/index.tsx
index 31e89129..5266a157 100644
--- a/apps/taro/src/pages/student/home/index.tsx
+++ b/apps/taro/src/pages/student/home/index.tsx
@@ -60,10 +60,10 @@ export default function StudentHomePage() {
今天也是元气满满的一天
继续你的备考之旅
- 刷题、错题、背单词、资料和会员权益已接入新 SaaS 后端。
+ 已经连续学习的每一天,都会让你离目标院校更近一步。
-
+
diff --git a/apps/taro/src/pages/student/practice/index.tsx b/apps/taro/src/pages/student/practice/index.tsx
index 81c72d26..de84ddee 100644
--- a/apps/taro/src/pages/student/practice/index.tsx
+++ b/apps/taro/src/pages/student/practice/index.tsx
@@ -476,7 +476,7 @@ export default function StudentPracticePage() {
}
return (
-
+
{session ? `${index + 1}/${questions.length || session.questionCount}` : 'Practice'}
diff --git a/apps/taro/src/pages/student/profile/index.tsx b/apps/taro/src/pages/student/profile/index.tsx
index 29e6185a..30e5ff48 100644
--- a/apps/taro/src/pages/student/profile/index.tsx
+++ b/apps/taro/src/pages/student/profile/index.tsx
@@ -342,7 +342,7 @@ export default function StudentProfilePage() {
const avatarPreset = profile?.avatarPreset || profile?.avatar?.preset || 'male';
return (
-
+
Profile
diff --git a/apps/taro/src/pages/student/reports/index.tsx b/apps/taro/src/pages/student/reports/index.tsx
index e5ac3ac0..179e084d 100644
--- a/apps/taro/src/pages/student/reports/index.tsx
+++ b/apps/taro/src/pages/student/reports/index.tsx
@@ -66,7 +66,7 @@ export default function StudentReportsPage() {
const current = report || reports[0] || null;
return (
-
+
Report
diff --git a/apps/taro/src/pages/student/review/index.tsx b/apps/taro/src/pages/student/review/index.tsx
index 20866a8b..df00ac15 100644
--- a/apps/taro/src/pages/student/review/index.tsx
+++ b/apps/taro/src/pages/student/review/index.tsx
@@ -59,7 +59,7 @@ export default function StudentReviewPage() {
const items = mode === 'wrong' ? wrongItems : favoriteItems;
return (
-
+
Review
diff --git a/apps/taro/src/pages/student/student.css b/apps/taro/src/pages/student/student.css
index 2271b31a..3c0d91bd 100644
--- a/apps/taro/src/pages/student/student.css
+++ b/apps/taro/src/pages/student/student.css
@@ -1370,6 +1370,418 @@
flex: 0 0 auto;
}
+/* Legacy web visual polish shared by student sub-pages. */
+.student-page:not(.login-page) {
+ background:
+ linear-gradient(to right, rgba(15, 23, 42, 0.032) 1px, transparent 1px),
+ linear-gradient(to bottom, rgba(15, 23, 42, 0.032) 1px, transparent 1px),
+ #f4f6f9;
+ background-size: 40px 40px;
+}
+
+.student-topbar {
+ padding: 4px 0 2px;
+}
+
+.student-kicker {
+ color: #1152d4;
+ font-size: 18px;
+ font-weight: 900;
+}
+
+.student-title {
+ color: #111827;
+ font-size: 36px;
+ font-weight: 950;
+}
+
+.student-subtitle {
+ max-width: 820px;
+ color: #64748b;
+ font-size: 22px;
+}
+
+.section-block,
+.section {
+ margin-top: 28px;
+}
+
+.section-heading,
+.section-title {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ margin-bottom: 14px;
+ color: #111827;
+ font-size: 26px;
+ font-weight: 920;
+}
+
+.section-heading::before,
+.section-title::before {
+ content: "";
+ width: 8px;
+ height: 24px;
+ border-radius: 999px;
+ background: #1152d4;
+}
+
+.quiet-panel,
+.report-panel,
+.metric,
+.list-row,
+.profile-card,
+.asset-preview-panel,
+.scoreline-filter-panel,
+.trend-chart {
+ border-color: #f1f5f9;
+ border-radius: 16px;
+ background: #fff;
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
+}
+
+.quiet-panel,
+.report-panel {
+ padding: 24px;
+}
+
+.list-row {
+ position: relative;
+ padding: 18px 20px;
+ transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease, background 160ms ease;
+}
+
+.list-row:nth-child(3n + 1),
+.list-row:nth-child(3n + 2),
+.list-row:nth-child(3n) {
+ border-color: #f1f5f9;
+}
+
+.list-row.active {
+ border-color: #bfdbfe;
+ background: #eff6ff;
+ box-shadow: 0 8px 18px rgba(17, 82, 212, 0.08);
+}
+
+.row-main {
+ color: #111827;
+ font-size: 25px;
+ font-weight: 850;
+}
+
+.row-meta {
+ color: #64748b;
+ font-size: 20px;
+}
+
+.metric {
+ min-height: 116px;
+ padding: 20px;
+}
+
+.compact-metric {
+ min-height: 96px;
+ padding: 16px;
+}
+
+.metric-value {
+ color: #111827;
+ font-size: 31px;
+ font-weight: 950;
+}
+
+.metric-label {
+ color: #94a3b8;
+ font-size: 18px;
+ font-weight: 760;
+}
+
+.primary-button,
+.secondary-button,
+.pill-button,
+.danger-button {
+ height: 56px;
+ border-radius: 12px;
+ font-size: 21px;
+ font-weight: 850;
+ line-height: 56px;
+}
+
+.primary-button {
+ background: #1152d4;
+ box-shadow: 0 8px 18px rgba(17, 82, 212, 0.16);
+}
+
+.secondary-button,
+.pill-button {
+ border-color: #e5e7eb;
+ color: #475569;
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.03);
+}
+
+.secondary-button.active,
+.pill-button.active {
+ border-color: #1152d4;
+ background: #eff6ff;
+ color: #1152d4;
+}
+
+.danger-button {
+ border-color: #fecaca;
+ background: #fff1f2;
+ color: #dc2626;
+}
+
+.status-badge {
+ min-height: 32px;
+ padding: 0 10px;
+ border-radius: 8px;
+ font-size: 18px;
+ font-weight: 850;
+}
+
+.input,
+.textarea {
+ border-color: #e5e7eb;
+ border-radius: 12px;
+ background: #fff;
+ font-size: 22px;
+}
+
+.empty-state {
+ border-color: #dbeafe;
+ border-radius: 16px;
+ background: rgba(255, 255, 255, 0.78);
+ color: #64748b;
+ font-size: 21px;
+}
+
+.catalog-page .toolbar {
+ padding: 14px;
+ border: 1px solid #f1f5f9;
+ border-radius: 16px;
+ background: #fff;
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
+}
+
+.catalog-page .grid-two .metric {
+ min-height: 156px;
+ border-left: 4px solid #1152d4;
+}
+
+.catalog-page .grid-two .metric:nth-child(2n) {
+ border-left-color: #10b981;
+}
+
+.catalog-page .list-row::after,
+.review-page .list-row::after,
+.assets-page .list-row::after,
+.video-page .list-row::after {
+ content: "›";
+ position: absolute;
+ right: 18px;
+ top: 50%;
+ color: #cbd5e1;
+ font-size: 34px;
+ font-weight: 400;
+ transform: translateY(-50%);
+}
+
+.catalog-page .list-row,
+.assets-page .list-row {
+ padding-right: 52px;
+}
+
+.practice-page {
+ max-width: 960px;
+}
+
+.practice-page .student-topbar {
+ align-items: flex-start;
+}
+
+.practice-page .student-title {
+ font-size: 32px;
+}
+
+.practice-page > .quiet-panel:first-of-type {
+ border-color: #bfdbfe;
+ background: linear-gradient(135deg, #eff6ff, #fff);
+}
+
+.practice-page .list-stack > .quiet-panel:first-child {
+ padding: 26px;
+ border-radius: 18px;
+}
+
+.practice-page .list-stack > .quiet-panel:first-child .rich-paragraph {
+ color: #111827;
+ font-size: 30px;
+ font-weight: 760;
+ line-height: 1.7;
+}
+
+.practice-page .list-row {
+ padding: 16px;
+ border-width: 2px;
+ border-color: #f3f4f6;
+ border-radius: 14px;
+ background: rgba(248, 250, 252, 0.72);
+ box-shadow: none;
+}
+
+.practice-page .list-row.active {
+ border-color: #bfdbfe;
+ background: rgba(239, 246, 255, 0.9);
+}
+
+.practice-page .option-prefix {
+ flex-basis: 36px;
+ width: 36px;
+ height: 36px;
+ border: 1px solid #e5e7eb;
+ border-radius: 999px;
+ background: #fff;
+ color: #64748b;
+ font-size: 18px;
+ line-height: 36px;
+}
+
+.practice-page .list-row.active .option-prefix {
+ border-color: #1152d4;
+ background: #1152d4;
+ color: #fff;
+}
+
+.practice-page .answer-detail,
+.reports-page .answer-detail {
+ border-color: #bbf7d0;
+ background: linear-gradient(135deg, #ecfdf5, #fff);
+}
+
+.practice-page .answer-detail-label,
+.reports-page .answer-detail-label {
+ color: #047857;
+}
+
+.answer-sheet {
+ gap: 10px;
+ padding: 16px;
+ border: 1px solid #f1f5f9;
+ border-radius: 16px;
+ background: #fff;
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
+}
+
+.answer-card {
+ height: 46px;
+ border-radius: 12px;
+ font-size: 18px;
+ line-height: 46px;
+}
+
+.reports-page .report-panel,
+.checkout-page .quiet-panel,
+.profile-page .profile-card {
+ border-color: #bfdbfe;
+ background: linear-gradient(135deg, #eff6ff, #fff 74%);
+}
+
+.reports-page .report-panel > .metric-value,
+.checkout-page .amount-text {
+ color: #1152d4;
+ font-size: 42px;
+ font-weight: 950;
+}
+
+.checkout-page .list-row.active {
+ border-color: #1152d4;
+ background: linear-gradient(135deg, #eff6ff, #fff);
+}
+
+.checkout-page .list-row.active::before {
+ content: "推荐";
+ position: absolute;
+ right: 18px;
+ top: 16px;
+ padding: 3px 9px;
+ border-radius: 7px;
+ background: #facc15;
+ color: #1f2937;
+ font-size: 15px;
+ font-weight: 900;
+}
+
+.profile-page > .grid-two {
+ margin-top: 18px;
+}
+
+.profile-avatar {
+ border-radius: 999px;
+}
+
+.avatar-choice {
+ border-radius: 14px;
+ background: #fff;
+}
+
+.trend-chart {
+ gap: 8px;
+ padding: 18px;
+}
+
+.trend-bar-track {
+ height: 112px;
+}
+
+.assets-page .list-row {
+ min-height: 128px;
+}
+
+.asset-preview-frame {
+ border-color: #f1f5f9;
+ background: #f8fafc;
+}
+
+.asset-security-strip {
+ border-color: #dbeafe;
+ background: #eff6ff;
+}
+
+.notifications-page .notification-row.active,
+.profile-page .notification-row.active {
+ border-color: #bfdbfe;
+ background: #eff6ff;
+}
+
+.notifications-page .notification-summary-grid .metric:first-child .metric-value,
+.profile-page .notification-toolbar + .list-stack .notification-row.active .row-main {
+ color: #1152d4;
+}
+
+.vocabulary-card {
+ border-color: #f1f5f9;
+ border-radius: 20px;
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
+}
+
+.vocabulary-card.revealed {
+ border-color: #bfdbfe;
+ background: linear-gradient(135deg, #eff6ff, #fff);
+}
+
+.vocabulary-word {
+ color: #111827;
+ font-size: 58px;
+ font-weight: 950;
+}
+
+.vocabulary-answer {
+ border-color: #f1f5f9;
+ border-radius: 16px;
+ background: #f8fafc;
+}
+
@media (min-width: 900px) {
.student-page {
width: 100%;
@@ -1387,27 +1799,27 @@
}
.student-topbar {
- padding: 24px 28px;
- border: 1px solid rgba(226, 232, 240, 0.9);
- border-radius: 28px;
+ padding: 20px 24px;
+ border: 1px solid #f1f5f9;
+ border-radius: 18px;
background: rgba(255, 255, 255, 0.88);
- box-shadow: 0 10px 24px rgba(15, 23, 42, 0.05);
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.student-page > .toolbar,
.student-page > .section-block > .toolbar {
padding: 14px;
border: 1px solid var(--tiku-border);
- border-radius: 24px;
+ border-radius: 16px;
background: #fff;
- box-shadow: var(--tiku-shadow);
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.quiet-panel,
.report-panel,
.scoreline-filter-panel,
.asset-preview-panel {
- border-radius: 28px;
+ border-radius: 18px;
}
.answer-sheet {
@@ -1430,6 +1842,13 @@
.asset-preview-panel {
padding: 30px;
}
+
+ .profile-page > .grid-two,
+ .reports-page .grid-two,
+ .notifications-page .notification-summary-grid,
+ .vocabulary-stats-grid {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
}
@media (max-width: 420px) {
@@ -1480,4 +1899,13 @@
min-height: 520px;
height: 520px;
}
+
+ .practice-page .toolbar.wrap {
+ gap: 10px;
+ }
+
+ .reports-page .report-panel > .metric-value,
+ .checkout-page .amount-text {
+ font-size: 36px;
+ }
}
diff --git a/apps/taro/src/pages/student/video/index.tsx b/apps/taro/src/pages/student/video/index.tsx
index 6514567d..2192c497 100644
--- a/apps/taro/src/pages/student/video/index.tsx
+++ b/apps/taro/src/pages/student/video/index.tsx
@@ -41,7 +41,7 @@ export default function StudentVideoPage() {
const playUrl = playback?.playback?.url;
return (
-
+
Video
diff --git a/apps/taro/src/services/routeGuard.ts b/apps/taro/src/services/routeGuard.ts
index 82ee0b62..30624e4e 100644
--- a/apps/taro/src/services/routeGuard.ts
+++ b/apps/taro/src/services/routeGuard.ts
@@ -54,11 +54,7 @@ export function shouldGuardPath(path: string) {
if (isPublicPath(path)) return false;
if (appEnv.portal === 'tenant-admin') return path.startsWith('/pages/tenant-admin/');
if (appEnv.portal === 'platform-admin') return path.startsWith('/pages/platform-admin/');
- return path.startsWith('/pages/student/') && ![
- '/pages/student/region/index',
- '/pages/student/catalog/index',
- '/pages/student/scoreline/index',
- ].includes(path);
+ return path.startsWith('/pages/student/') && path !== '/pages/student/region/index';
}
export function landingPath() {