:root{color-scheme:dark;--bg: #181818;--surface: #1f1f1f;--surface-2: #252526;--editor: #1e1e1e;--input: #2a2a2a;--hover: #2a2d2e;--border: #333333;--border-strong: #454545;--text: #cccccc;--text-strong: #e7e7e7;--muted: #9d9d9d;--primary: #0e639c;--primary-hover: #1177bb;--accent: #0078d4;--ok: #89d185;--ok-bg: #1d3a24;--warning: #e2c08d;--warning-bg: #3a2f17;--danger: #f48771;--danger-bg: #3d1f1d;--info: #75beff;--info-bg: #0e2a44;--radius: 6px;--shadow: 0 1px 2px rgba(0, 0, 0, .4);font-family:Segoe UI,-apple-system,system-ui,Ubuntu,Roboto,sans-serif;color:var(--text);background:var(--bg);font-size:15px;line-height:1.5}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1{font-size:1.4rem;margin:0 0 .5rem}h2{font-size:1.15rem;margin:0 0 .75rem}h3{font-size:1rem;margin:0 0 .5rem}.muted{color:var(--muted)}.small{font-size:.85rem}.mono,code,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.nowrap{white-space:nowrap}.grow{flex:1}.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row-between{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.row-end{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.stack{display:flex;flex-direction:column;gap:16px}.two-cols>*{flex:1;min-width:220px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-size:.9rem}.field>span{color:var(--muted)}input,textarea,select{font:inherit;color:inherit;border:1px solid var(--border);border-radius:6px;padding:8px 10px;background:var(--input);width:100%}select,input[type=checkbox],input[type=range]{width:auto}textarea{resize:vertical}input:focus,textarea:focus,select:focus{outline:2px solid color-mix(in srgb,var(--primary) 35%,transparent);border-color:var(--primary)}.btn{font:inherit;font-weight:500;border-radius:6px;padding:7px 14px;border:1px solid transparent;cursor:pointer;white-space:nowrap}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:var(--surface-2);border-color:var(--border);color:var(--text)}.btn-secondary:hover:not(:disabled){background:var(--hover)}.btn-ghost{background:transparent;color:var(--muted)}.btn-ghost:hover{color:var(--text);background:var(--hover)}.btn-block{width:100%;margin-top:8px}.link{background:none;border:none;padding:0;font:inherit;color:var(--primary);cursor:pointer;text-decoration:underline}.link-danger{color:var(--danger)}.alert{border-radius:6px;padding:8px 12px;margin:8px 0;font-size:.9rem}.alert-error{background:var(--danger-bg);color:var(--danger)}.alert-warning{background:var(--warning-bg);color:var(--warning)}.alert-ok{background:var(--ok-bg);color:var(--ok)}.tag{display:inline-block;font-size:.78rem;padding:2px 8px;border-radius:999px;background:var(--hover);color:var(--muted);margin-left:6px;white-space:nowrap}.tag-ok{background:var(--ok-bg);color:var(--ok)}.tag-warning{background:var(--warning-bg);color:var(--warning)}.tag-info{background:var(--info-bg);color:var(--info)}.dot{display:inline-block;width:9px;height:9px;border-radius:50%}.dot-ok{background:#4ec9b0}.dot-bad{background:var(--danger)}.dot-off{background:#5a5a5a}.login-card{width:100%;max-width:380px}.consent-card{width:100%;max-width:720px}.consent-head{display:flex;gap:4px;margin:0 0 12px -6px;flex-wrap:wrap}.consent-label{font-weight:600;margin:14px 0 4px}.consent-list{margin:0;padding-left:20px}.consent-list li{margin-bottom:4px}.check{display:flex;gap:10px;align-items:flex-start;margin:18px 0 8px;padding:12px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);cursor:pointer}.check input{margin-top:4px}.exam-layout{height:100vh;display:flex;flex-direction:column}.exam-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.exam-title{display:flex;flex-direction:column;line-height:1.25}.exam-status{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.save-status{font-size:.85rem;color:var(--muted);min-width:130px;text-align:right}.save-pending,.save-saving{color:var(--muted)}.save-retrying,.save-conflict{color:var(--danger)}.timer{font-family:JetBrains Mono,ui-monospace,monospace;font-size:1.15rem;font-weight:600;padding:3px 10px;border-radius:6px;background:var(--hover);font-variant-numeric:tabular-nums}.timer-warning{background:var(--warning-bg);color:var(--warning)}.timer-danger{background:var(--danger-bg);color:var(--danger)}.banner{padding:8px 16px;font-size:.9rem;border-bottom:1px solid var(--border)}.banner-ok{background:var(--ok-bg);color:var(--ok)}.banner-warning{background:var(--warning-bg);color:var(--warning)}.banner-error{background:var(--danger-bg);color:var(--danger)}.exam-main{flex:1;min-height:0;display:grid;grid-template-columns:minmax(320px,2fr) 3fr;gap:12px;padding:12px}.pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;min-height:0;overflow:hidden}.pane-title{padding:8px 14px;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--border)}.pane-body{padding:14px 18px;overflow:auto;flex:1}.editor-wrap{flex:1;min-height:0}.editor-wrap>div{height:100%}.editor-wrap .cm-editor{height:100%;font-size:14px}.editor-wrap .cm-editor.cm-focused{outline:none}.editor-wrap .cm-scroller{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}@media(max-width:900px){.exam-layout{height:auto;min-height:100vh}.exam-main{grid-template-columns:1fr}.editor-pane{min-height:60vh}}.markdown{font-size:.95rem}.markdown>:first-child{margin-top:0}.markdown pre{background:var(--surface-2);padding:10px 12px;border-radius:6px;overflow:auto}.markdown code{background:var(--surface-2);padding:1px 4px;border-radius:4px;font-size:.88em}.markdown pre code{background:none;padding:0}.markdown table{border-collapse:collapse}.markdown th,.markdown td{border:1px solid var(--border);padding:4px 8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:16px;z-index:20}.modal{max-width:420px;width:100%}.admin-layout{min-height:100vh}.admin-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--border);gap:12px;flex-wrap:wrap}.exam-summary{display:flex;gap:16px;align-items:center;padding:10px 20px 0;font-size:.9rem;flex-wrap:wrap}.tabs{display:flex;gap:4px;padding:10px 20px 0;border-bottom:1px solid var(--border)}.tabs button{font:inherit;background:none;border:none;padding:8px 14px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:500}.admin-content{padding:20px;max-width:1400px}.form-grid{max-width:900px}.preview{border:1px solid var(--border);border-radius:6px;padding:12px 16px;min-height:200px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{font:inherit;font-size:.82rem;border:1px solid var(--border);background:var(--surface-2);border-radius:999px;padding:3px 10px;cursor:pointer;color:var(--muted)}.chip.active{border-color:var(--primary);color:var(--primary);background:var(--info-bg)}.table-scroll{overflow-x:auto;margin-top:12px}.events-scroll{max-height:520px;overflow-y:auto}.table{width:100%;border-collapse:collapse;font-size:.88rem}.table th{text-align:left;font-weight:600;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;padding:8px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface)}.table td{padding:7px 8px;border-bottom:1px solid var(--border);vertical-align:top}.table .actions{display:flex;gap:10px;white-space:nowrap}.row-muted td{color:var(--muted)}.table .payload code{font-size:.78rem;word-break:break-all;white-space:pre-wrap}.table .ua{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-paste_detected td,.event-drop_detected td{background:#33290f}.event-tab_hidden td,.event-window_blurred td{background:#232323}.event-exam_submitted td,.event-exam_expired td{background:var(--ok-bg)}.event-session_rejected td,.event-submission_rejected td,.event-code_save_rejected td{background:var(--danger-bg)}.code-block{background:var(--editor);border:1px solid var(--border);border-radius:6px;padding:12px;overflow:auto;font-size:.85rem;white-space:pre;margin:8px 0}.code-block.tall{max-height:460px}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:10;display:flex;justify-content:flex-end}.drawer{width:min(1100px,100%);height:100%;overflow-y:auto;background:var(--surface);padding:20px 24px;display:flex;flex-direction:column;gap:22px}.drawer-head h2{margin:0}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.work-pane{display:flex;flex-direction:column}.work-tabs{display:flex;align-items:center;gap:2px;padding:0 8px;border-bottom:1px solid var(--border);min-height:44px}.work-tab{font:inherit;font-size:.9rem;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:10px 14px;cursor:pointer;color:var(--muted)}.work-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.run-controls{margin-left:8px}.btn-run{background:#388a34;color:#fff;padding:5px 12px}.btn-run:hover{background:#369432}.panel{flex:1;min-height:0;display:flex;flex-direction:column}.panel[hidden]{display:none}.panel .editor-wrap{flex:1;min-height:0}.panel:not(.panel-code) .cm-content{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;padding:12px 6px}.console{height:34%;min-height:120px;display:flex;flex-direction:column;border-top:1px solid var(--border);background:var(--editor);color:var(--text)}.console-head{display:flex;justify-content:space-between;align-items:center;padding:4px 12px;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--border)}.console-head .link{color:var(--muted);font-size:.75rem;text-transform:none}.console-body{flex:1;margin:0;padding:8px 12px;overflow:auto;font-size:13px;white-space:pre-wrap;word-break:break-word}.console-stderr{color:#f48771}.console-system{color:#6a9955;font-style:italic}.lead{color:var(--muted)}.code-block.prose{white-space:pre-wrap;font-family:Inter,system-ui,sans-serif}body{color:var(--text)}h1,h2,h3,strong{color:var(--text-strong)}input::placeholder,textarea::placeholder{color:#6e6e6e}.exam-header,.admin-header{background:var(--bg);border-bottom-color:var(--border)}.exam-main{background:var(--border);gap:1px;padding:0}.pane{border-radius:0;border:none;background:var(--editor)}.statement-pane{background:var(--surface)}.pane-title{background:var(--surface);color:var(--muted);letter-spacing:.06em}.work-tabs{background:var(--surface-2);padding:0;border-bottom:1px solid var(--border);min-height:36px;gap:0}.work-tab{border:none;border-right:1px solid var(--border);border-top:1px solid transparent;margin:0;padding:8px 16px;background:#2d2d2d;color:#969696}.work-tab.active{background:var(--editor);color:#fff;border-top-color:var(--accent);font-weight:400}.run-controls{padding-right:8px}.card{background:var(--surface);border-color:var(--border)}.markdown code{color:#ce9178}.table th{background:var(--surface)}.timer{color:var(--text-strong)}.link{color:#3794ff}.drawer{background:var(--surface);border-left:1px solid var(--border)}.preview{background:var(--editor)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#79797966}::-webkit-scrollbar-thumb:hover{background:#646464b3}::-webkit-scrollbar-track{background:transparent}.exam-header{display:grid;grid-template-columns:1fr auto 1fr}.exam-submit{display:flex;justify-content:center}.exam-status{justify-content:flex-end}@media(max-width:900px){.exam-header{grid-template-columns:1fr}.exam-submit,.exam-status{justify-content:flex-start}}
