Files
gongxue-base/apps/taro/src/pages/student/student.css
2026-07-02 03:23:03 +08:00

2309 lines
40 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.student-page {
min-height: 100vh;
padding: 28px;
background: var(--tiku-page);
}
.login-page {
display: grid;
min-height: 100vh;
align-content: center;
gap: 20px;
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;
}
.login-hero {
position: relative;
overflow: hidden;
min-height: 310px;
padding: 34px 30px;
border-radius: 24px;
background: linear-gradient(135deg, #1152d4 0%, #2563eb 58%, #60a5fa 100%);
box-shadow: var(--tiku-shadow-blue);
}
.login-hero::after {
content: "";
position: absolute;
right: -52px;
bottom: -72px;
width: 220px;
height: 220px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.14);
}
.login-avatar,
.login-kicker,
.login-title,
.login-subtitle {
position: relative;
z-index: 1;
}
.login-avatar {
display: flex;
align-items: center;
justify-content: center;
width: 72px;
height: 72px;
border: 3px solid rgba(255, 255, 255, 0.54);
border-radius: 18px;
background: #fff;
}
.login-avatar-mark {
color: var(--tiku-primary);
font-size: 36px;
font-weight: 950;
}
.login-kicker {
display: block;
margin-top: 22px;
color: rgba(255, 255, 255, 0.82);
font-size: 18px;
font-weight: 850;
}
.login-title {
display: block;
margin-top: 10px;
color: #fff;
font-size: 42px;
font-weight: 950;
line-height: 1.12;
}
.login-subtitle {
display: block;
margin-top: 12px;
color: rgba(255, 255, 255, 0.84);
font-size: 21px;
line-height: 1.45;
}
.login-card {
padding: 24px;
border: 1px solid #f1f5f9;
border-radius: 16px;
background: #fff;
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.login-card .row-main {
font-size: 25px;
font-weight: 900;
}
.login-card .row-meta {
font-size: 19px;
}
.login-card .toolbar {
align-items: center;
overflow-x: visible;
}
.login-card .toolbar .input {
flex: 1;
min-width: 0;
}
.login-page-admin {
background:
linear-gradient(to right, rgba(15, 23, 42, 0.035) 1px, transparent 1px),
linear-gradient(to bottom, rgba(15, 23, 42, 0.035) 1px, transparent 1px),
#f4f6f9;
background-size: 40px 40px;
}
.login-page-admin .login-hero {
background: #111827;
box-shadow: 0 16px 34px rgba(15, 23, 42, 0.18);
}
.login-page-admin .login-hero::after {
background: rgba(37, 99, 235, 0.26);
}
.login-page-admin .login-avatar {
border-color: rgba(255, 255, 255, 0.18);
background: #1e293b;
}
.login-page-admin .login-avatar-mark {
color: #fff;
}
.login-page-admin .login-kicker {
color: #93c5fd;
}
.login-page-admin .login-card {
border-color: #e5e7eb;
}
.login-page-admin .login-card .row-main {
color: #111827;
}
.login-page-admin .login-card .row-meta {
color: #64748b;
}
.student-topbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 18px;
margin-bottom: 24px;
}
.student-title-block {
min-width: 0;
}
.student-kicker {
display: block;
color: var(--tiku-primary);
font-size: 22px;
font-weight: 800;
}
.student-title {
display: block;
margin-top: 6px;
color: var(--tiku-text);
font-size: 38px;
font-weight: 900;
line-height: 1.2;
}
.student-subtitle {
display: block;
margin-top: 8px;
color: var(--tiku-muted);
font-size: 24px;
line-height: 1.45;
}
.toolbar {
display: flex;
gap: 12px;
overflow-x: auto;
padding-bottom: 8px;
}
.toolbar.wrap {
flex-wrap: wrap;
overflow-x: visible;
}
.pill-button,
.primary-button,
.secondary-button,
.danger-button {
min-width: 120px;
height: 64px;
border-radius: 16px;
font-size: 24px;
font-weight: 820;
line-height: 64px;
}
.primary-button {
border: 0;
background: linear-gradient(135deg, var(--tiku-primary), #2563eb);
color: #fff;
box-shadow: 0 10px 20px rgba(17, 82, 212, 0.18);
}
.secondary-button,
.pill-button {
border: 1px solid var(--tiku-border);
background: #fff;
color: var(--tiku-primary);
}
.secondary-button.active {
border-color: var(--tiku-primary);
background: var(--tiku-primary-soft);
color: var(--tiku-primary);
}
.danger-button {
border: 1px solid #fecaca;
background: #fff1f2;
color: #be123c;
}
.pill-button.active {
border-color: var(--tiku-primary);
background: var(--tiku-primary-soft);
color: var(--tiku-primary);
}
.pill-button.warn {
border-color: #f59e0b;
background: #fffbeb;
color: #92400e;
}
.section-block {
margin-top: 30px;
}
.section-heading {
display: block;
margin-bottom: 16px;
color: var(--tiku-text);
font-size: 30px;
font-weight: 800;
}
.quiet-panel {
padding: 28px;
border: 1px solid var(--tiku-border);
border-radius: var(--tiku-radius);
background: #fff;
box-shadow: var(--tiku-shadow);
}
.student-page > .quiet-panel:first-of-type:not(.login-card) {
border-color: #bfdbfe;
background: linear-gradient(135deg, #eff6ff 0%, #fff 72%);
}
.list-stack > .quiet-panel:first-child {
border-radius: 28px;
}
.list-stack > .quiet-panel:first-child .row-meta:first-child {
display: inline-flex;
align-items: center;
min-height: 38px;
padding: 0 14px;
border-radius: 999px;
background: var(--tiku-primary-soft);
color: var(--tiku-primary);
font-weight: 800;
}
.report-panel {
padding: 28px;
border: 1px solid #bfdbfe;
border-radius: var(--tiku-radius);
background: linear-gradient(135deg, #eff6ff, #fff);
box-shadow: var(--tiku-shadow);
}
.report-panel .metric,
.quiet-panel .metric {
box-shadow: none;
}
.learning-report-panel {
background: #f8fbff;
}
.profile-card {
display: flex;
align-items: center;
gap: 22px;
padding: 24px;
border: 1px solid var(--tiku-border);
border-radius: var(--tiku-radius);
background: #fff;
box-shadow: var(--tiku-shadow);
}
.profile-avatar {
flex: 0 0 116px;
width: 116px;
height: 116px;
border: 1px solid #bfdbfe;
border-radius: 24px;
background: linear-gradient(135deg, #1152d4, #60a5fa);
color: #fff;
text-align: center;
}
.profile-avatar.female {
border-color: #fbcfe8;
background: linear-gradient(135deg, #ec4899, #f472b6);
color: #fff;
}
.profile-avatar-mark {
display: block;
font-size: 48px;
font-weight: 850;
line-height: 116px;
}
.profile-card-main {
flex: 1;
min-width: 0;
}
.avatar-choice-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
margin-top: 18px;
}
.avatar-choice {
display: flex;
align-items: center;
gap: 12px;
min-width: 0;
min-height: 88px;
padding: 14px;
border: 1px solid var(--tiku-border);
border-radius: 16px;
background: #f8fafc;
}
.avatar-choice.active {
border-color: var(--tiku-primary);
background: var(--tiku-primary-soft);
}
.avatar-choice.busy {
opacity: 0.72;
}
.avatar-choice-icon {
flex: 0 0 54px;
width: 54px;
height: 54px;
border-radius: 16px;
background: #dbeafe;
color: var(--tiku-primary);
text-align: center;
}
.avatar-choice-icon.female {
background: #fce7f3;
color: #be185d;
}
.avatar-choice-mark {
display: block;
font-size: 28px;
font-weight: 850;
line-height: 54px;
}
.avatar-choice-copy {
min-width: 0;
}
.avatar-choice-title {
display: block;
color: var(--tiku-text);
font-size: 24px;
font-weight: 780;
line-height: 1.25;
}
.avatar-choice-meta {
display: block;
margin-top: 4px;
color: var(--tiku-muted);
font-size: 20px;
line-height: 1.25;
}
.list-stack {
display: flex;
flex-direction: column;
gap: 14px;
}
.list-row {
padding: 22px;
border: 1px solid var(--tiku-border);
border-radius: 22px;
background: #fff;
box-shadow: 0 4px 14px rgba(15, 23, 42, 0.04);
}
.list-row:nth-child(3n + 1) {
border-color: #dbeafe;
}
.list-row:nth-child(3n + 2) {
border-color: #dcfce7;
}
.list-row:nth-child(3n) {
border-color: #fef3c7;
}
.list-row.active {
border-color: var(--tiku-primary);
background: var(--tiku-primary-soft);
box-shadow: 0 8px 20px rgba(17, 82, 212, 0.12);
}
.notification-row.active {
border-color: #93c5fd;
}
.split-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
}
.split-row .row-main {
flex: 1;
min-width: 0;
}
.composite-subquestion {
margin-top: 0;
}
.sub-option-list {
display: flex;
flex-direction: column;
gap: 12px;
margin-top: 16px;
}
.sub-explanation {
margin-top: 16px;
padding-top: 14px;
border-top: 1px solid var(--tiku-border);
}
.option-line {
display: flex;
align-items: flex-start;
gap: 14px;
min-width: 0;
}
.option-prefix {
display: flex;
align-items: center;
justify-content: center;
flex: 0 0 44px;
width: 44px;
height: 44px;
border-radius: 14px;
background: #f1f5f9;
color: #475569;
font-size: 26px;
font-weight: 850;
line-height: 44px;
}
.list-row.active .option-prefix {
background: #dbeafe;
color: var(--tiku-primary);
}
.option-rich {
flex: 1;
min-width: 0;
}
.answer-detail {
margin-top: 16px;
padding: 18px;
border: 1px solid var(--tiku-border);
border-radius: 18px;
background: #f8fafc;
}
.answer-detail-label {
display: block;
margin-bottom: 8px;
color: var(--tiku-primary);
font-size: 22px;
font-weight: 850;
}
.row-main {
display: block;
color: var(--tiku-text);
font-size: 28px;
font-weight: 750;
line-height: 1.35;
}
.row-meta {
display: block;
margin-top: 8px;
color: var(--tiku-muted);
font-size: 22px;
line-height: 1.45;
}
.notification-message {
color: #334155;
}
.notification-action-text {
align-self: center;
color: var(--tiku-primary);
font-weight: 760;
}
.grid-two {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 16px;
}
.metric {
padding: 22px;
border: 1px solid var(--tiku-border);
border-radius: 22px;
background: #fff;
box-shadow: 0 4px 14px rgba(15, 23, 42, 0.04);
}
.compact-metric {
padding: 18px;
}
.metric-value {
display: block;
color: var(--tiku-text);
font-size: 34px;
font-weight: 800;
}
.metric-label {
display: block;
margin-top: 8px;
color: var(--tiku-muted);
font-size: 22px;
}
.report-summary-line {
margin-top: 18px;
}
.empty-state {
padding: 38px 26px;
border: 1px dashed var(--tiku-border-strong);
border-radius: 22px;
background: #fff;
color: var(--tiku-muted);
font-size: 24px;
line-height: 1.5;
}
.input {
width: 100%;
height: 72px;
padding: 0 20px;
border: 1px solid var(--tiku-border);
border-radius: 16px;
background: #fff;
color: #111827;
font-size: 26px;
}
.textarea {
width: 100%;
min-height: 140px;
padding: 18px 20px;
border: 1px solid var(--tiku-border);
border-radius: 16px;
background: #fff;
color: #111827;
font-size: 26px;
line-height: 1.45;
}
.error-text {
display: block;
margin-top: 14px;
color: #be123c;
font-size: 22px;
line-height: 1.4;
}
.success-text {
display: block;
margin-top: 14px;
color: #047857;
font-size: 22px;
line-height: 1.4;
}
.muted-text {
color: var(--tiku-muted);
}
.video-frame {
width: 100%;
min-height: 360px;
border: 0;
border-radius: 24px;
background: #0f172a;
}
.student-page .toolbar + .quiet-panel,
.student-page .toolbar + .report-panel,
.student-page .section-block + .quiet-panel {
margin-top: 18px;
}
.checkout-toolbar {
align-items: center;
overflow-x: visible;
}
.checkout-toolbar .input {
flex: 1;
min-width: 0;
}
.checkout-actions {
margin-top: 18px;
}
.compact-toolbar {
margin-top: 14px;
padding-bottom: 0;
}
.notification-toolbar {
margin-top: 16px;
}
.notification-summary-grid {
margin-top: 6px;
}
.notifications-page .notification-filterbar,
.notifications-page .notification-typebar {
gap: 10px;
}
.notifications-page .notification-typebar {
margin-top: 12px;
}
.notifications-page .pill-button {
min-width: 132px;
}
.notification-actions {
flex-wrap: wrap;
overflow-x: visible;
}
.compact-toolbar .primary-button,
.compact-toolbar .secondary-button {
min-width: 104px;
height: 56px;
font-size: 22px;
line-height: 56px;
}
.amount-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
margin-bottom: 12px;
}
.amount-text {
display: block;
margin-top: 8px;
color: #0f172a;
font-size: 40px;
font-weight: 850;
line-height: 1.15;
}
.status-badge {
display: inline-flex;
align-items: center;
min-height: 40px;
padding: 0 14px;
border-radius: 999px;
background: #ecfdf5;
color: #047857;
font-size: 22px;
font-weight: 750;
}
.status-badge.warning {
background: #fffbeb;
color: #92400e;
}
.status-badge.danger {
background: #fff1f2;
color: #be123c;
}
.trend-chart {
display: grid;
grid-template-columns: repeat(14, minmax(0, 1fr));
gap: 10px;
align-items: end;
padding: 22px;
border: 1px solid var(--tiku-border);
border-radius: var(--tiku-radius);
background: #fff;
box-shadow: var(--tiku-shadow);
}
.trend-column {
min-width: 0;
text-align: center;
}
.trend-value {
display: block;
min-height: 28px;
color: #334155;
font-size: 20px;
font-weight: 760;
line-height: 1.2;
}
.trend-bar-track {
display: flex;
align-items: flex-end;
justify-content: center;
height: 136px;
margin-top: 8px;
border-radius: 999px;
background: #f1f5f9;
}
.trend-bar-fill {
width: 100%;
max-width: 28px;
border-radius: 999px 999px 0 0;
background: var(--tiku-primary);
}
.trend-bar-fill.h-bucket-0 { height: 0; }
.trend-bar-fill.h-bucket-1 { height: 10px; }
.trend-bar-fill.h-bucket-2 { height: 20px; }
.trend-bar-fill.h-bucket-3 { height: 30px; }
.trend-bar-fill.h-bucket-4 { height: 40px; }
.trend-bar-fill.h-bucket-5 { height: 50px; }
.trend-bar-fill.h-bucket-6 { height: 62px; }
.trend-bar-fill.h-bucket-7 { height: 74px; }
.trend-bar-fill.h-bucket-8 { height: 86px; }
.trend-bar-fill.h-bucket-9 { height: 98px; }
.trend-bar-fill.h-bucket-10 { height: 110px; }
.trend-bar-fill.h-bucket-11 { height: 122px; }
.trend-bar-fill.h-bucket-12 { height: 132px; }
.trend-label {
display: block;
margin-top: 8px;
color: var(--tiku-muted);
font-size: 18px;
line-height: 1.2;
}
.progress-track {
width: 100%;
height: 12px;
margin-top: 16px;
overflow: hidden;
border-radius: 999px;
background: var(--tiku-border);
}
.progress-fill {
height: 100%;
border-radius: 999px;
background: var(--tiku-green);
}
.progress-fill.w-bucket-0 { width: 0; }
.progress-fill.w-bucket-1 { width: 10%; }
.progress-fill.w-bucket-2 { width: 20%; }
.progress-fill.w-bucket-3 { width: 30%; }
.progress-fill.w-bucket-4 { width: 40%; }
.progress-fill.w-bucket-5 { width: 50%; }
.progress-fill.w-bucket-6 { width: 60%; }
.progress-fill.w-bucket-7 { width: 70%; }
.progress-fill.w-bucket-8 { width: 80%; }
.progress-fill.w-bucket-9 { width: 90%; }
.progress-fill.w-bucket-10 { width: 100%; }
.handbook-entry-body {
margin-top: 14px;
}
.handbook-search-panel {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 16px;
}
.handbook-search-panel .input {
flex: 1;
min-width: 0;
}
.handbook-search-panel .secondary-button {
flex: 0 0 116px;
min-width: 116px;
}
.handbook-outline {
display: flex;
gap: 10px;
margin-bottom: 14px;
overflow-x: auto;
padding-bottom: 8px;
}
.handbook-outline-chip {
display: flex;
align-items: center;
gap: 8px;
flex: 0 0 auto;
max-width: 360px;
min-height: 58px;
padding: 0 16px;
border: 1px solid var(--tiku-border);
border-radius: 999px;
background: #fff;
}
.handbook-outline-chip.active {
border-color: var(--tiku-primary);
background: var(--tiku-primary-soft);
}
.handbook-outline-index {
flex: 0 0 auto;
color: #94a3b8;
font-size: 20px;
font-weight: 820;
}
.handbook-outline-title {
min-width: 0;
color: #0f172a;
font-size: 22px;
font-weight: 760;
line-height: 1.3;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.handbook-entry-list {
margin-top: 16px;
}
.handbook-entry-row.active {
border-color: #93c5fd;
}
.handbook-search-snippet {
margin-top: 10px;
padding: 14px 16px;
border: 1px solid var(--tiku-border);
border-radius: 18px;
background: var(--tiku-card-soft);
color: #475569;
font-size: 22px;
line-height: 1.55;
word-break: break-word;
}
.handbook-highlight {
border-radius: 6px;
background: #fef3c7;
color: #92400e;
font-weight: 820;
}
.report-sub-result {
margin-top: 14px;
padding-top: 12px;
border-top: 1px dashed var(--tiku-border-strong);
}
.answer-sheet {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 12px;
}
.student-page > .answer-sheet,
.quiet-panel + .answer-sheet {
padding: 18px;
border: 1px solid var(--tiku-border);
border-radius: 24px;
background: #fff;
box-shadow: var(--tiku-shadow);
}
.answer-card {
min-width: 0;
height: 58px;
border: 1px solid var(--tiku-border);
border-radius: 16px;
background: #fff;
color: #334155;
font-size: 22px;
font-weight: 800;
line-height: 58px;
}
.answer-card.current {
border-color: var(--tiku-primary);
background: var(--tiku-primary-soft);
color: var(--tiku-primary);
}
.answer-card.answered {
border-color: #bbf7d0;
background: #ecfdf5;
color: #047857;
}
.answer-card.wrong {
border-color: #fecaca;
background: #fff1f2;
color: #be123c;
}
.break-text {
word-break: break-all;
overflow-wrap: anywhere;
}
.vocabulary-page .student-topbar {
margin-bottom: 20px;
}
.vocabulary-modebar {
margin-top: 18px;
}
.vocabulary-overview-panel {
border-color: #bbf7d0;
background: linear-gradient(135deg, #ecfdf5, #fff);
}
.vocabulary-stats-grid {
margin-top: 18px;
}
.vocabulary-plan-line {
margin-top: 16px;
}
.vocabulary-mastery-track {
margin-top: 18px;
}
.vocabulary-study {
display: flex;
flex-direction: column;
gap: 18px;
}
.vocabulary-progress {
display: flex;
flex-direction: column;
gap: 10px;
}
.vocabulary-progress-track {
width: 100%;
height: 12px;
overflow: hidden;
border-radius: 999px;
background: var(--tiku-border);
}
.vocabulary-progress-fill {
height: 100%;
border-radius: 999px;
background: var(--tiku-primary);
transition: width 180ms ease;
}
.vocabulary-card {
min-height: 560px;
padding: 32px;
border: 1px solid var(--tiku-border);
border-radius: 30px;
background: #fff;
box-shadow: var(--tiku-shadow);
}
.vocabulary-card.revealed {
border-color: #bfdbfe;
background: linear-gradient(135deg, #eff6ff, #fff);
}
.vocabulary-word {
display: block;
margin-top: 36px;
color: #0f172a;
font-size: 64px;
font-weight: 850;
line-height: 1.05;
text-align: center;
word-break: break-word;
}
.vocabulary-phonetic {
display: block;
margin-top: 16px;
color: var(--tiku-muted);
font-size: 28px;
line-height: 1.3;
text-align: center;
}
.vocabulary-card-actions {
justify-content: center;
margin-top: 26px;
}
.vocabulary-answer {
margin-top: 34px;
padding: 24px;
border: 1px solid var(--tiku-border);
border-radius: 22px;
background: #fff;
}
.vocabulary-actions {
justify-content: center;
}
.vocabulary-word-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
}
.vocabulary-word-chip {
min-width: 0;
padding: 18px;
border: 1px solid var(--tiku-border);
border-radius: 20px;
background: #fff;
}
.vocabulary-word-chip.active {
border-color: var(--tiku-primary);
background: var(--tiku-primary-soft);
}
.vocabulary-word-chip.favorite {
border-color: #f59e0b;
}
.vocabulary-chip-word {
display: block;
color: #0f172a;
font-size: 24px;
font-weight: 820;
line-height: 1.3;
word-break: break-word;
}
.vocabulary-chip-meta {
display: block;
margin-top: 6px;
color: #94a3b8;
font-size: 20px;
}
.assets-page .list-stack {
margin-top: 20px;
}
.asset-preview-panel {
padding: 24px;
border: 1px solid #bfdbfe;
border-radius: 24px;
background: #fff;
box-shadow: var(--tiku-shadow);
}
.asset-preview-frame {
position: relative;
min-height: 720px;
overflow: hidden;
border: 1px solid var(--tiku-border);
border-radius: 22px;
background: var(--tiku-card-soft);
}
.asset-preview-panel .toolbar {
flex-wrap: wrap;
overflow-x: visible;
}
.asset-preview-iframe {
width: 100%;
height: 720px;
border: 0;
background: #fff;
}
.asset-download-confirm {
padding: 60px 36px;
}
.asset-watermark {
position: absolute;
inset: 0;
z-index: 3;
display: flex;
align-items: center;
justify-content: center;
pointer-events: none;
color: #0f172a;
}
.asset-watermark.repeat {
align-items: stretch;
justify-content: stretch;
background-image:
repeating-linear-gradient(
-28deg,
transparent 0,
transparent 92px,
rgba(15, 23, 42, 0.08) 92px,
rgba(15, 23, 42, 0.08) 94px,
transparent 94px,
transparent 168px
);
}
.asset-watermark.diagonal .asset-watermark-text,
.asset-watermark.repeat .asset-watermark-text {
transform: rotate(-24deg);
}
.asset-watermark.bottom-right {
align-items: flex-end;
justify-content: flex-end;
padding: 24px;
}
.asset-watermark.center {
align-items: center;
justify-content: center;
}
.asset-watermark-text {
max-width: 86%;
color: #0f172a;
font-size: 32px;
font-weight: 850;
line-height: 1.35;
text-align: center;
word-break: break-word;
}
.asset-security-strip {
margin-top: 16px;
padding: 18px;
border: 1px solid var(--tiku-border);
border-radius: 18px;
background: var(--tiku-card-soft);
}
.scoreline-filter-panel {
padding: 24px;
border: 1px solid var(--tiku-border);
border-radius: 24px;
background: #fff;
box-shadow: var(--tiku-shadow);
}
.scoreline-filter-group {
margin-top: 18px;
}
.scoreline-filter-label {
display: block;
margin-bottom: 10px;
color: #334155;
font-size: 22px;
font-weight: 820;
line-height: 1.25;
}
.scoreline-chip-row {
display: flex;
gap: 10px;
overflow-x: auto;
padding-bottom: 8px;
}
.scoreline-chip-row.compact {
flex-wrap: wrap;
overflow-x: visible;
padding-bottom: 0;
}
.scoreline-chip {
display: flex;
align-items: center;
justify-content: center;
flex: 0 0 auto;
max-width: 320px;
min-width: 112px;
height: 58px;
padding: 0 16px;
border: 1px solid var(--tiku-border);
border-radius: 999px;
background: var(--tiku-card-soft);
}
.scoreline-chip.small {
min-width: 96px;
height: 52px;
padding: 0 14px;
}
.scoreline-chip.active {
border-color: var(--tiku-primary);
background: var(--tiku-primary-soft);
}
.scoreline-chip.warn {
border-color: #f59e0b;
background: #fffbeb;
}
.scoreline-chip-text {
min-width: 0;
color: #0f172a;
font-size: 22px;
font-weight: 760;
line-height: 1.25;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.scoreline-chip.active .scoreline-chip-text {
color: var(--tiku-primary);
}
.scoreline-field-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 16px;
margin-top: 20px;
}
.scoreline-field-filter {
min-width: 0;
}
.scoreline-input {
box-sizing: border-box;
height: 64px;
font-size: 24px;
}
.scoreline-search-button {
margin-top: 20px;
}
.scoreline-trend-strip {
display: flex;
gap: 12px;
overflow-x: auto;
padding-bottom: 8px;
}
.scoreline-trend-item {
flex: 0 0 230px;
min-height: 116px;
padding: 18px;
border: 1px solid #bfdbfe;
border-radius: 22px;
background: linear-gradient(135deg, #eff6ff, #fff);
}
.scoreline-trend-year {
display: block;
color: var(--tiku-primary);
font-size: 24px;
font-weight: 850;
line-height: 1.25;
}
.scoreline-trend-value {
display: block;
margin-top: 8px;
color: #334155;
font-size: 20px;
line-height: 1.35;
word-break: break-word;
}
.scoreline-field-chip-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
margin-top: 14px;
}
.scoreline-field-chip {
min-width: 0;
min-height: 74px;
padding: 12px 14px;
border: 1px solid var(--tiku-border);
border-radius: 18px;
background: var(--tiku-card-soft);
}
.scoreline-field-name {
display: block;
color: var(--tiku-muted);
font-size: 19px;
line-height: 1.25;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.scoreline-field-value {
display: block;
margin-top: 4px;
color: #0f172a;
font-size: 23px;
font-weight: 820;
line-height: 1.25;
word-break: break-word;
}
@media (max-width: 640px) {
.scoreline-field-grid,
.scoreline-field-chip-grid {
grid-template-columns: minmax(0, 1fr);
}
}
.points-list {
gap: 16px;
}
.points-list .list-row {
border-color: #bfdbfe;
background: linear-gradient(135deg, #eff6ff, #fff);
}
.points-list .list-row:nth-child(2n) {
border-color: #bbf7d0;
background: linear-gradient(135deg, #ecfdf5, #fff);
}
.scoreline-page .student-topbar {
align-items: flex-start;
}
.scoreline-page .student-title {
font-size: 40px;
}
.scoreline-page .secondary-button {
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;
}
.home-page .topbar {
padding: 2px 0 0;
}
.home-page .brand {
color: #111827;
letter-spacing: 0;
}
.home-page .subline {
color: #94a3b8;
}
.home-page .hero-band {
border-radius: 24px;
}
.home-page .home-stat-grid {
gap: 16px;
}
.home-page .home-stat {
border-color: #f1f5f9;
border-radius: 16px;
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.home-page .entry-tile {
border-radius: 24px;
}
.handbook-page .student-subtitle,
.ai-school-page .student-subtitle,
.order-detail-page .student-subtitle,
.region-page .student-subtitle {
max-width: 720px;
}
.handbook-page .handbook-search-panel,
.ai-school-page .list-stack,
.order-detail-page .quiet-panel,
.region-page .list-stack {
border: 1px solid #f1f5f9;
border-radius: 16px;
background: #fff;
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.handbook-page .handbook-search-panel {
padding: 14px;
}
.handbook-page .handbook-outline {
gap: 10px;
margin: 16px 0;
padding: 14px;
border: 1px solid #f1f5f9;
border-radius: 16px;
background: #fff;
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.handbook-page .handbook-outline-chip {
min-height: 44px;
border-radius: 12px;
background: #f8fafc;
color: #475569;
}
.handbook-page .handbook-outline-chip.active {
background: #1e293b;
color: #fff;
box-shadow: 0 4px 12px rgba(15, 23, 42, 0.15);
}
.handbook-page .handbook-outline-index {
color: inherit;
font-weight: 900;
}
.handbook-page .handbook-entry-row {
border-left: 4px solid #1152d4;
}
.handbook-page .handbook-entry-row.active {
border-left-color: #10b981;
}
.handbook-page .handbook-search-snippet {
margin-top: 10px;
padding: 12px 14px;
border-radius: 12px;
background: #f8fafc;
color: #64748b;
font-size: 20px;
line-height: 1.6;
}
.handbook-page .handbook-highlight {
border-radius: 5px;
background: #fef3c7;
color: #92400e;
font-weight: 900;
}
.handbook-page .handbook-entry-body {
margin-top: 14px;
padding-top: 14px;
border-top: 1px solid #f1f5f9;
}
.ai-school-page .list-stack {
padding: 12px;
}
.ai-school-page .list-row {
box-shadow: none;
}
.ai-school-page .list-row .taro-input,
.ai-school-page .list-row .taro-textarea {
color: #111827;
font-size: 22px;
}
.ai-school-page .hero-band {
min-height: 220px;
margin: 0 0 16px;
border-radius: 24px;
background: linear-gradient(135deg, #1152d4, #2563eb 58%, #60a5fa);
}
.ai-school-page .hero-title {
font-size: 42px;
}
.ai-school-page .hero-copy {
max-width: 760px;
}
.ai-school-page .toolbar.compact-toolbar {
margin: 14px 0;
padding: 14px;
border: 1px solid #f1f5f9;
border-radius: 16px;
background: #fff;
}
.ai-school-page .section:last-child .list-row::after,
.region-page .list-row::after {
content: "";
position: absolute;
right: 18px;
top: 50%;
color: #cbd5e1;
font-size: 34px;
transform: translateY(-50%);
}
.order-detail-page .quiet-panel {
border-color: #bfdbfe;
background: linear-gradient(135deg, #eff6ff, #fff 72%);
}
.order-detail-page .amount-text {
color: #1152d4;
font-size: 44px;
font-weight: 950;
}
.order-detail-page .checkout-actions {
margin-top: 18px;
padding-top: 16px;
border-top: 1px solid #dbeafe;
}
.order-detail-page .list-row {
min-height: 106px;
}
.region-page {
max-width: 880px;
}
.region-page .list-stack {
padding: 12px;
}
.region-page .list-row {
min-height: 112px;
padding: 20px 56px 20px 18px;
border-left: 4px solid #1152d4;
}
.region-page .list-row:nth-child(2n) {
border-left-color: #10b981;
}
.region-page .list-row:nth-child(3n) {
border-left-color: #f59e0b;
}
.region-page .list-row.active {
border-color: #1152d4;
background: linear-gradient(135deg, #eff6ff, #fff);
}
.region-page .list-row.active::before {
content: "当前";
position: absolute;
right: 50px;
top: 16px;
padding: 3px 9px;
border-radius: 7px;
background: #facc15;
color: #1f2937;
font-size: 15px;
font-weight: 900;
}
.notifications-page .notification-row,
.review-page .list-row,
.video-page .list-row {
border-left: 4px solid #1152d4;
}
.notifications-page .notification-row:nth-child(2n),
.review-page .list-row:nth-child(2n),
.video-page .list-row:nth-child(2n) {
border-left-color: #10b981;
}
.notifications-page .notification-row:nth-child(3n),
.review-page .list-row:nth-child(3n),
.video-page .list-row:nth-child(3n) {
border-left-color: #f59e0b;
}
.checkout-page .quiet-panel,
.reports-page .report-panel,
.profile-page .profile-card,
.vocabulary-overview-panel,
.scoreline-filter-panel {
overflow: hidden;
}
.checkout-page .quiet-panel::before,
.reports-page .report-panel::before,
.profile-page .profile-card::before,
.vocabulary-overview-panel::before,
.scoreline-filter-panel::before {
content: "";
display: block;
width: 56px;
height: 4px;
margin-bottom: 16px;
border-radius: 999px;
background: #1152d4;
}
.assets-page .asset-preview-panel,
.scoreline-page .scoreline-filter-panel,
.vocabulary-page .vocabulary-card,
.handbook-page .handbook-search-panel {
border-top: 4px solid #1152d4;
}
.video-page .video-frame {
border-radius: 16px;
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
}
.student-page .toolbar::-webkit-scrollbar,
.scoreline-chip-row::-webkit-scrollbar,
.handbook-outline::-webkit-scrollbar {
height: 6px;
}
.student-page .toolbar::-webkit-scrollbar-thumb,
.scoreline-chip-row::-webkit-scrollbar-thumb,
.handbook-outline::-webkit-scrollbar-thumb {
border-radius: 999px;
background: #cbd5e1;
}
@media (min-width: 900px) {
.student-page {
width: 100%;
max-width: 1180px;
margin: 0 auto;
padding: 36px;
}
.student-topbar {
margin-bottom: 28px;
}
.student-title {
font-size: 42px;
}
.login-page {
grid-template-columns: minmax(0, 1fr) 430px;
align-items: stretch;
max-width: 1040px;
gap: 0;
padding: 56px;
}
.login-hero {
min-height: 620px;
border-radius: 24px 0 0 24px;
}
.login-title {
margin-top: 12px;
font-size: 48px;
}
.login-card {
justify-content: center;
min-height: 620px;
border-left: 0;
border-radius: 0 24px 24px 0;
padding: 40px;
}
.login-page-admin .login-hero {
border-radius: 24px 0 0 24px;
}
.login-card .input {
height: 52px;
font-size: 15px;
}
.login-card .primary-button,
.login-card .secondary-button {
height: 46px;
font-size: 14px;
line-height: 46px;
}
.student-topbar {
padding: 20px 24px;
border: 1px solid #f1f5f9;
border-radius: 18px;
background: rgba(255, 255, 255, 0.88);
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: 16px;
background: #fff;
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.quiet-panel,
.report-panel,
.scoreline-filter-panel,
.asset-preview-panel {
border-radius: 18px;
}
.answer-sheet {
grid-template-columns: repeat(10, minmax(0, 1fr));
}
.toolbar.wrap {
gap: 14px;
}
.student-page .section-block.grid-two,
.student-page > .grid-two {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.vocabulary-word-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.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) {
.student-page {
padding: 20px;
}
.student-title {
font-size: 34px;
}
.student-subtitle,
.row-meta {
font-size: 21px;
}
.student-topbar,
.amount-row,
.split-row {
flex-direction: column;
align-items: stretch;
}
.toolbar,
.toolbar.wrap,
.checkout-toolbar,
.handbook-search-panel {
flex-wrap: wrap;
overflow-x: visible;
}
.grid-two,
.vocabulary-word-grid,
.avatar-choice-grid {
grid-template-columns: minmax(0, 1fr);
}
.primary-button,
.secondary-button,
.pill-button,
.danger-button {
min-width: 0;
flex: 1 1 150px;
}
.login-card .toolbar .secondary-button {
flex: 0 0 86px;
}
.asset-preview-frame,
.asset-preview-iframe {
min-height: 520px;
height: 520px;
}
.practice-page .toolbar.wrap {
gap: 10px;
}
.reports-page .report-panel > .metric-value,
.checkout-page .amount-text {
font-size: 36px;
}
}