feat(exam-prep F9): пробный экзамен — setup/active/result + таймер + балл по сетке + серверный чекер
This commit is contained in:
@@ -612,6 +612,102 @@
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════════
|
||||
Mock exam view (`mk-*`) — used by exam-prep-mock.html
|
||||
═══════════════════════════════════════════════════════════════ */
|
||||
|
||||
/* Setup */
|
||||
.mk-setup p { font-size: .92rem; line-height: 1.7; }
|
||||
.mk-source {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
||||
gap: 14px;
|
||||
margin: 18px 0 4px;
|
||||
}
|
||||
.mk-source-card {
|
||||
border: 1.5px solid var(--border-h);
|
||||
border-radius: 12px;
|
||||
padding: 14px 16px;
|
||||
cursor: pointer;
|
||||
transition: all .15s;
|
||||
}
|
||||
.mk-source-card:hover { border-color: var(--violet); }
|
||||
.mk-source-card.mk-source-active {
|
||||
border-color: var(--violet);
|
||||
background: rgba(155,93,229,.06);
|
||||
}
|
||||
.mk-source-head {
|
||||
display: flex; align-items: center; gap: 10px;
|
||||
font-family: 'Manrope', sans-serif; font-size: .95rem; font-weight: 700;
|
||||
color: var(--text); margin-bottom: 10px;
|
||||
}
|
||||
.mk-source-head svg { width: 18px; height: 18px; color: var(--violet); }
|
||||
.mk-source-body label {
|
||||
display: flex; align-items: center; gap: 8px;
|
||||
font-size: .85rem; color: var(--text-2);
|
||||
}
|
||||
.mk-input {
|
||||
width: 80px;
|
||||
padding: 6px 10px;
|
||||
border: 1.5px solid var(--border-h);
|
||||
border-radius: 7px;
|
||||
background: var(--surface); color: var(--text);
|
||||
font-family: 'Manrope', sans-serif; font-size: .9rem; font-weight: 600;
|
||||
}
|
||||
.mk-input:focus { outline: none; border-color: var(--violet); }
|
||||
.mk-source-hint {
|
||||
font-size: .78rem; color: var(--text-3); margin-top: 6px;
|
||||
}
|
||||
.mk-start-row { margin-top: 16px; }
|
||||
|
||||
/* Active phase: sticky bar */
|
||||
.mk-bar {
|
||||
position: sticky; top: 0; z-index: 50;
|
||||
display: flex; align-items: center; gap: 14px;
|
||||
background: var(--surface);
|
||||
border: 1.5px solid var(--border);
|
||||
border-radius: 12px;
|
||||
padding: 12px 18px;
|
||||
margin-bottom: 18px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.mk-bar-info {
|
||||
display: flex; flex-direction: column; gap: 2px;
|
||||
flex: 1; min-width: 180px;
|
||||
}
|
||||
.mk-bar-source {
|
||||
font-family: 'Unbounded', sans-serif; font-size: .9rem; font-weight: 800;
|
||||
letter-spacing: -.01em;
|
||||
}
|
||||
.mk-bar-count {
|
||||
font-size: .78rem; color: var(--text-2);
|
||||
}
|
||||
.mk-timer {
|
||||
font-family: 'Unbounded', sans-serif;
|
||||
font-size: 1.6rem; font-weight: 800;
|
||||
color: var(--text);
|
||||
font-variant-numeric: tabular-nums;
|
||||
letter-spacing: -.01em;
|
||||
}
|
||||
.mk-timer.mk-timer-warn { color: #F8961E; }
|
||||
.mk-timer.mk-timer-zero { color: #E63946; animation: mk-pulse .8s infinite; }
|
||||
@keyframes mk-pulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: .4; }
|
||||
}
|
||||
.mk-finish-btn { white-space: nowrap; }
|
||||
|
||||
.mk-tasks { }
|
||||
|
||||
/* Result phase */
|
||||
.mk-result-stats { margin-bottom: 18px; }
|
||||
.mk-breakdown-title {
|
||||
font-family: 'Unbounded', sans-serif;
|
||||
font-size: 1.05rem; font-weight: 800;
|
||||
margin: 26px 0 12px;
|
||||
letter-spacing: -.01em;
|
||||
}
|
||||
|
||||
/* ── Mobile tweaks ─────────────────────────────────────────────── */
|
||||
@media (max-width: 640px) {
|
||||
.ep-wrap { padding: 20px 16px 60px; }
|
||||
|
||||
Reference in New Issue
Block a user