.catalog-group{margin-top:27px;padding:22px;border-radius:20px;border:1px solid var(--line);background:#ffffffa6}
.catalog-group-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}
.catalog-group-head p{margin:8px 0 0;color:var(--muted);font-size:13px}
.category-badge{display:inline-flex;align-items:center;width:max-content;border-radius:999px;padding:6px 11px;font-size:11px;line-height:1.2;font-weight:800}
.category-badge.training{color:#087c70;background:#dcf8f1;border:1px solid #b7eee1}
.category-badge.practice{color:#a34b12;background:#fff0dc;border:1px solid #ffd9ad}
.task-card.training{border-top:3px solid #19ab95}
.task-card.practice{border-top:3px solid #f09b45}
.page-title>.category-badge{margin:0 0 9px}
.task-instructions{display:block;width:min(1160px,100%);height:clamp(390px,62vh,720px);margin:0 auto 24px;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:var(--shadow)}
.journal-page{max-width:1400px;margin:0 auto;padding-top:8px}
.journal-class-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}
.class-tab{display:inline-flex;padding:9px 15px;border:1px solid var(--line);border-radius:11px;background:#fff;text-decoration:none;font-size:13px;font-weight:800;color:#52627a}
.class-tab:hover,.class-tab.selected{background:#4967e8;border-color:#4967e8;color:#fff}
.journal-summary{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:13px;margin:16px 0}
.journal-summary>div{padding:17px 19px;background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 6px 18px #263a5a08}
.journal-summary span{display:block;color:var(--muted);font-size:12px}
.journal-summary strong{display:block;margin-top:4px;font:800 24px Manrope,sans-serif;color:var(--ink)}
.journal-panel{padding:19px 0 15px;overflow:hidden}
.journal-panel>.panel-head{padding:0 19px}
.journal-code-toggle{margin:0}
.journal-scroll{max-width:100%;overflow:auto;border-top:1px solid #edf0f5;border-bottom:1px solid #edf0f5}
.gradebook{border-collapse:separate;border-spacing:0;min-width:100%;width:max-content;font-size:12px}
.gradebook th,.gradebook td{min-width:118px;max-width:190px;padding:11px 12px;text-align:center;border-right:1px solid #edf0f5;border-bottom:1px solid #edf0f5;background:#fff;vertical-align:middle}
.gradebook thead th{height:105px;background:#f7f9fc;color:#43536b;font-weight:800;white-space:normal}
.gradebook th.student-sticky{position:sticky;left:0;z-index:2;min-width:220px;max-width:260px;text-align:left;background:#fff}
.gradebook thead th.student-sticky{z-index:3;background:#f7f9fc}
.gradebook tbody tr:hover td,.gradebook tbody tr:hover th.student-sticky{background:#f8faff}
.gradebook-task-title{display:block;margin-top:7px;max-width:165px;line-height:1.35}
.student-name{display:block;font-size:13px;color:var(--ink)}
.student-sticky small{display:block;margin-top:5px;color:#718097;font-size:10px;font-weight:600}
.student-access-code{font:800 12px ui-monospace,monospace!important;color:#334dcc!important;letter-spacing:1px}
.grade-state{display:inline-flex;justify-content:center;align-items:center;max-width:100%;padding:5px 8px;border-radius:8px;font-size:10px;line-height:1.25;font-weight:800;text-decoration:none;white-space:normal}
.grade-state.graded{background:#ddf8eb;color:#08764d}
.grade-state.pending{background:#fff4cc;color:#8b5a00}
.grade-state.returned{background:#ffe7e4;color:#a33830}
.grade-state.draft{background:#e9efff;color:#4055a8}
.grade-state.not-started{background:#f2f5f9;color:#8591a2}
.journal-legend{display:flex;gap:8px;flex-wrap:wrap;padding:12px 18px 0;margin:0}
.journal-privacy-note{padding:0 19px;margin-bottom:0}
.empty-cell{padding:30px!important;color:var(--muted);text-align:center!important}
@media(max-width:720px){.catalog-group{padding:15px;margin-top:18px}.journal-summary{grid-template-columns:repeat(2,minmax(120px,1fr));gap:8px}.journal-summary>div{padding:12px}.journal-summary strong{font-size:20px}.journal-panel>.panel-head{align-items:flex-start;gap:10px;flex-direction:column}.gradebook th.student-sticky{min-width:165px;max-width:180px}.gradebook th,.gradebook td{min-width:105px;padding:9px 8px}.task-instructions{height:58vh;min-height:360px}}
.journal-type-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 18px}
.journal-type-tabs a{display:inline-flex;align-items:center;gap:9px;padding:9px 14px;border:1px solid var(--line);border-radius:11px;background:#fff;text-decoration:none;color:#536176;font-size:12px;font-weight:800}
.journal-type-tabs a span{display:grid;place-items:center;min-width:23px;height:22px;padding:0 5px;border-radius:7px;background:#eef2f7;color:#718097;font-size:10px}
.journal-type-tabs a.selected{background:#334dcc;border-color:#334dcc;color:#fff;box-shadow:0 6px 16px #334dcc2b}
.journal-type-tabs a.selected span{background:#ffffff2b;color:#fff}
.work-review-page{max-width:1380px;margin:0 auto;padding-top:8px}
.review-stats{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px;margin:16px 0}
.review-stats>a,.review-stats>div{display:flex;flex-direction:column;gap:3px;padding:17px 19px;border:1px solid var(--line);border-radius:15px;background:#fff;text-decoration:none;box-shadow:0 6px 18px #263a5a08}
.review-stats>a:first-child{border-top:3px solid #f2a536}
.review-stats>a:nth-child(2){border-top:3px solid #7187e8}
.review-stats>a:nth-child(3){border-top:3px solid #19aa78}
.review-stats span{color:var(--muted);font-size:12px}
.review-stats strong{font:800 25px Manrope,sans-serif;color:var(--ink)}
.review-stats small{color:#718097;font-size:10px}
.review-filters{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin:16px 0;padding:15px;background:#fff;border:1px solid var(--line);border-radius:15px}
.review-filters label{display:grid;gap:5px;min-width:145px;color:#536176;font-size:11px;font-weight:800}
.review-filters select,.review-filters input{min-height:42px;border:1px solid #dce3ee;border-radius:10px;padding:8px 11px;background:white;color:var(--ink);font:500 13px 'DM Sans',sans-serif}
.review-filters .review-search{flex:1;min-width:200px}
.review-list-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:23px 0 10px}
.review-list-head h2{margin:0;font:800 20px Manrope,sans-serif}
.review-list-head>span{color:var(--muted);font-size:12px}
.review-list{display:grid;gap:10px}
.review-card{overflow:hidden;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 5px 16px #263a5a07}
.review-card.status-submitted{border-left:4px solid #f1ad35}
.review-card.status-returned{border-left:4px solid #e77d71}
.review-card summary{display:grid;grid-template-columns:minmax(135px,1fr) minmax(230px,2fr) minmax(135px,auto) minmax(85px,auto) minmax(140px,auto) auto;align-items:center;gap:12px;min-height:75px;padding:12px 15px;cursor:pointer;list-style:none}
.review-card summary::-webkit-details-marker{display:none}
.review-student strong,.review-student small{display:block}
.review-student strong,.review-task strong{font-size:12px;color:#23324a}
.review-student small{margin-top:4px;color:var(--muted);font-size:10px}
.review-task{display:grid;justify-items:start;gap:5px}
.review-task .category-badge{padding:4px 8px;font-size:9px}
.review-status{display:inline-flex;width:max-content;padding:6px 9px;border-radius:8px;font-size:10px;font-weight:800}
.review-status.submitted{background:#fff1c9;color:#865700}
.review-status.graded{background:#ddf8eb;color:#08764d}
.review-status.returned{background:#ffe7e4;color:#a33830}
.review-status.draft{background:#e9efff;color:#4055a8}
.review-score,.review-card time{color:#607087;font-size:11px;white-space:nowrap}
.review-score{font-weight:800}
.review-score.score-none{color:#69778b}
.review-score.score-low{color:#b42318}
.review-score.score-mid{color:#a8540a}
.review-score.score-good{color:#245ea8}
.review-score.score-excellent{color:#087443}
.review-open{color:#405dcc;font-size:11px;font-weight:800;white-space:nowrap}
.review-open b{display:inline-block;margin-left:4px;transition:transform .15s}
.review-card[open] .review-open b{transform:rotate(180deg)}
.review-card-body{padding:4px 17px 17px;border-top:1px solid #edf0f5}
.review-grade-form{padding-top:12px}
.review-comment{flex:1;min-width:220px}
.review-pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin:22px 0}
.review-pagination span{color:var(--muted);font-size:12px}
@media(max-width:900px){.review-stats{grid-template-columns:repeat(2,minmax(140px,1fr))}.review-card summary{grid-template-columns:1fr 1fr;align-items:start}.review-open{justify-self:end}}
@media(max-width:600px){.review-filters{align-items:stretch}.review-filters label,.review-filters .review-search{width:100%;min-width:100%}.review-filters button,.review-filters>a{flex:1}.review-card summary{grid-template-columns:1fr;gap:8px}.review-open{justify-self:start}.review-list-head{align-items:flex-start;flex-direction:column}.journal-type-tabs a{flex:1;justify-content:center}}
.grade-state.score-none{background:#eef2f7;color:#69778b}
.grade-state.score-low{background:#ffe3e1;color:#b42318}
.grade-state.score-mid{background:#fff0d8;color:#a8540a}
.grade-state.score-good{background:#e8f3ff;color:#245ea8}
.grade-state.score-excellent{background:#d9f7e8;color:#087443}
.grade-scale{display:flex;align-items:center;gap:13px;flex-wrap:wrap;padding:0 18px 2px;color:#65748a;font-size:10px}
.grade-scale span{display:inline-flex;align-items:center;gap:5px}
.grade-scale i{width:9px;height:9px;border-radius:50%;display:inline-block}
.grade-scale .score-low{background:#d93025}.grade-scale .score-mid{background:#e48621}.grade-scale .score-good{background:#4384cf}.grade-scale .score-excellent{background:#13844b}

/* Full submission review and student history */
.catalog-switch{display:flex;gap:9px;margin:0 0 18px}.catalog-switch a{display:inline-flex;padding:10px 16px;border:1px solid var(--line);border-radius:11px;background:#fff;color:#506079;text-decoration:none;font-size:13px;font-weight:800}.catalog-switch a.selected{background:#4967e8;color:#fff;border-color:#4967e8}.deadline-chip{margin:0 0 13px;padding:8px 10px;border-radius:9px;background:#e7f7ef;color:#08764d;font-size:11px;font-weight:800}.deadline-chip.overdue{background:#fff0ee;color:#b42318}.student-name-link{text-decoration:none}.student-name-link:hover{color:#405de0;text-decoration:underline}.review-editor{display:grid;grid-template-columns:1fr 1fr;min-height:480px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#fff}.review-editor .code-panel{min-height:480px}.review-editor .code-panel textarea{min-height:410px;height:auto;resize:vertical}.review-editor .preview-panel iframe{min-height:430px}.review-history,.review-telemetry{margin:14px 0;padding:16px}.review-history .panel-head,.review-telemetry .panel-head{margin-bottom:12px}.review-history h2,.review-telemetry h2{font:750 15px Manrope,sans-serif;margin:0}.history-list{display:grid;gap:7px}.history-version{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#f8faff;text-align:left;cursor:pointer;color:var(--ink)}.history-version:hover{border-color:#8798ed;background:#f0f3ff}.history-version strong{font-size:12px}.history-version time,.history-version span{color:var(--muted);font-size:11px}.telemetry-grid{display:grid;grid-template-columns:repeat(6,minmax(90px,1fr));gap:8px;margin-bottom:13px}.telemetry-grid>div{padding:10px;background:#f6f8fc;border-radius:9px}.telemetry-grid span,.student-work-summary span{display:block;color:var(--muted);font-size:10px}.telemetry-grid strong{font-size:13px;overflow-wrap:anywhere}.review-telemetry details{padding:9px 0;border-top:1px solid #edf0f5;color:#536176;font-size:12px}.review-telemetry details code{display:block;margin-top:8px;overflow-wrap:anywhere}.event-list{max-height:250px;overflow:auto}.event-list>div{display:flex;gap:12px;padding:6px 0;border-bottom:1px solid #edf0f5;font-size:11px}.event-list time{color:var(--muted)}.student-works-page{max-width:1160px;margin:0 auto;padding-top:8px}.student-work-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.student-work-summary>div{padding:15px 18px;background:#fff;border:1px solid var(--line);border-radius:14px}.student-work-summary strong{font:800 23px Manrope}.student-works-list{display:grid;gap:9px}.student-work-row{display:grid;grid-template-columns:minmax(220px,1fr) auto 45px auto;align-items:center;gap:14px;padding:15px;background:#fff;border:1px solid var(--line);border-radius:13px}.student-work-row h2{font:750 15px Manrope;margin:6px 0}.student-work-row p{margin:0;color:var(--muted);font-size:11px}.student-work-score{font-size:18px;color:#405dcc;text-align:center}.review-status.not-started{background:#f2f5f9;color:#8591a2}
@media(max-width:850px){.review-editor{grid-template-columns:1fr}.review-editor .code-panel,.review-editor .preview-panel{min-height:360px}.telemetry-grid{grid-template-columns:repeat(3,1fr)}.student-work-row{grid-template-columns:1fr auto}.student-work-summary{grid-template-columns:repeat(2,1fr)}}
.assignment-deadline{display:grid;gap:5px;color:#536176;font-size:11px;font-weight:800}.assignment-deadline input{min-height:42px;border:1px solid #dce3ee;border-radius:10px;padding:8px 10px;background:#fff;color:var(--ink);font:500 13px "DM Sans",sans-serif}

.profile-wrap{align-items:start;padding-top:44px}.profile-card{width:min(100%,560px)}.profile-card form{gap:14px}.profile-divider{display:grid;gap:4px;border-top:1px solid #edf0f5;padding-top:16px;margin-top:4px;color:#46566d}.profile-divider span{font-size:12px;color:#7b8799;font-weight:400}

/* Make the public task library scannable and keep shared/personal bank clear. */
.catalog-group .task-grid{grid-template-columns:1fr;gap:10px}
.catalog-group .task-card{display:grid;grid-template-columns:74px minmax(0,1fr) minmax(150px,210px);grid-template-areas:"meta title foot" "meta summary foot" "meta deadline foot";align-items:center;column-gap:18px;row-gap:5px;min-height:0;padding:16px 18px;border-top:1px solid var(--line);border-left:4px solid transparent;border-radius:14px;background:#fff;box-shadow:0 4px 14px #263a5a08}
.catalog-group .task-card.training{border-left-color:#19ab95}
.catalog-group .task-card.practice{border-left-color:#f09b45}
.catalog-group .task-card .task-meta{grid-area:meta;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px}
.catalog-group .task-card h3{grid-area:title;margin:0;font-size:16px}
.catalog-group .task-card>p{grid-area:summary;margin:0;font-size:12px;line-height:1.5}
.catalog-group .task-card .deadline-chip{grid-area:deadline;justify-self:start;margin:4px 0 0}
.catalog-group .task-card-foot{grid-area:foot;display:grid;justify-items:stretch;align-content:center;gap:12px;height:100%;padding:0 0 0 18px;border:0;border-left:1px solid #edf0f5}
.catalog-group .task-card-foot>a{display:flex;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 12px;border-radius:10px;background:#4967e8;color:#fff}
.catalog-group .task-card-foot>a:hover{background:#334dcc}
.bank-note{margin:12px 0 0;padding:11px 13px;border-radius:10px;background:#f5f7fc;color:#68778d;font-size:12px;line-height:1.5}
.task-form select{width:100%;border:1px solid #dce3ee;border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink);font:500 14px 'DM Sans',sans-serif}
@media(max-width:720px){.catalog-group .task-card{grid-template-columns:50px minmax(0,1fr);grid-template-areas:"meta title" "meta summary" "meta deadline" "foot foot";column-gap:12px;padding:14px}.catalog-group .task-card .task-meta{align-items:flex-start}.catalog-group .task-card-foot{grid-area:foot;grid-template-columns:1fr auto;align-items:center;height:auto;padding:12px 0 0;border:0;border-top:1px solid #edf0f5}.catalog-group .task-card-foot>a{min-width:120px}.catalog-group .task-card h3{font-size:15px}}
.bank-page{max-width:1160px;margin:0 auto;padding-bottom:50px}.bank-page .page-title{margin-bottom:14px}.bank-filters{display:flex;gap:9px;align-items:center;padding:14px;background:#fff;border:1px solid var(--line);border-radius:14px}.bank-filters input{flex:1;min-width:180px;min-height:42px;border:1px solid #dce3ee;border-radius:10px;padding:9px 12px;font:500 13px 'DM Sans',sans-serif}.bank-list-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:22px 0 11px}.bank-list-head h2{margin:0;font:800 19px Manrope,sans-serif}.bank-task-list{display:grid;gap:11px}.bank-task-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,320px);gap:20px;padding:19px;background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 5px 16px #263a5a07}.bank-task-main h2{margin:10px 0 6px;font:750 18px/1.3 Manrope,sans-serif}.bank-task-main>p{margin:0;color:#6f7f95;font-size:12px;line-height:1.55}.bank-task-meta{display:flex;align-items:center;gap:9px}.bank-source{font-size:10px;font-weight:800;color:#6b7890}.bank-task-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.bank-task-tags span{padding:5px 8px;border-radius:7px;background:#f2f5fa;color:#66758b;font-size:10px;font-weight:700}.bank-task-assign{border-left:1px solid #edf0f5;padding-left:18px;display:flex;align-items:center}.bank-assign-form{width:100%;display:grid;gap:9px}.bank-assign-form label{display:grid;gap:5px;color:#52627a;font-size:11px;font-weight:800}.bank-assign-form select,.bank-assign-form input{width:100%;min-height:39px;border:1px solid #dce3ee;border-radius:9px;padding:8px 10px;background:#fff;color:var(--ink);font:500 12px 'DM Sans',sans-serif}.bank-assign-form .button{width:100%}
@media(max-width:760px){.bank-task-card{grid-template-columns:1fr;gap:13px}.bank-task-assign{border-left:0;border-top:1px solid #edf0f5;padding:13px 0 0}.bank-filters{flex-wrap:wrap}.bank-filters input{flex-basis:100%}.bank-list-head{align-items:flex-start;flex-direction:column}}
.student-work-filter{margin:8px 0 14px}.student-work-filter a span{margin-left:5px;opacity:.75}.student-work-summary{grid-template-columns:repeat(5,minmax(0,1fr))}.student-work-score.score-low{color:#c62828}.student-work-score.score-mid{color:#d27a16}.student-work-score.score-good{color:#2872bd}.student-work-score.score-excellent{color:#12804a}.student-work-score.score-none{color:#94a0b2}@media(max-width:850px){.student-work-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Syntax editor and anonymous demo controls */
.demo-workspace .code-panel>.CodeMirror,.review-editor .code-panel>.CodeMirror{flex:1 1 auto;width:100%;height:100%;min-height:360px;font:13px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}.review-editor .code-panel>.CodeMirror{min-height:430px}.CodeMirror-scroll{min-height:0}.CodeMirror pre{padding:0 4px}.demo-workspace .code-panel .CodeMirror,.review-editor .code-panel .CodeMirror{border-radius:0 0 12px 12px}.editor-activity{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;padding:10px 14px;background:#f7f9fd;border-top:1px solid #dbe3ee;color:#61718a;font-size:11px}.editor-activity strong{color:#263449}.editor-activity b{color:#172436}.demo-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px}.admin-check{display:flex!important;grid-template-columns:auto 1fr;align-items:center;gap:9px!important}.admin-check input{width:auto!important}.admin-list-title{font:750 17px Manrope,sans-serif;margin:20px 0 8px}.admin-task-list{display:grid;gap:7px}.admin-task-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#fbfcff}.admin-order{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:9px;background:#edf1ff;color:#405de0;font-weight:800}.admin-task-title{display:grid;gap:2px;min-width:0;flex:1}.admin-task-title strong{font-size:13px}.admin-task-title small{font-size:10px;color:var(--muted)}.admin-row-actions{display:flex;align-items:center;gap:5px}.admin-row-actions form{margin:0}.admin-row-actions button:disabled{opacity:.4;cursor:not-allowed}@media(max-width:700px){.demo-workspace .code-panel>.CodeMirror{min-height:300px}.review-editor .code-panel>.CodeMirror{min-height:350px}.editor-activity{gap:8px 12px}.admin-task-row{align-items:flex-start;flex-wrap:wrap}.admin-task-title{flex-basis:calc(100% - 50px)}.admin-row-actions{margin-left:42px}}

/* Bounded editor viewport with an explicit touch-friendly resize grip */
.demo-workspace{height:min(68vh,650px);min-height:470px;resize:none;overflow:hidden;grid-template-rows:minmax(0,1fr) 22px}.demo-workspace>.code-panel,.demo-workspace>.preview-panel{min-height:0;overflow:hidden}.demo-workspace .code-panel>.CodeMirror{height:0;min-height:0;flex:1 1 auto}.demo-workspace .preview-panel iframe{height:0;min-height:0;flex:1 1 auto}.workspace-resize-handle{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:9px;min-height:22px;background:#eef2f8;color:#65758d;border-top:1px solid #dbe3ee;cursor:ns-resize;touch-action:none;user-select:none;font-size:10px;font-weight:700}.workspace-resize-handle i{width:36px;height:4px;border-radius:4px;background:#a9b5c7}.workspace-resize-handle:hover{background:#e4eafe;color:#405de0}.workspace-resize-handle:hover i{background:#7186ed}@media(max-width:850px){.demo-workspace{height:auto;min-height:0;grid-template-rows:auto auto 22px}.demo-workspace .code-panel>.CodeMirror{height:min(46vh,430px);min-height:270px;flex:none}.demo-workspace .preview-panel iframe{height:min(46vh,430px);min-height:280px;flex:none}.workspace-resize-handle{grid-row:auto}}

/* Keep iOS from auto-zooming the code field; user pinch zoom remains enabled. */
@media(max-width:850px){.demo-workspace .code-panel>.CodeMirror,.review-editor .code-panel>.CodeMirror{font-size:16px;line-height:1.5}.CodeMirror pre{font-size:16px;line-height:1.5}}

/* Draggable code / preview split on wide screens. */
.demo-workspace{grid-template-columns:minmax(250px,var(--editor-pane-width,1fr)) 14px minmax(250px,1fr)}.workspace-split-handle{grid-column:2;grid-row:1;display:flex;align-items:center;justify-content:center;width:14px;min-width:14px;background:#e2e8f0;cursor:col-resize;touch-action:none;user-select:none;z-index:2}.workspace-split-handle i{width:4px;height:42px;border-radius:5px;background:#a5b1c2}.workspace-split-handle:hover{background:#d8e0f2}.workspace-split-handle:hover i{background:#4967e8}@media(max-width:850px){.demo-workspace{grid-template-columns:1fr}.workspace-split-handle{display:none}}

.integrity-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.integrity-summary>div{display:grid;gap:4px;padding:16px;border:1px solid var(--line);border-radius:12px;background:#f8faff}.integrity-summary span{color:#596b84;font-size:12px;font-weight:700}.integrity-summary strong{color:#172436;font:800 23px Manrope,sans-serif}.integrity-summary small{color:#78869a;font-size:10px}.integrity-summary .risk-medium strong{color:#b76e00}.integrity-summary .risk-high strong{color:#c73535}@media(max-width:600px){.integrity-summary{grid-template-columns:1fr}}

.teacher-telemetry{margin-top:14px;padding-top:10px;border-top:1px solid #e7edf5}.teacher-telemetry>summary{cursor:pointer;color:#405de0;font-size:12px;font-weight:800}.teacher-telemetry .telemetry-grid{margin:12px 0}.telemetry-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.telemetry-meta>div{min-width:0;padding:10px;border-radius:9px;background:#f6f8fc}.telemetry-meta span{display:block;color:var(--muted);font-size:10px;font-weight:700}.telemetry-meta code{display:block;margin-top:5px;color:var(--ink);font-size:11px;overflow-wrap:anywhere;white-space:pre-wrap}@media(max-width:600px){.telemetry-meta{grid-template-columns:1fr}}

.paste-log{margin-top:14px;padding-top:12px;border-top:1px solid #e8edf5}.paste-log h3{margin:0 0 8px;font:750 12px Manrope,sans-serif}.paste-log>div{display:grid;grid-template-columns:150px 48px 110px minmax(0,1fr);align-items:start;gap:8px;padding:7px 0;border-top:1px solid #edf0f5;font-size:10px}.paste-log time,.paste-log span{color:var(--muted)}.paste-log b{color:#405de0}.paste-log code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#43516a}@media(max-width:700px){.paste-log>div{grid-template-columns:1fr 45px 1fr}.paste-log code{grid-column:1/-1;white-space:pre-wrap;overflow-wrap:anywhere}}.telemetry-disclaimer{margin:10px 0 0;color:#748198;font-size:11px}

.integrity-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;margin:0 0 14px;border:1px solid #b8e1ff;border-radius:10px;background:#eff8ff;color:#12629a;font-size:12px}.integrity-banner strong{font-weight:800}.integrity-percent{flex:none;padding:5px 10px;border-radius:7px;background:#dcfce7;color:#16834a;font-size:11px;font-weight:800}.integrity-percent b{font-variant-numeric:tabular-nums}.demo-integrity{border-color:#d7e3f3;background:#f6f9fd;color:#62718a}.demo-integrity .integrity-percent{background:#eaf0f8;color:#495b73}@media(max-width:700px){.integrity-banner{align-items:flex-start;flex-direction:column}.integrity-percent{align-self:flex-start}}

.integrity-banner{max-width:1160px;min-height:44px;margin:0 auto 10px;padding:7px 12px;font-size:11px}.integrity-percent{padding:4px 8px;font-size:10px}.demo-integrity .integrity-percent{background:#dcfce7;color:#16834a}.demo-alert{display:flex;align-items:center;justify-content:space-between;gap:14px}.demo-alert p{margin:3px 0 0}.demo-alert .button{white-space:nowrap}.paste-preview{max-width:1160px;margin:0 auto 10px;padding:8px 12px;border:1px solid #f4d58b;border-radius:10px;background:#fff9e8;color:#73500c;font-size:11px}.paste-preview summary{cursor:pointer;font-weight:800}.paste-preview pre{max-height:170px;overflow:auto;margin:7px 0 0;padding:10px;border-radius:7px;background:#fff1c7;color:#493400;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.5 ui-monospace,monospace}.cm-paste-highlight{background:rgba(255,190,45,.34);border-bottom:2px solid #f2b62f;border-radius:2px}.capture-status{color:#64748b;font-size:10px}.demo-actions .capture-status{color:#d6deef}.demo-actions [data-capture-screen],.submit-row [data-capture-screen]{white-space:nowrap}.submit-row{flex-wrap:wrap}.submit-row .capture-status{flex-basis:100%}@media(max-width:700px){.demo-alert{align-items:flex-start;flex-direction:column}.demo-alert .button{align-self:flex-start}.integrity-banner{max-width:100%;margin-bottom:8px}.paste-preview{max-width:100%}}

.student-hero-cta{background:linear-gradient(135deg,#4967e8,#6848e8);color:#fff;box-shadow:0 9px 22px rgba(73,103,232,.28);font-weight:800}.student-hero-cta:hover{color:#fff;background:linear-gradient(135deg,#3958dc,#5636d6)}.topbar nav .student-login-nav{background:#e8f8f2;color:#08795d;border:1px solid #b7ebd8;box-shadow:0 5px 14px rgba(18,128,94,.12)}.topbar nav .student-login-nav:hover{background:#d6f3e7;color:#075d49}@media(max-width:680px){.student-hero-cta{width:100%;min-height:50px}.hero-actions{align-items:stretch}}

/* Compact split student dashboard */
.student-dashboard{max-width:1160px;margin:0 auto}.student-work-section{margin:18px 0 24px;padding:18px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 24px #263a5a08}.student-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.student-section-head p{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.student-task-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;margin-bottom:10px;border:1px solid #e8edf5;border-radius:11px;background:#f8faff}.student-task-controls label{display:flex;align-items:center;gap:8px;color:#596b84;font-size:11px;font-weight:750}.student-task-controls select{min-height:36px;max-width:250px;padding:6px 10px;border:1px solid #dce3ee;border-radius:8px;background:#fff;color:var(--ink);font:500 12px 'DM Sans',sans-serif}.student-task-list{display:grid;gap:7px}.student-task-row{display:grid;grid-template-columns:112px minmax(0,1fr) minmax(190px,auto);align-items:center;gap:14px;padding:11px 13px;border:1px solid #e5eaf2;border-radius:11px;background:#fff;transition:border-color .15s,background .15s}.student-task-row:hover{border-color:#c7d2fe;background:#fcfdff}.student-task-type .category-badge{white-space:nowrap}.student-task-info{min-width:0}.student-task-info h2{margin:0 0 4px;color:var(--ink);font:750 13px/1.4 Manrope,sans-serif}.student-task-info p{margin:0;color:var(--muted);font-size:10px;line-height:1.45}.student-task-result{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.student-task-result .review-status{white-space:nowrap}.student-task-score{font-size:11px;white-space:nowrap}.deadline-late{color:#c62828;font-weight:800}.student-filter-empty,.student-list-empty{padding:14px;border:1px dashed #d6deea;border-radius:10px;color:var(--muted);text-align:center;font-size:12px}.training-section{border-color:#c7eee7;background:linear-gradient(180deg,#fbfffe,#fff)}.training-practice-note{display:flex;align-items:flex-start;gap:10px;margin:0 0 12px;padding:12px 14px;border:1px solid #bceadd;border-radius:10px;background:#effbf7;color:#226a59;font-size:12px;line-height:1.55}.training-practice-note strong{flex:none;color:#08795d}.training-practice-note span{color:#4f7069}
@media(max-width:760px){.student-work-section{padding:13px}.student-task-row{grid-template-columns:1fr;gap:7px;padding:12px}.student-task-result{justify-content:flex-start}.student-task-type .category-badge{font-size:10px}.student-task-controls{align-items:stretch}.student-task-controls label{flex:1;min-width:180px;justify-content:space-between}.student-task-controls select{max-width:none;flex:1}.student-section-head{align-items:center}.training-practice-note{flex-direction:column;gap:4px}}

/* The editor must keep CodeMirror's own scrollbar handling; an overflow override created a second native bar. */
.demo-workspace .code-panel>.CodeMirror{min-width:0}.demo-workspace .preview-panel{min-width:0}.demo-workspace .preview-panel iframe{display:block;width:100%;border:0;background:#fff}

/* Draft, submission lock and revision-request controls */
.work-lock-note{font-weight:750;color:#44536a}.return-work-form{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:10px 0 22px;padding:13px 15px;border:1px solid #f1d59b;border-radius:11px;background:#fffaf0}.return-work-form p{margin:0;flex:1;min-width:240px;color:#70591f;font-size:12px;line-height:1.5}.return-work-form .button{border-color:#e7c66f;color:#775700}.review-grade-form{flex-wrap:wrap}.review-grade-form .button.quiet{white-space:nowrap}
@media(max-width:650px){.return-work-form{align-items:stretch}.return-work-form p{min-width:100%}.return-work-form button{width:100%}.review-grade-form .button{flex:1}}

/* Signed-in student identity in the main navigation */
.topbar nav .student-identity{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:0 13px;border:1px solid #dce5f2;border-radius:999px;background:#f7f9fd;color:#26364f;font-size:12px;font-weight:800;white-space:nowrap}.student-identity-dot{width:8px;height:8px;flex:none;border-radius:50%;background:#18a88f;box-shadow:0 0 0 3px #18a88f20}
@media(max-width:720px){.topbar{padding-left:14px;padding-right:14px}.topbar nav{gap:3px}.topbar nav .student-identity{max-width:38vw;overflow:hidden;text-overflow:ellipsis;padding:0 9px;font-size:11px}}

.student-learning-switch{display:flex;gap:8px;margin:18px 0 14px;padding:5px;width:max-content;max-width:100%;border:1px solid #dce5f2;border-radius:13px;background:#fff}.student-learning-switch button,.student-catalog-switch button{min-height:38px;padding:0 15px;border:0;border-radius:9px;background:transparent;color:#5c6d85;font:750 12px 'DM Sans',sans-serif;cursor:pointer}.student-learning-switch button.selected,.student-catalog-switch button.selected{background:#4967e8;color:#fff;box-shadow:0 5px 12px #4967e82a}.student-catalog-view{margin-top:16px;padding:18px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 24px #263a5a08}.student-catalog-view .student-section-head h2{margin:4px 0;font:800 23px Manrope,sans-serif}.student-catalog-view .task-grid{margin-top:12px}.student-catalog-view .task-card{min-height:220px}.student-catalog-switch{margin:14px 0}.student-catalog-switch button{border:1px solid var(--line);background:#fff}.student-catalog-switch button.selected{border-color:#4967e8;background:#4967e8}.student-catalog-group[hidden],[data-learning-panel][hidden]{display:none!important}.student-work-dates{display:flex;align-items:center;gap:5px 10px;flex-wrap:wrap;margin-top:4px;color:var(--muted);font-size:10px}.student-work-dates .student-deadline{display:inline-flex;align-items:center;margin:0;padding:3px 8px;border-radius:999px;background:#e7f7ef;color:#08764d;font-size:10px;font-weight:800}.student-work-dates .student-deadline.is-late{background:#fff0ee;color:#b42318}.student-submitted-date{font-weight:750}.student-submitted-date.is-on-time{color:#08764d}.student-submitted-date.is-late{color:#b42318}
@media(max-width:650px){.student-learning-switch{width:100%}.student-learning-switch button{flex:1;padding:0 8px;font-size:11px}.student-catalog-view{padding:13px}.student-work-dates{align-items:flex-start;flex-direction:column;gap:4px}}

/* Keep the training notice aligned with the centered editor workspace */
.training-practice-note{max-width:1160px;margin-left:auto;margin-right:auto}

.student-work-dates .student-deadline.no-deadline{background:#eef2f7;color:#596b82}

.student-progress-page{max-width:1160px;margin:0 auto;padding-top:8px}.student-progress-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0}.student-progress-summary>div{padding:15px 18px;background:#fff;border:1px solid var(--line);border-radius:14px}.student-progress-summary span,.student-progress-summary small{display:block;color:var(--muted);font-size:11px}.student-progress-summary strong{display:block;margin-top:4px;font:800 24px Manrope,sans-serif}.student-progress-summary small{margin-top:2px}.student-progress-table-wrap{padding:18px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 24px #263a5a08}.student-progress-table-wrap h2{margin:0;font:800 20px Manrope,sans-serif}.student-progress-scroll{overflow-x:auto}.student-progress-table{width:100%;border-collapse:collapse;min-width:760px}.student-progress-table th,.student-progress-table td{padding:11px 10px;border-bottom:1px solid #edf0f5;text-align:left;vertical-align:middle;font-size:12px}.student-progress-table th{color:#66758c;font-size:10px;text-transform:uppercase;letter-spacing:.04em;background:#f8faff}.student-progress-table td:first-child a{display:block;color:var(--ink);font-weight:750;text-decoration:none}.student-progress-table td:first-child a:hover{color:var(--blue)}.student-progress-table td:first-child .category-badge{display:inline-flex;margin-top:4px}.student-progress-table .student-deadline{display:inline-flex;white-space:nowrap;padding:3px 8px;border-radius:999px;background:#e7f7ef;color:#08764d;font-size:10px;font-weight:800}.student-progress-table .student-deadline.is-late{background:#fff0ee;color:#b42318}.student-progress-late{display:block;color:#b42318;font-size:10px;font-weight:750}.student-progress-grade{display:inline-flex;min-width:32px;justify-content:center;padding:4px 8px;border-radius:7px;font-size:13px}.student-progress-grade.score-low{background:#fee4e2;color:#b42318}.student-progress-grade.score-mid{background:#fff1cc;color:#976500}.student-progress-grade.score-good{background:#e5f5eb;color:#19713c}.student-progress-grade.score-excellent{background:#d7f4e2;color:#08764d}
@media(max-width:700px){.student-progress-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.student-progress-summary>div{padding:12px}.student-progress-table-wrap{padding:12px}}

/* Journal quick filters and inline grading feedback */
.journal-tools{display:flex;align-items:end;gap:12px;flex-wrap:wrap;padding:16px;margin:0 0 14px;background:#fff;border:1px solid #dbe3f2;border-radius:16px}
.journal-tools label{display:grid;gap:6px;min-width:min(260px,100%);flex:1;color:#52627a;font-size:13px;font-weight:700}
.journal-tools input{min-height:42px;padding:9px 12px;border:1px solid #d5deee;border-radius:10px;font:inherit;color:#17243a}
.journal-student-row[hidden]{display:none}
.review-ajax-message{margin:8px 0 0;color:#087b52;font-weight:700}
.review-ajax-message.error{color:#c3343a}
@media(max-width:640px){.journal-tools{align-items:stretch}.journal-tools>*{width:100%}.journal-tools label{min-width:0}}.journal-expand-student{margin-left:8px;padding:4px 8px;border:0;border-radius:8px;background:#eef2ff;color:#405de0;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.journal-student-detail td{padding:12px 16px;background:#f7f9fe}
.journal-student-detail-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.journal-student-detail-list>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:#fff;border:1px solid #e1e7f2;border-radius:10px}
.journal-student-detail-list>div>strong{font-size:13px;font-weight:600}