2025-08-28 12:59:00 +08:00
|
|
|
/* 全局样式 */
|
|
|
|
* {
|
|
|
|
margin: 0;
|
|
|
|
padding: 0;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
body {
|
|
|
|
font-family: 'Microsoft YaHei', Arial, sans-serif;
|
|
|
|
background-color: #f5f7fa;
|
|
|
|
color: #333;
|
|
|
|
line-height: 1.6;
|
|
|
|
padding: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.container {
|
|
|
|
max-width: 900px;
|
|
|
|
margin: 0 auto;
|
|
|
|
background-color: white;
|
|
|
|
border-radius: 12px;
|
|
|
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
|
|
|
|
padding: 30px;
|
|
|
|
}
|
|
|
|
|
|
|
|
header {
|
|
|
|
text-align: center;
|
|
|
|
margin-bottom: 40px;
|
|
|
|
padding-bottom: 20px;
|
|
|
|
border-bottom: 2px solid #eaeaea;
|
|
|
|
}
|
|
|
|
|
|
|
|
h1 {
|
|
|
|
color: #2c3e50;
|
|
|
|
font-size: 28px;
|
|
|
|
margin-bottom: 15px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.difficulty-indicator {
|
|
|
|
display: inline-block;
|
|
|
|
padding: 8px 16px;
|
|
|
|
border-radius: 20px;
|
|
|
|
font-weight: bold;
|
|
|
|
margin-bottom: 15px;
|
|
|
|
font-size: 16px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.difficulty-medium {
|
|
|
|
background-color: #3498db;
|
|
|
|
color: white;
|
|
|
|
}
|
|
|
|
|
|
|
|
.difficulty-easy {
|
|
|
|
background-color: #2ecc71;
|
|
|
|
color: white;
|
|
|
|
}
|
|
|
|
|
|
|
|
.difficulty-hard {
|
|
|
|
background-color: #e74c3c;
|
|
|
|
color: white;
|
|
|
|
}
|
|
|
|
|
|
|
|
.quiz-info {
|
|
|
|
color: #7f8c8d;
|
|
|
|
font-size: 16px;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 题目样式 */
|
|
|
|
.question {
|
|
|
|
margin-bottom: 35px;
|
|
|
|
padding: 25px;
|
|
|
|
border-radius: 10px;
|
|
|
|
background-color: #f9f9f9;
|
|
|
|
border-left: 4px solid #3498db;
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
}
|
|
|
|
|
|
|
|
.question:hover {
|
|
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
|
|
transform: translateY(-2px);
|
|
|
|
}
|
|
|
|
|
|
|
|
.question-header {
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: center;
|
|
|
|
margin-bottom: 15px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.question-number {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 18px;
|
|
|
|
color: #2c3e50;
|
|
|
|
}
|
|
|
|
|
|
|
|
.question-points {
|
|
|
|
background-color: #3498db;
|
|
|
|
color: white;
|
|
|
|
padding: 4px 10px;
|
|
|
|
border-radius: 15px;
|
|
|
|
font-size: 14px;
|
|
|
|
font-weight: bold;
|
|
|
|
}
|
|
|
|
|
|
|
|
.question-text {
|
|
|
|
font-size: 18px;
|
|
|
|
margin-bottom: 20px;
|
|
|
|
color: #34495e;
|
|
|
|
font-weight: 500;
|
|
|
|
}
|
|
|
|
|
|
|
|
.options {
|
|
|
|
margin-bottom: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.option {
|
|
|
|
margin-bottom: 12px;
|
|
|
|
padding: 12px 15px;
|
|
|
|
border-radius: 8px;
|
|
|
|
border: 2px solid #e0e0e0;
|
|
|
|
cursor: pointer;
|
|
|
|
transition: all 0.2s ease;
|
|
|
|
background-color: white;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.option input[type="radio"] {
|
|
|
|
margin-right: 10px;
|
|
|
|
cursor: pointer;
|
|
|
|
flex-shrink: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.option label {
|
|
|
|
cursor: pointer;
|
|
|
|
display: inline;
|
|
|
|
flex-grow: 1;
|
|
|
|
line-height: 1.4;
|
|
|
|
}
|
|
|
|
|
|
|
|
.option:hover {
|
|
|
|
border-color: #3498db;
|
|
|
|
background-color: #f0f8ff;
|
|
|
|
}
|
|
|
|
|
|
|
|
.question-explanation {
|
|
|
|
display: none;
|
|
|
|
margin-top: 15px;
|
|
|
|
padding: 15px;
|
|
|
|
background-color: #e8f4fd;
|
|
|
|
border-radius: 8px;
|
|
|
|
border-left: 4px solid #3498db;
|
|
|
|
color: #2c3e50;
|
|
|
|
}
|
|
|
|
|
|
|
|
.hidden {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 导航按钮样式 */
|
|
|
|
.navigation-section {
|
|
|
|
text-align: center;
|
|
|
|
margin-top: 40px;
|
|
|
|
padding: 25px;
|
|
|
|
background-color: #f8f9fa;
|
|
|
|
border-radius: 10px;
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
#next-btn {
|
|
|
|
background: linear-gradient(45deg, #667eea, #764ba2);
|
|
|
|
color: white;
|
|
|
|
border: none;
|
|
|
|
padding: 12px 30px;
|
|
|
|
border-radius: 30px;
|
|
|
|
cursor: pointer;
|
|
|
|
font-size: 16px;
|
|
|
|
font-weight: bold;
|
|
|
|
position: relative;
|
|
|
|
overflow: hidden;
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
}
|
|
|
|
|
|
|
|
#next-btn:before {
|
|
|
|
content: '';
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
left: -100%;
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
|
|
|
|
transition: all 0.5s ease;
|
|
|
|
}
|
|
|
|
|
|
|
|
#next-btn:hover:before {
|
|
|
|
left: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
#next-btn:hover {
|
|
|
|
transform: translateY(-3px);
|
|
|
|
box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
|
|
|
|
}
|
|
|
|
|
|
|
|
#next-btn:active {
|
|
|
|
transform: translateY(-1px);
|
|
|
|
box-shadow: 0 3px 10px rgba(102, 126, 234, 0.4);
|
|
|
|
}
|
|
|
|
|
|
|
|
.navigation-message {
|
|
|
|
font-size: 16px;
|
|
|
|
color: #333;
|
|
|
|
margin-bottom: 20px;
|
|
|
|
line-height: 1.6;
|
|
|
|
}
|
|
|
|
|
|
|
|
.submit-section {
|
|
|
|
text-align: center;
|
|
|
|
margin-top: 40px;
|
|
|
|
}
|
|
|
|
|
|
|
|
#submit-btn {
|
|
|
|
background-color: #2980b9;
|
|
|
|
color: white;
|
|
|
|
border: none;
|
|
|
|
padding: 12px 30px;
|
|
|
|
border-radius: 6px;
|
|
|
|
cursor: pointer;
|
|
|
|
font-size: 16px;
|
|
|
|
transition: all 0.2s ease;
|
|
|
|
}
|
|
|
|
|
|
|
|
#submit-btn:hover {
|
|
|
|
background-color: #1e6fa5;
|
|
|
|
transform: translateY(-2px);
|
|
|
|
}
|
|
|
|
|
|
|
|
#result {
|
|
|
|
margin-top: 30px;
|
|
|
|
padding: 20px;
|
|
|
|
border-radius: 8px;
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.result-header {
|
|
|
|
font-size: 22px;
|
|
|
|
font-weight: bold;
|
|
|
|
margin-bottom: 15px;
|
|
|
|
color: #2c3e50;
|
|
|
|
}
|
|
|
|
|
|
|
|
.score {
|
|
|
|
font-size: 18px;
|
|
|
|
margin-bottom: 20px;
|
|
|
|
color: #333;
|
|
|
|
}
|
|
|
|
|
|
|
|
.correct-answers {
|
|
|
|
background-color: #e8f5e9;
|
|
|
|
color: #2e7d32;
|
|
|
|
padding: 10px 15px;
|
|
|
|
border-radius: 6px;
|
|
|
|
margin-bottom: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.incorrect-answers {
|
|
|
|
background-color: #ffebee;
|
|
|
|
color: #c62828;
|
|
|
|
padding: 10px 15px;
|
|
|
|
border-radius: 6px;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 学伴模型选择器样式 */
|
|
|
|
.model-selector {
|
|
|
|
position: fixed;
|
|
|
|
top: 40px;
|
|
|
|
left: 20px;
|
|
|
|
z-index: 1000;
|
|
|
|
padding: 10px;
|
|
|
|
background-color: rgba(255, 255, 255, 0.8);
|
|
|
|
border-radius: 5px;
|
|
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
gap: 15px;
|
|
|
|
}
|
|
|
|
|
|
|
|
select {
|
|
|
|
padding: 8px 12px;
|
|
|
|
border: 1px solid #ccc;
|
|
|
|
border-radius: 4px;
|
|
|
|
background-color: white;
|
|
|
|
font-size: 14px;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 录音控制样式 */
|
|
|
|
.recording-controls {
|
|
|
|
position: static;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
gap: 10px;
|
|
|
|
margin: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.record-button {
|
|
|
|
width: 70px;
|
|
|
|
height: 70px;
|
|
|
|
border-radius: 50%;
|
|
|
|
background-color: #dc3545;
|
|
|
|
border: none;
|
|
|
|
color: white;
|
|
|
|
font-size: 16px;
|
|
|
|
cursor: pointer;
|
|
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
opacity: 1 !important;
|
|
|
|
visibility: visible !important;
|
|
|
|
}
|
|
|
|
|
|
|
|
.record-button:hover {
|
|
|
|
background-color: #c82333;
|
|
|
|
}
|
|
|
|
|
|
|
|
.stop-button {
|
|
|
|
width: 70px;
|
|
|
|
height: 70px;
|
|
|
|
border-radius: 50%;
|
2025-08-28 14:47:17 +08:00
|
|
|
background-color: #6c757d; /* 灰色 */
|
2025-08-28 12:59:00 +08:00
|
|
|
border: none;
|
|
|
|
color: white;
|
|
|
|
font-size: 16px;
|
|
|
|
cursor: pointer;
|
|
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
display: none;
|
|
|
|
opacity: 1 !important;
|
|
|
|
visibility: visible !important;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 录音指示器样式 */
|
|
|
|
.recording-indicator {
|
|
|
|
position: fixed;
|
|
|
|
bottom: 20px;
|
|
|
|
left: 20px;
|
|
|
|
z-index: 1000;
|
|
|
|
padding: 10px 15px;
|
|
|
|
background-color: rgba(220, 53, 69, 0.9);
|
|
|
|
color: white;
|
|
|
|
border-radius: 20px;
|
|
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
|
|
|
|
display: none;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.recording-dot {
|
|
|
|
width: 10px;
|
|
|
|
height: 10px;
|
|
|
|
background-color: white;
|
|
|
|
border-radius: 50%;
|
|
|
|
margin-right: 8px;
|
|
|
|
animation: pulse 1.5s infinite;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 思考中动画样式 */
|
|
|
|
.thinking-indicator {
|
|
|
|
position: fixed;
|
|
|
|
bottom: 20px;
|
|
|
|
right: 120px;
|
|
|
|
z-index: 1000;
|
|
|
|
padding: 10px 15px;
|
|
|
|
background-color: rgba(0, 123, 255, 0.9);
|
|
|
|
color: white;
|
|
|
|
border-radius: 20px;
|
|
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
|
|
|
|
display: none;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.thinking-dots {
|
|
|
|
display: flex;
|
|
|
|
gap: 4px;
|
|
|
|
margin-right: 8px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.thinking-dot {
|
|
|
|
width: 8px;
|
|
|
|
height: 8px;
|
|
|
|
background-color: white;
|
|
|
|
border-radius: 50%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.thinking-dot:nth-child(1) {
|
|
|
|
animation: pulse 1.5s infinite 0s;
|
|
|
|
}
|
|
|
|
|
|
|
|
.thinking-dot:nth-child(2) {
|
|
|
|
animation: pulse 1.5s infinite 0.3s;
|
|
|
|
}
|
|
|
|
|
|
|
|
.thinking-dot:nth-child(3) {
|
|
|
|
animation: pulse 1.5s infinite 0.6s;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 结果显示容器样式 */
|
|
|
|
.result-container {
|
|
|
|
position: fixed;
|
|
|
|
bottom: 80px;
|
|
|
|
left: 20px;
|
|
|
|
z-index: 1000;
|
|
|
|
padding: 15px;
|
|
|
|
background-color: rgba(255, 255, 255, 0.95);
|
|
|
|
border-radius: 8px;
|
|
|
|
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
|
|
|
|
max-width: 400px;
|
|
|
|
width: 90%;
|
|
|
|
display: none;
|
|
|
|
flex-direction: column;
|
|
|
|
gap: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.result-header {
|
|
|
|
font-weight: bold;
|
|
|
|
color: #495057;
|
|
|
|
margin-bottom: 5px;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
gap: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.result-header.asr {
|
|
|
|
color: #007bff;
|
|
|
|
}
|
|
|
|
|
|
|
|
.result-header.feedback {
|
|
|
|
color: #28a745;
|
|
|
|
}
|
|
|
|
|
|
|
|
.result-text {
|
|
|
|
color: #333;
|
|
|
|
line-height: 1.5;
|
|
|
|
max-height: 200px;
|
|
|
|
overflow-y: auto;
|
|
|
|
padding-right: 5px;
|
|
|
|
word-break: break-all;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 音频播放器样式 */
|
|
|
|
.audio-player-container {
|
|
|
|
margin-top: 10px;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
gap: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.play-button {
|
|
|
|
background-color: #28a745;
|
|
|
|
color: white;
|
|
|
|
border: none;
|
|
|
|
border-radius: 50%;
|
|
|
|
width: 40px;
|
|
|
|
height: 40px;
|
|
|
|
cursor: pointer;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.play-button:hover {
|
|
|
|
background-color: #218838;
|
|
|
|
}
|
|
|
|
|
|
|
|
.audio-progress {
|
|
|
|
flex-grow: 1;
|
|
|
|
height: 6px;
|
|
|
|
background-color: #e9ecef;
|
|
|
|
border-radius: 3px;
|
|
|
|
overflow: hidden;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
|
|
|
|
.progress-bar {
|
|
|
|
height: 100%;
|
|
|
|
background-color: #28a745;
|
|
|
|
width: 0%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.audio-time {
|
|
|
|
font-size: 12px;
|
|
|
|
color: #6c757d;
|
|
|
|
}
|
|
|
|
|
|
|
|
@keyframes pulse {
|
|
|
|
0% {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
50% {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
100% {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
}
|