@font-face { font-family:Vazirmatn; src:url('/admin/assets/fonts/Vazirmatn%5Bwght%5D.woff2') format('woff2'); font-style:normal; font-weight:100 900; font-display:swap }
:root {
  --bg:#f5f6fa; --ink:#202332; --muted:#7a8092; --line:#e8eaf1;
  --purple:#6e55d9; --purple-dark:#5840c1; --white:#fff;
  --green:#21a66b; --shadow:0 10px 35px rgba(34,31,67,.06);
}
* { box-sizing:border-box }
html,body { font-family:Vazirmatn,Tahoma,sans-serif }
button,input,select,textarea,option { font-family:inherit }
body { margin:0; background:var(--bg); color:var(--ink) }
.sidebar { position:fixed; inset:0 0 0 auto; width:245px; background:#181b2b; color:#fff; padding:28px 20px; display:flex; flex-direction:column; z-index:4 }
.brand { display:flex; align-items:center; gap:12px; margin:0 8px 38px }
.brand-mark { display:grid; place-items:center; width:42px; height:42px; border-radius:13px; background:linear-gradient(145deg,#8b72ed,#654bc8); font-size:24px; font-weight:800 }
.brand strong,.brand small { display:block }
.brand strong { font-size:18px }
.brand small { font-size:11px; color:#9ca1b7; margin-top:2px }
.sidebar nav { display:grid; gap:7px }
.nav { border:0; background:transparent; color:#aeb2c4; border-radius:11px; padding:12px 15px; text-align:right; font:500 14px inherit; cursor:pointer }
.nav span { display:inline-block; width:28px; font-size:19px }
.nav.active,.nav:hover { background:#292c40; color:#fff }
.sidebar-foot { margin-top:auto; color:#aeb2c4; font-size:12px; padding:12px }
.status-dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:#39d58a; margin-left:8px; box-shadow:0 0 0 4px rgba(57,213,138,.12) }
main { margin-right:245px; min-height:100vh; padding:0 38px 50px }
header { height:105px; display:flex; align-items:center; justify-content:space-between }
h1,h2,h3,p { margin-top:0 }
header h1 { font-size:25px; margin-bottom:4px }
header p,.panel p { font-size:13px; color:var(--muted); margin-bottom:0 }
.primary,.secondary,.ghost,.back { border:0; font:600 13px inherit; border-radius:10px; padding:11px 17px; cursor:pointer }
.primary { background:var(--purple); color:#fff; box-shadow:0 7px 18px rgba(110,85,217,.2) }
.primary:hover { background:var(--purple-dark) }
.primary:disabled,.secondary:disabled { opacity:.45; cursor:not-allowed }
.secondary { background:#25293c; color:#fff }.secondary:hover { background:#343950 }
.ghost,.back { background:#f0eefb; color:var(--purple) }
.view { display:none }
.view.active { display:block }
.stats { display:grid; grid-template-columns:repeat(4,1fr); gap:17px; margin-bottom:20px }
.stats article,.panel { background:var(--white); border:1px solid var(--line); border-radius:15px; box-shadow:var(--shadow) }
.stats article { padding:21px; display:flex; align-items:center; gap:15px }
.stats .icon { width:48px; height:48px; border-radius:14px; display:grid; place-items:center; font-size:21px }
.violet { background:#f0ecff; color:#7256df }.blue { background:#e7f4ff; color:#2585d4 }.green { background:#e8f8f0; color:#21a66b }.amber { background:#fff3da; color:#d9971a }
.stats small { display:block; color:var(--muted); font-size:12px }.stats b { font-size:25px }
.grid { display:grid; grid-template-columns:2fr 1fr; gap:20px }
.panel { padding:23px }
.panel-head,.section-head,.editor-top { display:flex; align-items:center; justify-content:space-between }
.panel h2 { font-size:17px; margin-bottom:4px }
.empty { min-height:220px; display:grid; place-items:center; color:#a4a8b6; font-size:13px }
.quick { background:linear-gradient(155deg,#fff 35%,#f4f0ff) }
.quick ol { list-style:none; padding:15px 0; margin:0 }.quick li { display:flex; align-items:center; gap:10px; margin:13px 0; font-size:13px }
.quick i { font-style:normal; width:26px; height:26px; border-radius:8px; display:grid; place-items:center; background:#ebe6ff; color:#6e55d9; font-weight:700 }
.wide { width:100% }
.toolbar { display:flex; justify-content:space-between; margin-bottom:18px }
.toolbar-actions { display:flex; gap:8px }
.search { background:#fff; border:1px solid var(--line); border-radius:11px; padding:10px 14px; width:360px; color:#9ca1af }
.search input { border:0; outline:0; font:13px inherit; width:90%; background:transparent; margin-right:6px }
.cards { display:grid; grid-template-columns:repeat(3,1fr); gap:17px }
.exam-card { padding:20px; background:#fff; border:1px solid var(--line); border-radius:15px; cursor:pointer; transition:.2s }
.exam-card:hover { transform:translateY(-2px); box-shadow:var(--shadow); border-color:#d8d1f6 }
.exam-card .code { font:600 11px monospace; color:#6e55d9; background:#f0edff; padding:5px 8px; border-radius:7px }
.exam-card h3 { margin:16px 0 6px; font-size:16px }
.exam-meta { display:flex; justify-content:space-between; border-top:1px solid var(--line); padding-top:13px; margin-top:17px; color:var(--muted); font-size:11px }
.exam-actions { display:flex; gap:8px; border-top:1px solid var(--line); padding-top:13px; margin-top:17px }.exam-actions button { flex:1; padding:8px }
.exam-groups { display:grid; gap:25px }.exam-group { min-width:0 }.exam-group-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:11px; padding:0 3px }.exam-group-head h2 { margin:0; font-size:15px }.exam-group-head small { color:var(--muted) }.exam-card-labels { display:flex; align-items:flex-start; justify-content:space-between; gap:8px }.exam-status-labels { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:5px }.completion-label,.score-allocation { padding:5px 8px; border-radius:999px; font-size:10px; font-weight:700; white-space:nowrap }.completion-label.complete,.score-allocation.complete { background:#e9f8ef; color:#278151 }.completion-label.incomplete,.score-allocation.under { background:#fff4dc; color:#a16b08 }.score-allocation.over { background:#fff0f1; color:#bd3d4c }.missing-data { display:block; min-height:18px; margin-top:9px; color:#a16b08; line-height:1.7 }.danger { border:1px solid #f0c8cd; background:#fff4f5; color:#bd3d4c; border-radius:9px; cursor:pointer }.danger:hover { background:#ffe5e8 }.group-filter { width:200px; margin:0; padding:10px 12px; background:#fff }.bulk-exam-panel { display:flex; align-items:center; gap:14px; margin:-5px 0 20px }.bulk-exam-panel>div { flex:1 }.bulk-exam-panel h3 { margin:0 0 4px }.bulk-exam-panel p { margin:0 0 7px; color:var(--muted); font-size:11px }.template-link { color:var(--purple); font-size:11px; font-weight:700 }.bulk-exam-panel .file-button { white-space:nowrap }.bulk-exam-panel button { white-space:nowrap }
.converter-intro { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px }.converter-intro>div { display:flex; align-items:center; gap:14px }.converter-intro h2 { margin-bottom:3px }.converter-icon { width:48px; height:48px; display:grid; place-items:center; border-radius:14px; background:#eeeaff; color:var(--purple); font-size:25px }.file-button { background:#f0eefb; color:var(--purple); border-radius:10px; padding:10px 15px; font-weight:600; cursor:pointer }.file-button input { display:none }
.converter-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px }.converter-box { min-width:0 }.converter-box h3 { margin:0 0 2px; font-size:15px }.converter-box small { color:var(--muted) }.code-area { height:470px; resize:vertical; font:12px/1.7 Consolas,"Courier New",monospace; text-align:left; direction:ltr; white-space:pre; margin-top:17px }.code-area.output { background:#171a28; color:#d9dced; border-color:#171a28 }.converter-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:12px }.converter-warnings { margin-top:12px; padding:11px; border:1px solid #f0d697; background:#fff7e5; color:#8a6112; border-radius:9px; font-size:11px; line-height:1.7 }
.table-wrap { width:100%; min-width:0; overflow:auto } table { width:100%; border-collapse:collapse; margin-top:16px }
th { text-align:right; color:#8c91a1; font-size:11px; font-weight:500; background:#fafafd }
th,td { padding:12px; border-bottom:1px solid var(--line); white-space:nowrap } td { font-size:12px }
.badge { padding:5px 9px; border-radius:8px; font-size:10px; background:#eef0f5 }
.badge.done { background:#e7f8ef; color:#188c58 }.badge.done_with_warnings { background:#fff4dc; color:#a16b08 }.badge.processing,.badge.queued { background:#eeeaff; color:#6549cf }.badge.failed,.badge.canceled { background:#ffeaec; color:#c53d4d }
.progress { width:90px; height:6px; background:#eceef4; border-radius:6px; overflow:hidden }.progress i { display:block; height:100%; background:#745bdd }
.editor-top { margin-bottom:18px }.editor-top>.editor-heading { flex:1; margin-right:15px }.editor-top h2 { font-size:21px; margin-bottom:2px }
#exam-editor>.editor-top { position:sticky; top:0; z-index:3; padding:18px 0 14px; background:rgba(245,246,250,.96); border-bottom:1px solid transparent; backdrop-filter:blur(8px) }
.editor-actions { display:flex; align-items:center; gap:10px }.exam-score-summary { min-width:132px; padding:9px 12px; border:1px solid #eadcae; border-radius:10px; background:#fff7df; color:#946a11; font-size:12px; font-weight:700; text-align:center; white-space:nowrap }.exam-score-summary[data-state="complete"] { border-color:#bfe8d1; background:#eaf8f0; color:#258054 }.exam-score-summary[data-state="over"] { border-color:#f2c2c8; background:#fff0f1; color:#b43d4b }
.editor-grid { display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:18px; align-items:start }
.editor-grid>* { min-width:0 }.editor-main { display:grid; min-width:0; gap:18px }.editor-side { display:grid; min-width:0; align-content:start; gap:18px; position:sticky; top:18px }
.form-panel h3,.section-head h3 { font-size:15px; margin:0 0 20px }
.form-panel h3 span { display:inline-grid; place-items:center; width:27px; height:27px; background:#eeeaff; color:#6e55d9; border-radius:8px; margin-left:8px }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px }
.full-field { grid-column:1/-1 }.full-field small { display:block; color:var(--muted); margin-top:5px }.full-field textarea { resize:vertical; min-height:76px; font-family:Consolas,monospace; text-align:left }
.form-panel { min-width:0 }.page-layout-block { min-width:0; border-top:1px solid var(--line); padding-top:16px }.page-layout-block .section-head { gap:12px; flex-wrap:wrap }.page-layout-block h4 { margin:0 0 3px; font-size:14px }.page-layout-rows { display:grid; gap:9px; margin-top:13px }.page-layout-row { display:grid; grid-template-columns:30px 110px minmax(180px,1fr) 80px 32px; gap:9px; align-items:end; padding:10px; border:1px solid var(--line); border-radius:11px; background:#fafafd }.page-layout-row input { margin-top:4px }.page-grip { display:grid; place-items:center; align-self:center; width:28px; height:28px; border-radius:8px; background:#eeeaff; color:var(--purple) }.page-count { align-self:center; color:var(--muted); font-size:11px; text-align:center }.page-remove { align-self:center; border:0; width:30px; height:30px; border-radius:8px; background:#fff0f1; color:#c84453; cursor:pointer; font-size:18px }
label { font-size:12px; color:#656b7c }
input,select,textarea { display:block; width:100%; border:1px solid #dfe2ea; border-radius:9px; padding:10px 11px; margin-top:7px; font:12px inherit; outline:none; background:#fff }
input:focus,select:focus,textarea:focus { border-color:#8d78e6; box-shadow:0 0 0 3px rgba(110,85,217,.09) }
.q-score[readonly] { background:#f1f2f6; color:#555d70; cursor:not-allowed }
.key-table input,.key-table select,.key-table textarea { margin:0; min-width:70px }.key-table .answer { min-width:250px; min-height:82px; resize:vertical; white-space:pre-wrap }.structured-cell { min-width:570px }.parts-editor { display:grid; gap:8px }.parts-head,.part-row { display:grid; grid-template-columns:82px minmax(190px,1fr) 92px 72px 30px; gap:7px }.parts-head { padding:0 9px 6px; color:var(--muted); font-size:10px }.part-row { align-items:start; padding:8px; border:1px solid var(--line); border-radius:9px; background:#fafafd }.part-row input,.part-row select,.part-row textarea { min-width:0; padding:8px; font-size:11px }.part-text { resize:vertical }.part-id { direction:ltr; text-align:left }.part-type { cursor:pointer }.part-remove { position:relative; z-index:2; border:0; background:#fff0f1; color:#d84a59; border-radius:7px; width:30px; height:30px; cursor:pointer }.part-remove:hover { background:#ffdfe2 }.add-part { width:100%; margin-top:8px; border:1px dashed #bdb3e7; background:#faf9ff; color:var(--purple); border-radius:8px; padding:8px; font:600 11px inherit; cursor:pointer }.add-part:hover { background:#f0edff }
.question-editor-panel>.section-head { align-items:flex-start; gap:15px; margin-bottom:18px }.question-editor-panel>.section-head h3 { margin-bottom:4px }.question-cards { display:grid; gap:14px }.question-card { min-width:0; border:1px solid #dddfea; border-radius:14px; background:#fff; overflow:hidden }.question-card-head { display:grid; grid-template-columns:auto 80px 95px minmax(145px,210px) 1fr; gap:10px; align-items:end; padding:13px 15px; background:#fafafd; border-bottom:1px solid var(--line) }.question-card-head label { font-size:10px }.question-card-head input,.question-card-head select { margin-top:3px; padding:8px }.question-index { align-self:center; padding:7px 10px; border-radius:9px; background:#eeeaff; color:var(--purple); font-weight:700; white-space:nowrap }.question-head-actions { align-self:center; justify-self:end; display:flex; gap:6px }.question-head-actions button { border:0; width:31px; height:31px; border-radius:8px; cursor:pointer; font-size:17px }.question-collapse { background:#eceef5; color:#5e6475 }.remove-question { background:#fff0f1; color:#c84453 }.question-card-body { display:grid; gap:16px; padding:16px }.question-card.collapsed .question-card-body { display:none }.question-card.collapsed .question-card-head { border-bottom:0 }.question-text-field>small { display:inline; color:var(--muted); margin-right:4px }.question-text-field textarea { line-height:1.8 }.answer-builder,.grading-settings { border:1px solid var(--line); border-radius:12px; padding:14px; background:#fcfcfe }.mini-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px }.mini-head>div b,.mini-head>div small { display:block }.mini-head small { color:var(--muted); margin-top:3px }.mini-head button { border:1px dashed #bdb3e7; background:#f5f2ff; color:var(--purple); border-radius:8px; padding:8px 12px; font:600 11px inherit; cursor:pointer }.answer-builder .parts-head,.answer-builder .part-row { grid-template-columns:100px minmax(210px,1fr) 110px 85px 30px }.expected-preview { display:block; margin-top:12px }.expected-preview textarea,.q-rubric[readonly] { background:#f3f4f8; color:#52586a; line-height:1.8; direction:rtl }.grading-settings h4 { margin:0 0 13px; font-size:13px }.grading-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px }.rubric-field,.grading-switches { grid-column:1/-1 }.rubric-field>small { color:var(--muted); margin-right:4px }.grading-grid textarea { resize:vertical; line-height:1.7 }.grading-switches { display:grid; grid-template-columns:1fr 1fr; gap:10px }.setting-check { display:flex; align-items:center; gap:10px; padding:11px; border:1px solid var(--line); border-radius:10px; background:#fff; cursor:pointer }.setting-check input { display:none }.setting-check>span { position:relative; width:39px; height:22px; flex:0 0 auto; border-radius:20px; background:#cdd0d9; transition:.2s }.setting-check>span:after { content:""; position:absolute; width:16px; height:16px; right:3px; top:3px; border-radius:50%; background:#fff; transition:.2s }.setting-check input:checked+span { background:var(--purple) }.setting-check input:checked+span:after { right:20px }.setting-check b,.setting-check small { display:block }.setting-check b { font-size:11px }.setting-check small { color:var(--muted); margin-top:2px }
.reference-image-settings { border:1px solid var(--line); border-radius:12px; padding:14px; background:#fcfcfe }.reference-image-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px }.reference-image-box { min-width:0; padding:12px; border:1px dashed #d8d5e8; border-radius:11px; background:#fff }.reference-image-box>div:first-child b,.reference-image-box>div:first-child small { display:block }.reference-image-box>div:first-child small,.reference-image-box>small { color:var(--muted); margin-top:3px }.reference-upload { display:inline-block; width:auto; margin:10px 0; padding:8px 11px; border-radius:8px; background:#f0edff; color:var(--purple); font-weight:600; cursor:pointer }.reference-upload input { display:none }.reference-gallery { display:grid; grid-template-columns:repeat(auto-fill,minmax(90px,1fr)); gap:8px }.reference-gallery:empty { display:none }.reference-gallery figure { position:relative; margin:0; aspect-ratio:4/3; border:1px solid var(--line); border-radius:9px; overflow:hidden; background:#f2f3f7 }.reference-gallery img { width:100%; height:100%; object-fit:contain }.reference-gallery button { position:absolute; top:4px; left:4px; width:24px; height:24px; border:0; border-radius:7px; background:rgba(190,45,61,.9); color:#fff; cursor:pointer }.question-card .mini-head .add-part { width:auto; margin:0 }.remove { border:0; background:#fff0f1; color:#d84a59; border-radius:7px; width:30px; height:30px; cursor:pointer }
.json-editor { border-top:1px solid var(--line); margin-top:18px; padding-top:15px }.json-editor summary { cursor:pointer; color:var(--purple); font-size:12px; font-weight:600 }
.json-editor textarea { font-family:Consolas,monospace; line-height:1.6; text-align:left; margin:12px 0; direction:ltr }
.crop-file-actions { display:flex; gap:7px }.crop-file-actions input { display:none }.crop-toolbar { display:grid; grid-template-columns:150px 230px minmax(180px,1fr) auto; gap:10px; align-items:end; margin-top:18px }.crop-toolbar input,.crop-toolbar select { margin-top:5px }.crop-toolbar button { min-height:39px }.crop-status { margin:14px 0; padding:10px 12px; border-radius:9px; background:#f6f4ff; color:#6550bf; font-size:11px }.crop-editor { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(230px,.65fr); gap:16px; align-items:start }.crop-canvas-wrap { overflow:hidden; border:1px solid var(--line); border-radius:12px; background:#292c3b; line-height:0 }.crop-canvas-wrap canvas { display:block; width:100%; height:auto; touch-action:none; cursor:ns-resize }.crop-canvas-wrap canvas.empty-canvas { height:0 }.crop-add-row { margin-bottom:9px }.crop-row-controls { display:grid; gap:7px; max-height:540px; overflow:auto; margin-bottom:12px }.crop-row-item { display:grid; grid-template-columns:70px 1fr 1fr 28px; gap:7px; align-items:end; border:1px solid var(--line); background:#fafafd; border-radius:9px; padding:8px }.crop-row-item label { min-width:0; font-size:10px }.crop-row-item input { min-width:0; margin-top:3px; padding:7px }.crop-question-number { direction:ltr; text-align:center }.crop-row-remove { align-self:center; border:0; width:28px; height:28px; border-radius:8px; background:#fff0f1; color:#c84453; cursor:pointer; font-size:17px }.crop-help { display:block; color:var(--muted); line-height:1.8; margin-top:8px }
.ai-panel { position:relative }.ai-badge { position:absolute; left:17px; top:17px; background:#ece7ff; color:#6e55d9; border-radius:8px; padding:5px 8px; font-size:11px; font-weight:700 }
.ai-panel h3 { font-size:16px; margin-bottom:7px }
.dropzone { height:145px; border:1.5px dashed #bdb3e7; border-radius:12px; background:#faf9ff; margin:18px 0 11px; display:grid; place-content:center; text-align:center; cursor:pointer; color:#5f4bb3 }
.dropzone input { display:none }.dropzone b { font-size:13px }.dropzone small { color:#999daf; margin-top:5px }.dropzone.drag { background:#f0edff; border-color:#6e55d9 }
.key-file-list { max-height:230px; overflow:auto; margin:8px 0 11px }.key-file-list .file-chip { background:#fff }
.extract-status { padding:11px; margin-top:10px; border-radius:9px; font-size:11px; background:#f0edff; color:#5f4bb3 }.hidden { display:none }
.hint { border-right:4px solid #e6a32a }.hint h3 { font-size:14px; margin-bottom:6px }
.test-shortcut { background:linear-gradient(145deg,#25293c,#1c1f30); color:#fff }.test-shortcut h3 { font-size:14px; margin-bottom:5px }.test-shortcut p { color:#aeb3c9; margin-bottom:15px }
.test-layout { display:grid; grid-template-columns:minmax(330px,.85fr) minmax(0,1.6fr); gap:20px; align-items:start }
.test-form h3 { margin:0; font-size:16px }.step { display:inline-grid; place-items:center; width:28px; height:28px; border-radius:8px; background:#eeeaff; color:var(--purple); margin-left:7px }
.code-pill { direction:ltr; background:#f0edff; color:var(--purple); border-radius:8px; padding:5px 9px; font:600 11px Consolas,monospace }
.test-dropzone { min-height:190px; border:1.5px dashed #bcb3e4; background:#faf9ff; border-radius:14px; margin:20px 0 10px; display:grid; place-content:center; text-align:center; color:#5f4bb3; cursor:pointer; padding:25px }
.test-dropzone input { display:none }.test-dropzone>span { font-size:32px }.test-dropzone b { font-size:13px; margin-top:8px }.test-dropzone small { color:#9297a9; margin-top:5px }.test-dropzone.drag { background:#f0edff; border-color:var(--purple) }
.test-file-summary { margin:10px 0 7px; padding:9px 11px; border-radius:8px; background:#f3f1ff; color:#6550bf; font-size:11px }.selected-files { display:grid; gap:6px; margin-bottom:17px }.file-chip { display:flex; gap:9px; justify-content:space-between; align-items:center; border:1px solid var(--line); border-radius:8px; padding:8px 10px; font-size:11px }.file-chip .file-name { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis }.file-chip small { color:var(--muted); white-space:nowrap }.file-chip button { border:0; width:25px; height:25px; border-radius:7px; background:#fff0f1; color:#c84453; cursor:pointer }.file-page-picker { flex:0 0 155px; color:var(--muted); font-size:10px }.file-page-picker select { width:100%; margin-top:3px; padding:6px 8px }.qr-page-label { flex:0 0 auto; padding:5px 8px; border-radius:999px; background:#eef8f2; color:#2c7b50; white-space:nowrap }
.switch-row { display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--line); padding:17px 0; cursor:pointer }.switch-row span b,.switch-row span small { display:block }.switch-row span small { color:var(--muted); margin-top:3px }.switch-row input { display:none }.switch-row i { width:42px; height:23px; border-radius:20px; background:#cdd0d9; position:relative; transition:.2s }.switch-row i:after { content:""; position:absolute; width:17px; height:17px; top:3px; right:3px; border-radius:50%; background:#fff; transition:.2s }.switch-row input:checked+i { background:var(--purple) }.switch-row input:checked+i:after { right:22px }.test-submit { margin-top:4px }
.qr-disabled { opacity:.45 }.qr-disabled select { cursor:not-allowed; background:#f1f2f6 }
.test-output,#test-result { display:grid; min-width:0; max-width:100%; gap:18px }.processing-head { display:flex; align-items:center; gap:13px }.processing-head>div { flex:1 }.processing-head h3 { margin-bottom:3px }.processing-head b { color:var(--purple); font-size:18px }.spinner { width:40px; height:40px; border:4px solid #ebe8f8; border-top-color:var(--purple); border-radius:50%; animation:spin 1s linear infinite }.big-progress { margin-top:17px; height:8px; border-radius:10px; background:#eceef5; overflow:hidden }.big-progress i { display:block; width:0; height:100%; background:linear-gradient(90deg,#8067e2,#5a42c1); transition:.4s }
.result-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:18px }.result-summary article { background:#fff; border:1px solid var(--line); border-radius:13px; padding:16px }.result-summary small { display:block; color:var(--muted); font-size:11px }.result-summary b { display:block; font-size:22px; margin-top:5px }.result-card h3 { font-size:16px }.student-answer-cell { min-width:220px; max-width:430px; white-space:pre-wrap; line-height:1.9; color:#303646 }.score-cell { font-weight:700; color:var(--purple) }.review { color:#c88412 }.result-json { white-space:pre-wrap; direction:ltr; text-align:left; max-height:320px; overflow:auto; background:#171a28; color:#d8dbee; border-radius:10px; padding:14px; font:11px/1.6 Consolas,monospace }.result-warnings { background:#fff7e6; color:#8c6518; border:1px solid #f3dfae; border-radius:10px; padding:12px; font-size:11px; margin-bottom:15px }
.result-card,.job-result { min-width:0; max-width:100%; overflow-x:clip; container-type:inline-size }.result-card .table-wrap,.job-result .table-wrap { min-width:0; max-width:100%; overflow:visible }.result-table { width:100%; max-width:100%; table-layout:fixed; margin-top:14px }.result-table th,.result-table td { min-width:0; white-space:normal; vertical-align:top; overflow-wrap:anywhere; word-break:break-word }.result-table th:first-child { width:8% }.result-table th:nth-child(3) { width:12% }.result-table th:last-child { width:11% }.result-table .student-answer-cell { min-width:0; max-width:none }
@container (max-width:760px) { .result-table,.result-table tbody,.result-table tr,.result-table td { display:block; width:100% }.result-table thead { display:none }.result-table tr { margin:12px 0; border:1px solid var(--line); border-radius:11px; overflow:hidden; background:#fff }.result-table td { display:grid; grid-template-columns:minmax(90px,30%) minmax(0,1fr); gap:10px; padding:10px 12px; border-bottom:1px solid var(--line); text-align:right }.result-table td:last-child { border-bottom:0 }.result-table td::before { content:attr(data-label); color:var(--muted); font-weight:700; font-size:10px }.result-table td[colspan] { display:block }.result-table td[colspan]::before { display:none } }
@keyframes spin { to { transform:rotate(360deg) } }
.toast { position:fixed; left:25px; bottom:25px; background:#25283a; color:#fff; border-radius:10px; padding:12px 17px; font-size:12px; opacity:0; transform:translateY(15px); pointer-events:none; transition:.25s; z-index:8 }
.toast.show { opacity:1; transform:none }.toast.error { background:#bb3948 }
.job-row { cursor:pointer; transition:background .15s }.job-row:hover,.job-row:focus { background:#faf9ff; outline:none }.job-detail-button { border:1px solid #d9d3f4; border-radius:8px; padding:6px 10px; background:#f4f1ff; color:var(--purple); font:600 11px inherit; cursor:pointer }.job-modal { position:fixed; inset:0; z-index:20; display:grid; place-items:stretch end }.job-modal.hidden { display:none }.job-modal-backdrop { position:absolute; inset:0; background:rgba(20,22,34,.48); backdrop-filter:blur(2px) }.job-modal-card { position:relative; width:min(760px,calc(100vw - 80px)); height:100vh; overflow:auto; background:var(--bg); box-shadow:-18px 0 50px rgba(15,17,30,.2); padding:24px }.job-modal-card>header { position:sticky; top:-24px; z-index:2; display:flex; align-items:center; justify-content:space-between; gap:15px; margin:-24px -24px 18px; padding:20px 24px; background:rgba(245,246,250,.97); border-bottom:1px solid var(--line); backdrop-filter:blur(8px) }.job-modal-card header h2 { margin:0 0 3px; font-size:19px }.job-modal-card header p { margin:0; color:var(--muted); font-size:11px; direction:ltr; text-align:right }.job-modal-close { width:36px; height:36px; border:0; border-radius:10px; background:#eceef5; color:#555d70; font-size:21px; cursor:pointer }.job-detail-content { display:grid; gap:16px }.job-detail-loading { min-height:280px; display:grid; place-items:center; color:var(--muted) }.job-detail-overview { display:grid; grid-template-columns:repeat(4,1fr); gap:9px }.job-detail-overview>div { min-width:0; padding:12px; border:1px solid var(--line); border-radius:11px; background:#fff }.job-detail-overview small,.job-detail-overview b { display:block }.job-detail-overview small { color:var(--muted); margin-bottom:7px }.job-detail-overview b { overflow:hidden; text-overflow:ellipsis; font-size:12px }.job-detail-progress,.job-result,.job-detail-content>section { padding:16px; border:1px solid var(--line); border-radius:13px; background:#fff }.job-detail-progress>div:first-child,.job-detail-section-head { display:flex; align-items:center; justify-content:space-between }.job-detail-progress .big-progress { margin-top:10px }.job-detail-content h3 { margin:0 0 12px; font-size:14px }.job-pages { display:grid; gap:8px }.job-pages>div { display:grid; grid-template-columns:90px 110px 1fr; align-items:center; gap:10px; padding:9px; border-radius:9px; background:#fafafd }.job-pages .progress { width:100% }.job-alert { padding:12px; border-radius:10px; font-size:11px; line-height:1.8 }.job-alert.error { border:1px solid #f0c8cd; background:#fff0f1; color:#a93644 }.job-alert.warning { border:1px solid #f0d697; background:#fff7e5; color:#8a6112 }.job-detail-actions,.job-artifacts { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:8px }.job-detail-actions .danger { padding:10px 15px }.job-result { display:grid; gap:13px }.job-detail-section-head h3 { margin:0 }.job-detail-section-head strong { color:var(--purple); font-size:17px }.job-artifacts a { text-decoration:none; font-size:11px }
.report-pdf-link { display:inline-flex; align-items:center; justify-content:center; width:max-content; border:0; border-radius:10px; padding:10px 14px; background:#fff0f1; color:#be3343; font:700 12px inherit; text-decoration:none; white-space:nowrap }.report-pdf-link:hover { background:#ffe2e5 }
.auth-screen { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:20px; background:radial-gradient(circle at top right,#30285c,#171a28 55%) }.auth-screen.hidden { display:none }.auth-card { width:min(430px,100%); padding:30px; border-radius:20px; background:#fff; box-shadow:0 30px 80px rgba(0,0,0,.35) }.auth-brand { margin:0 0 28px;color:var(--ink) }.auth-brand small { color:var(--muted) }.auth-card h2 { margin-bottom:5px }.auth-card form p { margin-bottom:22px;color:var(--muted) }.auth-card label { display:block; margin-bottom:15px }.auth-card button { margin-top:8px }.auth-error { margin-top:15px; padding:11px; border-radius:9px; background:#fff0f1; color:#b73545; font-size:12px }.sidebar-foot { display:flex; align-items:center; justify-content:space-between; gap:8px }.sidebar-foot b,.sidebar-foot small { display:block }.sidebar-foot small { color:#8f95aa;margin-top:2px }.sidebar-logout { border:0;border-radius:8px;padding:7px 9px;background:#292c40;color:#d7d9e4;cursor:pointer }.admin-report-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:18px }.admin-wide { margin-bottom:18px; min-width:0 }.admin-inline-form { display:flex; align-items:end; flex-wrap:wrap; gap:8px; margin:16px 0 }.admin-inline-form>input,.admin-inline-form>select { width:auto; min-width:140px; margin:0 }.scope-check { display:flex; align-items:center; gap:5px; padding:9px; border:1px solid var(--line); border-radius:8px }.scope-check input { display:inline; width:auto; margin:0 }.admin-sub { display:block; color:var(--muted); margin-top:3px }.user-active-toggle { border:0;border-radius:8px;padding:6px 9px;background:#ffeaec;color:#b63847;cursor:pointer }.user-active-toggle.active { background:#e7f8ef;color:#188c58 }.api-key-output { direction:ltr;text-align:left;white-space:pre-wrap;padding:12px;border-radius:9px;background:#171a28;color:#ecedf5 }.admin-client-list { display:grid;gap:7px }.admin-client { display:flex;align-items:center;gap:8px;padding:9px;border:1px solid var(--line);border-radius:9px }.admin-client>div { flex:1;min-width:0 }.admin-client b,.admin-client small { display:block }.admin-client small { color:var(--muted);overflow-wrap:anywhere }.admin-client .danger { padding:6px 9px }.admin-wide td { white-space:normal;vertical-align:top;overflow-wrap:anywhere }.admin-wide code { direction:ltr;font-size:10px }
@media(max-width:1550px) { .editor-grid { grid-template-columns:1fr }.editor-side { position:static; grid-template-columns:repeat(3,minmax(0,1fr)) } }
@media(max-width:1100px) { .editor-side { grid-template-columns:1fr } }
@media(max-width:1050px) { .stats { grid-template-columns:1fr 1fr }.cards { grid-template-columns:1fr 1fr }.editor-grid,.grid,.test-layout,.converter-grid,.crop-editor,.admin-report-grid { grid-template-columns:1fr }.crop-toolbar { grid-template-columns:1fr 1fr }.code-area { height:350px } }
@media(max-width:800px) { .question-card-head { grid-template-columns:auto 1fr 1fr }.question-head-actions { grid-column:3; grid-row:1 }.answer-builder .parts-head { display:none }.answer-builder .part-row { grid-template-columns:1fr 100px 75px 30px }.answer-builder .part-id { grid-column:1/-1 }.grading-grid,.grading-switches,.reference-image-grid { grid-template-columns:1fr }.rubric-field,.grading-switches { grid-column:auto } }
@media(max-width:900px) { .result-table,.result-table tbody,.result-table tr,.result-table td { display:block; width:100% }.result-table thead { display:none }.result-table tr { margin:12px 0; border:1px solid var(--line); border-radius:11px; overflow:hidden; background:#fff }.result-table td { display:grid; grid-template-columns:minmax(90px,30%) 1fr; gap:10px; padding:10px 12px; border-bottom:1px solid var(--line); text-align:right }.result-table td:last-child { border-bottom:0 }.result-table td::before { content:attr(data-label); color:var(--muted); font-weight:700; font-size:10px }.result-table td[colspan] { display:block }.result-table td[colspan]::before { display:none }.result-table .student-answer-cell { min-width:0; max-width:none } }
@media(max-width:700px) { .sidebar { width:70px; padding:20px 10px }.brand div,.nav:not(.active) { font-size:0 }.brand { margin-right:4px }.brand-mark { width:40px }.nav { padding:11px; text-align:center }.nav span { width:auto }.sidebar-foot { display:none } main { margin-right:70px; padding:0 15px 35px } header { height:85px }.stats,.cards,.form-grid,.crop-toolbar { grid-template-columns:1fr }.toolbar { gap:8px; flex-wrap:wrap }.toolbar-actions { width:100%; flex-wrap:wrap }.toolbar-actions button { flex:1 }.search { width:auto; flex:1 }.group-filter { width:100% }.bulk-exam-panel { align-items:stretch; flex-direction:column }.bulk-exam-panel .file-button { text-align:center }.editor-top { flex-wrap:wrap; gap:10px }.editor-actions { width:100% }.editor-actions .exam-score-summary { flex:1 }.crop-file-actions { flex-wrap:wrap }.page-layout-row { grid-template-columns:30px minmax(0,1fr) 32px; align-items:center }.page-layout-row label,.page-count { grid-column:2 }.page-layout-row .page-grip { grid-column:1; grid-row:1/4 }.page-layout-row .page-remove { grid-column:3; grid-row:1/4 }.question-card-head { grid-template-columns:1fr 1fr }.question-index { grid-column:1 }.question-head-actions { grid-column:2; grid-row:1 }.answer-builder .part-row { grid-template-columns:1fr 75px 30px }.answer-builder .part-type { grid-column:1 }.mini-head { align-items:flex-start; flex-direction:column } }
@media(max-width:600px) { .job-modal-card { width:calc(100vw - 70px); padding:15px }.job-modal-card>header { top:-15px; margin:-15px -15px 15px; padding:15px }.job-detail-overview { grid-template-columns:1fr 1fr }.job-pages>div { grid-template-columns:1fr auto }.job-pages .progress { grid-column:1/-1 } }
.grade-review-controls { display:grid;grid-template-columns:1fr 1fr 150px auto;gap:10px;align-items:end;margin:16px 0 }.grade-review-controls label { min-width:0 }.grade-review-controls label>input,.grade-review-controls label>select { margin-top:5px }.grade-review-controls .review-comment { grid-column:1/-1 }.review-full-credit { min-height:39px;align-self:end }.review-actions { display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:14px }.review-actions span { color:var(--purple);font-size:11px }.review-students input[type=checkbox] { width:auto }.review-students th:first-child { width:42px }
@media(max-width:800px) { .grade-review-controls { grid-template-columns:1fr 1fr }.grade-review-controls .review-comment { grid-column:1/-1 } }
