.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; } }