You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dianshang-qianduan/src/assets/styles/student-training.scss

642 lines
20 KiB
SCSS

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

.student-training-shell {
--student-step-height: 46px;
--student-step-font: 14px;
--student-action-height: 42px;
--student-action-font: 16px;
--student-upload-height: 40px;
--student-upload-font: 14px;
--student-aux-height: 42px;
--student-aux-font: 14px;
--student-radius-sm: 6px;
--student-radius-pill: 999px;
--student-accent: #20a4d9;
--student-accent-deep: #0a5c86;
--student-panel-border: rgba(0, 180, 255, 0.3);
}
/*
* The app-main padding around a student training page is part of the page
* canvas. It must blend into the training canvas instead of exposing the
* layout's older black gradient as a vertical block beside the sidebar.
*/
#app .studentLayout .app-main:has(.student-training-shell),
#app .teacherLayout .app-main:has(.student-training-shell) {
background: #06111d !important;
}
#app .studentLayout .app-main:has(.student-training-shell) .student-training-shell,
#app .teacherLayout .app-main:has(.student-training-shell) .student-training-shell {
box-sizing: border-box !important;
display: grid !important;
grid-template-columns: minmax(720px, 1fr) 340px !important;
align-items: start !important;
gap: 24px !important;
width: 100% !important;
max-width: none !important;
min-height: calc(100vh - 90px) !important;
margin: 0 !important;
padding: 24px 24px 32px !important;
background: #06111d !important;
}
.student-training-shell .task-header .task-title {
font-size: 30px !important;
line-height: 1.3 !important;
letter-spacing: 0 !important;
}
.student-training-shell .workbench-head h3 {
font-size: 26px !important;
line-height: 1.3 !important;
letter-spacing: 0 !important;
}
.student-training-shell .panel-title h4,
.student-training-shell .step-title-row h3 {
font-size: 22px !important;
line-height: 1.3 !important;
letter-spacing: 0 !important;
}
.student-training-shell .task-desc,
.student-training-shell .step-desc,
.student-training-shell .goal-bg,
.student-training-shell .background-block,
.student-training-shell .example-block,
.student-training-shell .source-title {
font-size: 15px !important;
line-height: 1.8 !important;
}
.student-training-shell .flow-steps,
.student-training-shell .step-indicator {
display: flex !important;
flex-wrap: nowrap !important;
align-items: center !important;
justify-content: space-between !important;
gap: 6px !important;
width: 100% !important;
margin: 0 0 32px !important;
padding: 6px !important;
border: 1px solid var(--student-panel-border) !important;
border-radius: var(--student-radius-pill) !important;
background: rgba(0, 20, 35, 0.65) !important;
}
.student-training-shell .flow-arrow {
display: none !important;
}
.student-training-shell .flow-pill,
.student-training-shell .step-tab {
display: inline-flex !important;
flex: 1 1 0 !important;
align-items: center !important;
justify-content: center !important;
gap: 8px !important;
min-width: 0 !important;
width: auto !important;
min-height: var(--student-step-height) !important;
height: var(--student-step-height) !important;
padding: 0 14px !important;
border: 1px solid transparent !important;
border-radius: var(--student-radius-pill) !important;
color: #bed5e4 !important;
background: transparent !important;
box-shadow: none !important;
font-size: var(--student-step-font) !important;
font-weight: 800 !important;
line-height: 1.2 !important;
letter-spacing: 0 !important;
white-space: nowrap !important;
}
.student-training-shell .flow-pill.active,
.student-training-shell .step-tab.active {
border-color: rgba(92, 224, 255, 0.7) !important;
color: #ffffff !important;
background: linear-gradient(95deg, #0a6b9e, var(--student-accent-deep)) !important;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;
}
.student-training-shell .flow-rail {
display: flex !important;
flex-wrap: nowrap !important;
align-items: center !important;
justify-content: space-between !important;
gap: 6px !important;
width: 100% !important;
margin: 0 0 24px !important;
padding: 6px !important;
border: 1px solid var(--student-panel-border) !important;
border-radius: 60px !important;
background: rgba(0, 35, 58, 0.66) !important;
}
.student-training-shell .flow-step {
display: flex !important;
flex: 1 1 0 !important;
align-items: center !important;
justify-content: center !important;
gap: 10px !important;
min-width: 0 !important;
min-height: var(--student-step-height) !important;
height: var(--student-step-height) !important;
padding: 0 10px !important;
border: 1px solid transparent !important;
border-radius: var(--student-radius-pill) !important;
color: #bed5e4 !important;
background: transparent !important;
box-shadow: none !important;
}
.student-training-shell .flow-step span {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
flex: 0 0 24px !important;
width: 24px !important;
height: 24px !important;
margin: 0 !important;
border-radius: 50% !important;
color: #ffffff !important;
background: linear-gradient(95deg, #0a6b9e, var(--student-accent-deep)) !important;
font-size: 12px !important;
font-weight: 800 !important;
line-height: 1 !important;
}
.student-training-shell .flow-step strong {
min-width: 0 !important;
color: #e9f8ff !important;
font-size: var(--student-step-font) !important;
font-weight: 800 !important;
line-height: 1.25 !important;
letter-spacing: 0 !important;
text-align: center !important;
overflow-wrap: anywhere !important;
}
.training-step-area {
width: 100% !important;
margin: 18px 0 24px !important;
padding: 18px !important;
border: 1px solid rgba(0, 180, 255, 0.3) !important;
border-radius: 22px !important;
background: rgba(0, 35, 58, 0.66) !important;
box-shadow: inset 0 1px 0 rgba(95, 232, 255, 0.12) !important;
}
.training-step-area::before {
content: "任务实训" !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
height: 34px !important;
min-width: 92px !important;
margin: 0 0 14px !important;
padding: 0 14px !important;
border: 1px solid rgba(0, 170, 255, 0.55) !important;
border-radius: 999px !important;
color: #ffffff !important;
background: linear-gradient(95deg, #0a6b9e, #0a5c86) !important;
font-size: 15px !important;
font-weight: 800 !important;
line-height: 1 !important;
letter-spacing: 0 !important;
}
.training-step-area .caseBacktitle {
display: flex !important;
align-items: center !important;
gap: 8px !important;
min-height: 34px !important;
margin: 10px 0 8px !important;
color: #eaf7ff !important;
font-size: 16px !important;
font-weight: 800 !important;
line-height: 1.45 !important;
letter-spacing: 0 !important;
}
.training-step-area .caseBacktitle img {
width: 18px !important;
height: 18px !important;
flex: 0 0 18px !important;
object-fit: contain !important;
}
.training-step-area .caseBacktitle span {
margin-left: 0 !important;
color: inherit !important;
font-size: inherit !important;
line-height: inherit !important;
letter-spacing: 0 !important;
}
.training-step-area p,
.training-step-area li,
.training-step-area .online,
.training-step-area .online span {
color: #d7ecff !important;
font-size: 15px !important;
line-height: 1.75 !important;
letter-spacing: 0 !important;
}
.training-step-area .el-table {
margin-top: 12px !important;
margin-bottom: 18px !important;
font-size: 14px !important;
}
.training-step-area .el-button {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
min-width: 132px !important;
height: 40px !important;
min-height: 40px !important;
padding: 0 18px !important;
border: 1px solid #2c83aa !important;
border-radius: 6px !important;
color: #e9fbff !important;
background: linear-gradient(180deg, #22aad6, #1687ba) !important;
box-shadow: none !important;
font-size: 15px !important;
font-weight: 800 !important;
line-height: 1 !important;
letter-spacing: 0 !important;
}
.training-step-area .el-button span {
color: inherit !important;
font-size: inherit !important;
line-height: inherit !important;
}
.student-training-shell .training-actions {
display: flex !important;
flex-wrap: wrap !important;
justify-content: center !important;
align-items: center !important;
gap: 52px !important;
margin-top: 36px !important;
padding: 0 !important;
}
.student-training-shell .training-actions .el-button.training-action,
.student-training-shell .training-actions button.training-action {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
min-width: 112px !important;
width: auto !important;
height: var(--student-action-height) !important;
min-height: var(--student-action-height) !important;
padding: 0 16px !important;
border: 1px solid #2c83aa !important;
border-radius: var(--student-radius-sm) !important;
color: #dff7ff !important;
background: rgba(13, 64, 88, 0.62) !important;
box-shadow: none !important;
font-size: var(--student-action-font) !important;
font-weight: 900 !important;
line-height: 1 !important;
letter-spacing: 0 !important;
}
.student-training-shell .training-actions .el-button.training-action span,
.student-training-shell .training-actions button.training-action span {
font-size: inherit !important;
line-height: 1 !important;
}
.student-training-shell .training-actions .el-button.training-action:hover:not(.is-disabled),
.student-training-shell .training-actions button.training-action:hover:not(:disabled) {
border-color: #46b5e7 !important;
color: #ffffff !important;
background: rgba(18, 85, 116, 0.98) !important;
}
/* 新产品调查等页面使用 task-actions而非 training-action。统一底部提交/重置按钮规格。 */
.student-training-shell .task-actions {
display: flex !important;
flex-wrap: wrap !important;
justify-content: center !important;
align-items: center !important;
gap: 28px !important;
margin-top: 28px !important;
}
.student-training-shell .task-actions > button {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
min-width: 112px !important;
width: auto !important;
height: var(--student-action-height) !important;
min-height: var(--student-action-height) !important;
padding: 0 16px !important;
font-size: var(--student-action-font) !important;
font-weight: 800 !important;
line-height: 1 !important;
}
.student-training-shell .taskfooter {
display: flex !important;
flex-wrap: wrap !important;
justify-content: center !important;
align-items: center !important;
gap: 28px !important;
margin-top: 28px !important;
}
.student-training-shell .taskfooter .el-button {
min-width: 112px !important;
width: auto !important;
height: var(--student-action-height) !important;
min-height: var(--student-action-height) !important;
padding: 0 16px !important;
font-size: var(--student-action-font) !important;
font-weight: 800 !important;
line-height: 1 !important;
}
/* 底部提交/重置操作统一采用实训页的胶囊按钮样式。 */
.student-training-shell .training-actions,
.student-training-shell .task-actions,
.student-training-shell .taskfooter {
gap: 28px !important;
margin-top: 28px !important;
}
.student-training-shell .training-actions .el-button.training-action,
.student-training-shell .training-actions button.training-action,
.student-training-shell .task-actions > button,
.student-training-shell .taskfooter .el-button {
border: 1px solid #2cc9ff !important;
border-radius: var(--student-radius-pill) !important;
color: #dff8ff !important;
background: rgba(8, 87, 121, 0.55) !important;
font-weight: 700 !important;
}
.student-training-shell .training-actions .training-action--submit,
.student-training-shell .task-actions > .btn-submit,
.student-training-shell .task-actions > .btn-primary,
.student-training-shell .taskfooter .el-button:first-child {
border-color: #36d9ff !important;
color: #ffffff !important;
background: linear-gradient(110deg, #0eaae4, #0572ac) !important;
}
.student-training-shell .task-actions > button .el-icon {
display: inline-flex !important;
}
.student-training-shell .el-button.ghost-action,
.student-training-shell .el-button.outline-action,
.student-training-shell .workbench-actions .el-button.material-download,
.student-training-shell button.ghost-action,
.student-training-shell button.outline-action,
.student-training-shell .workbench-actions button.material-download {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
gap: 8px !important;
min-width: 0 !important;
width: auto !important;
height: 40px !important;
min-height: 40px !important;
padding: 0 18px !important;
border: 1px solid rgba(99, 217, 255, 0.55) !important;
border-radius: var(--student-radius-pill) !important;
color: #e9fbff !important;
background: rgba(17, 126, 178, 0.36) !important;
box-shadow: none !important;
font-size: 14px !important;
font-weight: 800 !important;
line-height: 1 !important;
letter-spacing: 0 !important;
}
.student-training-shell .el-button.ghost-action:hover:not(.is-disabled),
.student-training-shell .el-button.outline-action:hover:not(.is-disabled),
.student-training-shell .workbench-actions .el-button.material-download:hover:not(.is-disabled),
.student-training-shell button.ghost-action:hover:not(:disabled),
.student-training-shell button.outline-action:hover:not(:disabled),
.student-training-shell .workbench-actions button.material-download:hover:not(:disabled) {
transform: translateY(-1px) !important;
border-color: rgba(116, 235, 255, 0.85) !important;
color: #e9fbff !important;
background: rgba(18, 146, 204, 0.5) !important;
}
/*
* Workbench header actions are a single cross-page component contract.
* Keep this after the generic button rules so legacy, scoped page styles
* cannot turn the material/export actions into a different size or move
* their action group away from the upper-right corner of the workbench.
*/
.student-training-shell .workbench-head {
display: flex !important;
align-items: flex-start !important;
justify-content: space-between !important;
gap: 18px !important;
}
.student-training-shell .workbench-actions {
display: flex !important;
flex: 0 0 auto !important;
flex-wrap: wrap !important;
align-items: center !important;
justify-content: flex-end !important;
align-self: flex-start !important;
gap: 10px !important;
min-width: max-content !important;
margin: 0 0 0 auto !important;
padding: 0 !important;
}
.student-training-shell .workbench-actions > .el-button,
.student-training-shell .workbench-actions > button,
.student-training-shell .workbench-actions > .material-download,
.student-training-shell .workbench-actions > .outline-action {
box-sizing: border-box !important;
flex: 0 0 auto !important;
min-width: 0 !important;
width: auto !important;
height: 40px !important;
min-height: 40px !important;
max-height: 40px !important;
margin: 0 !important;
padding: 0 18px !important;
border: 1px solid rgba(99, 217, 255, 0.55) !important;
border-radius: var(--student-radius-pill) !important;
color: #e9fbff !important;
background: rgba(17, 126, 178, 0.36) !important;
font-size: 14px !important;
font-weight: 800 !important;
line-height: 1 !important;
white-space: nowrap !important;
}
.student-training-shell .el-button.upload-action,
.student-training-shell .el-button.mini-upload,
.student-training-shell button.upload-action,
.student-training-shell button.mini-upload,
.student-training-shell button.upload-btn {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
gap: 8px !important;
min-width: 0 !important;
width: auto !important;
height: var(--student-upload-height) !important;
min-height: var(--student-upload-height) !important;
padding: 0 18px !important;
border: 1px solid rgba(92, 224, 255, 0.7) !important;
border-radius: var(--student-radius-pill) !important;
color: #ffffff !important;
background: linear-gradient(95deg, #0b84bd, #096491) !important;
box-shadow: none !important;
font-size: var(--student-upload-font) !important;
font-weight: 800 !important;
line-height: 1 !important;
letter-spacing: 0 !important;
white-space: nowrap !important;
}
.student-training-shell textarea,
.student-training-shell .large-textarea,
.student-training-shell .input-field,
.student-training-shell .table-textarea {
font-size: 15px !important;
line-height: 1.65 !important;
letter-spacing: 0 !important;
}
.student-training-shell .field-block > span,
.student-training-shell .large-field > span,
.student-training-shell .product-field > span {
font-size: 16px !important;
line-height: 1.45 !important;
letter-spacing: 0 !important;
}
.legacy-training-page {
display: grid !important;
grid-template-columns: minmax(0, 1fr) 360px !important;
gap: 24px !important;
align-items: start !important;
width: 100% !important;
}
.legacy-training-page > :not(.training-ai-sidebar) {
grid-column: 1 !important;
min-width: 0 !important;
}
.legacy-training-page > .training-ai-sidebar {
grid-column: 2 !important;
grid-row: 1 / span 20 !important;
position: sticky !important;
top: 18px !important;
}
.legacy-training-page > .training-intro,
.legacy-training-page > .training-step-area,
.legacy-training-page > .training-legacy-actions,
.legacy-training-page > .centent {
width: 100% !important;
}
.legacy-training-page .top_item {
margin-bottom: 18px !important;
}
.legacy-training-page .top_item .el-button {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
min-width: 150px !important;
height: 42px !important;
padding: 0 18px !important;
border: 1px solid #2c83aa !important;
border-radius: 6px !important;
color: #e9fbff !important;
background: rgba(13, 64, 88, 0.62) !important;
box-shadow: none !important;
font-size: 15px !important;
font-weight: 800 !important;
line-height: 1 !important;
letter-spacing: 0 !important;
}
.legacy-training-page .top_item .el-button.active,
.legacy-training-page .top_item .active {
transform: none !important;
border-color: rgba(0, 170, 255, 0.65) !important;
color: #ffffff !important;
background: linear-gradient(95deg, #0a6b9e, #0a5c86) !important;
}
@media (max-width: 1100px) {
#app .studentLayout .app-main:has(.student-training-shell) .student-training-shell,
#app .teacherLayout .app-main:has(.student-training-shell) .student-training-shell {
grid-template-columns: 1fr !important;
}
.student-training-shell .workbench-actions {
min-width: 0 !important;
}
.student-training-shell .training-actions {
gap: 14px !important;
}
.student-training-shell .flow-steps,
.student-training-shell .step-indicator,
.student-training-shell .flow-rail {
align-items: stretch !important;
flex-direction: column !important;
}
.student-training-shell .flow-pill,
.student-training-shell .step-tab,
.student-training-shell .flow-step,
.student-training-shell .training-actions .el-button.training-action,
.student-training-shell .training-actions button.training-action {
width: 100% !important;
}
.legacy-training-page {
grid-template-columns: 1fr !important;
}
.legacy-training-page > .training-ai-sidebar {
grid-column: 1 !important;
grid-row: auto !important;
position: static !important;
}
}
@media (max-width: 900px) {
#app .studentLayout .app-main:has(.student-training-shell) .student-training-shell,
#app .teacherLayout .app-main:has(.student-training-shell) .student-training-shell {
padding: 14px 14px 18px !important;
}
.student-training-shell .workbench-head {
flex-direction: column !important;
}
.student-training-shell .workbench-actions {
align-self: stretch !important;
justify-content: flex-start !important;
width: 100% !important;
margin-left: 0 !important;
}
}