.topic-tabs{display:flex;gap:8px;margin:26px 0 12px;overflow:auto;padding-bottom:4px}
.topic-tabs a{white-space:nowrap;border:1px solid var(--line);border-radius:9px;background:white;padding:9px 14px;color:var(--muted);font-weight:700;text-decoration:none}
.topic-tabs a.active{border-color:var(--navy);background:var(--navy);color:white}
.student-name a{color:var(--ink);text-decoration:none}
.task-cell{display:grid;min-width:54px;min-height:48px;place-items:center;border-radius:10px;background:#eef1f5}
.task-cell a{display:grid;width:100%;height:100%;place-items:center;color:inherit;text-decoration:none}
.task-cell small{line-height:1}
.task-cell.complete{background:#e7f6ef;color:var(--green)}
.task-cell.working{background:#fdecec;color:var(--red)}
.grade-badge{display:grid;width:34px;height:34px;place-items:center;border-radius:50%;background:var(--navy);color:white;font-weight:800}
.problem-reference{margin-bottom:20px}
.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.compare{margin-bottom:20px}
.submission-meta{display:flex;justify-content:space-between;gap:16px;margin-bottom:12px}
.code-view{overflow:auto;min-height:180px;margin:0;border-radius:10px;background:#111a2a;padding:18px;color:#e8eef6;font:15px/1.65 Consolas,monospace}
.reference{border-top:4px solid var(--blue)}
.judge-message{border-radius:9px;background:#fff1f1;padding:12px;color:var(--red)}
.lower-panels{align-items:start}
.progress-number{display:grid;width:78px;height:78px;place-items:center;border-radius:22px;background:var(--navy);color:white;font-size:22px;font-weight:800}
.assessment-layout{align-items:start}
.student-task-list{display:grid;gap:10px}
.student-task{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:12px 0}
.student-task small{display:block;color:var(--muted)}
.task-code{display:grid;width:40px;height:40px;place-items:center;border-radius:10px;background:var(--navy);color:white;font-weight:800}
.task-result a{font-weight:700;text-decoration:none}
.task-result.complete a{color:var(--green)}
.task-result.working a{color:var(--amber)}
.task-result span{color:var(--muted)}
.training-box{display:grid;gap:8px;margin-top:16px;border-radius:12px;background:#f2f5f9;padding:14px}
.training-box textarea{width:100%;resize:vertical}
.console-output small{color:var(--muted);font-weight:700}
.console-output pre{overflow:auto;margin:5px 0 0;border-radius:9px;background:#111a2a;padding:13px;color:#e8eef6;font:14px/1.5 Consolas,monospace}
.console-error{border-radius:9px;background:#fdecec;padding:12px;color:var(--red)}
.editor-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.editor-actions .secondary{margin:0}
.run-button{border:1px solid #9eb7d5}
.action-hint{margin:10px 0 0;color:var(--muted);font-size:13px}
.final-feedback{display:flex;align-items:center;gap:20px;margin:18px 0;border-radius:14px;background:#e8f3ff;padding:16px;color:#245d9f}
.final-feedback div{display:grid;place-items:center}
.final-feedback small{font-size:12px}
.final-feedback strong{font-size:30px}
.final-feedback p{margin:0}
.course-map{display:grid;gap:0;max-width:920px;margin-top:28px}
.course-step{position:relative;display:grid;grid-template-columns:58px 1fr;gap:16px;padding-bottom:18px}
.course-step:not(:last-child)::before{content:"";position:absolute;left:28px;top:50px;bottom:-2px;width:3px;background:#dbe3ec}
.step-marker{position:relative;z-index:1;display:grid;width:58px;height:58px;place-items:center;border:5px solid #f5f7fa;border-radius:50%;background:#dfe5ec;color:#64748b;font-weight:800}
.course-card{display:block;border:1px solid var(--line);border-radius:16px;background:white;padding:20px;color:var(--ink);text-decoration:none;box-shadow:0 5px 18px rgba(30,48,78,.06)}
a.course-card:hover{border-color:#9eb7d5;transform:translateY(-1px)}
.course-card-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}
.course-card-heading h2{margin:8px 0 0}
.course-status{white-space:nowrap;color:var(--muted)}
.course-meta{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:12px;color:var(--muted);font-size:14px}
.course-step.complete .step-marker{background:var(--green);color:white}.course-step.complete::before{background:#9bd9bd}.course-step.complete .course-status{color:var(--green)}
.course-step.working .step-marker{background:var(--amber);color:white}.course-step.working .course-status{color:var(--amber)}
.course-step.locked .course-card{background:#f1f3f6;color:#6f7782;box-shadow:none}.course-step.locked .progress{opacity:.45}
.course-table-toolbar{display:flex;align-items:end;gap:14px;margin-top:24px;border:1px solid var(--line);border-radius:14px;background:white;padding:12px 14px}
.student-search{display:grid;min-width:260px;gap:4px}.student-search span,.density-control>span{color:var(--muted);font-size:12px;font-weight:700}.student-search input{height:38px;padding:7px 10px}
.density-control{display:grid;grid-template-columns:auto auto;gap:0}.density-control>span{grid-column:1/-1;margin-bottom:4px}.density-control button{height:38px;border:1px solid #cbd5e1;background:white;padding:0 12px;color:var(--muted);font-weight:700;cursor:pointer}.density-control button:first-of-type{border-radius:8px 0 0 8px}.density-control button:last-of-type{margin-left:-1px;border-radius:0 8px 8px 0}.density-control button.active{position:relative;border-color:var(--navy);background:var(--navy);color:white}
.student-counter{margin:0 0 8px auto;color:var(--muted);font-size:14px}.student-counter strong{color:var(--ink)}
.course-results-table{max-height:74vh;margin-top:10px;padding:0}
.course-results-table table{min-width:max-content}
.course-results-table th,.course-results-table td{min-width:104px;text-align:center}
.course-results-table .student-column,.course-results-table .student-name{position:sticky;left:0;z-index:3;min-width:190px;text-align:left;background:white}
.course-results-table thead th{position:sticky;top:0;z-index:4;background:#f8fafc}
.course-results-table thead .student-column{z-index:5}
.course-topic-heading{vertical-align:middle}.course-topic-heading a{display:grid;width:112px;height:70px;grid-template-rows:1fr auto;align-items:center;justify-items:center;gap:4px;color:var(--ink);text-decoration:none}
.course-topic-heading strong{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;font-size:13px;line-height:1.2}.course-topic-heading small{color:var(--muted);font-weight:400}
.topic-access{border-radius:99px;padding:2px 7px;font-size:10px;line-height:1.4}.topic-access.open{background:#e7f6ef;color:var(--green)}.topic-access.locked{background:#e9edf2;color:#687383}
.course-total-heading{min-width:105px}.course-cell{display:grid;min-height:58px;place-items:center;border-radius:9px;background:#eef1f5;color:var(--ink);text-decoration:none}
.course-cell small,.course-total small{display:block;font-size:11px;font-weight:500}.course-cell.complete{background:#e7f6ef;color:var(--green)}.course-cell.working{background:#fff3df;color:#a76600}.course-cell.locked{background:#f2f3f5;color:#7a818a}
.course-total{display:block;color:var(--navy);text-decoration:none}.course-total strong{font-size:17px}
.course-results-table.density-compact th{padding:8px}.course-results-table.density-compact td{height:52px;padding:5px 8px}.course-results-table.density-compact .course-cell{min-height:40px;grid-auto-flow:column;align-content:center;justify-content:center;gap:5px;padding:3px 6px}.course-results-table.density-compact .course-cell small{display:inline;font-size:10px}.course-results-table.density-compact .student-name strong{font-size:14px}.course-results-table.density-compact .student-name small{display:inline;margin-left:7px;font-size:11px}.course-results-table.density-compact .course-total strong{font-size:15px}.course-results-table.density-compact .course-total small{display:none}
.course-results-table.density-comfortable th,.course-results-table.density-comfortable td{padding:14px}.course-results-table.density-comfortable .course-cell{min-height:58px}
#no-students-found td{padding:30px;text-align:center;color:var(--muted)}
.attention{margin-bottom:20px;border-left:5px solid var(--amber);background:#fff9ec}.attention li+li{margin-top:8px}
.trajectory-list{display:grid;gap:4px}.trajectory-list h2{margin-bottom:10px}
.trajectory-row{display:grid;grid-template-columns:42px 1fr 70px 44px;align-items:center;gap:13px;border-bottom:1px solid var(--line);padding:13px 4px;color:var(--ink);text-decoration:none}
.trajectory-row:last-child{border:0}.trajectory-row small{display:block;margin-top:3px;color:var(--muted)}
.trajectory-number{display:grid;width:36px;height:36px;place-items:center;border-radius:10px;background:#e8edf3;color:#657181;font-weight:800}
.trajectory-row.complete .trajectory-number{background:#e7f6ef;color:var(--green)}.trajectory-row.working .trajectory-number{background:#fff3df;color:#a76600}.trajectory-row.locked{opacity:.68}
.trajectory-progress{font-weight:800;text-align:center}.trajectory-grade{display:grid;width:36px;height:36px;place-items:center;border-radius:50%;background:#edf2f8;font-weight:800}
@media(max-width:700px){.spec-grid{grid-template-columns:1fr}.student-task{grid-template-columns:40px 1fr}.task-result{grid-column:2}.progress-number{width:60px;height:60px;border-radius:16px}.course-table-toolbar{align-items:stretch;flex-direction:column}.student-search{min-width:0}.student-counter{margin:2px 0 0}.density-control{align-self:start}}
