:root{font-family:Inter,'Segoe UI',Arial,sans-serif;color:#17233e;background:#f3f6fb;line-height:1.5;font-size:16px}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:#1d52b1}a:hover{text-decoration:underline}
.hidden{display:none!important}.shell{max-width:1220px;margin:0 auto;padding:24px 24px 80px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:28px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:#142345;font-size:1.18rem;font-weight:750}.brand-mark{display:grid;place-items:center;background:#173b8b;color:#fff;width:44px;height:44px;border-radius:11px;font-weight:800;font-size:1.2rem}.topbar-right{display:flex;gap:14px;align-items:center;color:#53637c;flex-wrap:wrap}.eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;font-weight:750;color:#3862aa;margin:0 0 5px}.page-heading{display:flex;justify-content:space-between;gap:20px;align-items:end;margin:0 0 20px}.page-heading h1{font-size:clamp(1.55rem,3vw,2.2rem);letter-spacing:-.025em;margin:0}.muted{color:#65738b}.small{font-size:.875rem}.panel{background:white;border:1px solid #e1e7f0;border-radius:15px;box-shadow:0 5px 25px #1a32620a;padding:23px;margin-bottom:18px}.panel h2{font-size:1.18rem;margin:0 0 16px}.panel h3{margin:0 0 10px}.section-header{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 15px}.section-header h2{margin:0}.btn{border:1px solid transparent;background:#173b8b;color:white;border-radius:9px;padding:10px 16px;min-height:42px;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none}.btn:hover{background:#2452ac;text-decoration:none}.btn.secondary{background:white;border-color:#cbd7ed;color:#214582}.btn.secondary:hover{background:#edf3fc}.btn.danger{background:#fff1f1;color:#ac2736;border-color:#f3ced3}.btn.danger:hover{background:#ffe7e7}.btn.success{background:#067664}.btn.success:hover{background:#078e76}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.small-btn{min-height:33px;padding:5px 10px;font-size:.86rem}.text-btn{border:0;background:none;color:#27519b;font-weight:650;padding:4px}.text-btn:hover{text-decoration:underline}.field{display:block;margin-bottom:15px}.field>span{display:block;margin-bottom:5px;font-size:.9rem;font-weight:650;color:#334363}.input{width:100%;border:1px solid #c9d3e3;border-radius:9px;background:white;min-height:43px;padding:9px 12px;color:#17233e}.input:focus{outline:3px solid #b9cef5;outline-offset:1px;border-color:#3967c3}textarea.input{resize:vertical;min-height:90px}textarea.code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;min-height:300px;tab-size:4}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.notice{padding:12px 15px;border-radius:9px;background:#ecf4ff;color:#244879;border:1px solid #d5e6fc;margin:12px 0}.notice.error{background:#fff1f1;border-color:#f3c5c9;color:#a32435}.notice.ok{background:#eaf9f4;border-color:#bce8d7;color:#075d51}.badge{display:inline-flex;align-items:center;border-radius:50px;background:#e8f0ff;color:#244d9b;padding:4px 10px;font-size:.83rem;font-weight:700;white-space:nowrap}.badge.pending{background:#fff1d9;color:#875400}.badge.graded{background:#e6f8f1;color:#08725a}.badge.retry{background:#f0eafa;color:#6540a2}.tabs{display:flex;gap:5px;overflow-x:auto;border-bottom:1px solid #d7e1ef;margin-bottom:21px}.tab{border:0;border-bottom:3px solid transparent;background:none;padding:11px 15px;color:#65738b;font-weight:650;white-space:nowrap}.tab.active{border-color:#1e54ae;color:#173b8b}.list{display:grid;gap:10px}.list-item{padding:15px 17px;border:1px solid #e0e7f2;border-radius:11px;background:#fff;display:flex;justify-content:space-between;gap:14px;align-items:center}.list-item:hover{border-color:#acc5ef;background:#fcfdff}.list-item strong{display:block}.list-item p{margin:3px 0 0;color:#66748c;font-size:.91rem}.list-item .actions{justify-content:end}.count{display:inline-grid;place-items:center;min-width:31px;height:31px;border-radius:8px;background:#e9f0ff;color:#24519e;font-size:.9rem;font-weight:750;margin-right:11px}.empty{padding:28px;border:1px dashed #cbd7e8;border-radius:12px;text-align:center;color:#66738b;background:#fbfcff}.grid-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;vertical-align:top;border-bottom:1px solid #e7ecf4;padding:12px 9px;font-size:.91rem}th{color:#5d6d84;font-weight:700}code,pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0}pre.code-view{background:#16233b;color:#e4eeff;padding:14px;border-radius:9px;max-height:350px;overflow:auto}.console{background:#17243b;color:#e5eeff;min-height:115px;max-height:250px;overflow:auto;padding:13px;border-radius:9px;white-space:pre-wrap;font-family:ui-monospace,Consolas,monospace;font-size:.91rem}.task-copy{line-height:1.65}.task-copy h2{margin:0 0 15px}.task-detail{background:#f6f9fe;padding:13px 16px;border-radius:9px;margin:9px 0}.task-detail strong{display:block;color:#31518e}.results{margin-top:15px}.result{border-left:4px solid #c9d5e6;padding:9px 14px;background:#f8faff;margin:8px 0;border-radius:4px}.result.pass{border-color:#0a9c7a}.result.fail{border-color:#d44852}.debug-panel{border:1px solid #efd490;background:#fffbef;border-radius:10px;padding:15px;margin:15px 0}.debug-panel table{background:white}.CodeMirror{border:1px solid #c9d3e3;border-radius:9px;font-size:15px;height:auto;min-height:290px}.cm-debug-line{background:#fff0ae!important}.auth-layout{min-height:100vh;display:grid;grid-template-columns:minmax(260px,43%) 1fr}.auth-side{background:#173b8b;color:#fff;padding:7vh max(35px,8vw);display:flex;flex-direction:column;justify-content:space-between}.auth-side .brand{color:#fff}.auth-side h1{font-size:clamp(2rem,3.1vw,3.1rem);line-height:1.14;letter-spacing:-.03em;max-width:550px}.auth-side p{max-width:475px;color:#d6e4ff}.auth-main{display:flex;align-items:center;justify-content:center;padding:28px}.auth-card{width:min(100%,440px)}.auth-card h2{font-size:1.75rem;line-height:1.2;margin:0 0 8px}.auth-card form{margin-top:25px}.auth-card .btn{width:100%}.auth-switch{margin-top:18px;color:#5b6b84}.credit{font-size:.78rem;color:#6a7790;text-align:center;padding:24px 0}.auth-side .credit{text-align:left;color:#b6caed}.spinner{opacity:.7}.drop-zone{border:2px dashed #b9cae4;border-radius:11px;padding:21px;display:block;text-align:center;cursor:pointer;background:#f9fbff}.drop-zone:hover{border-color:#587fcb}.drop-zone input{display:none}select.input{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #82b8ff;outline-offset:3px}
@media(max-width:800px){.auth-layout{grid-template-columns:1fr}.auth-side{padding:22px 25px}.auth-side h1,.auth-side p{display:none}.auth-side .credit{display:none}.auth-main{align-items:start;padding:40px 20px}.grid-two{grid-template-columns:1fr}.shell{padding:17px 15px 60px}.topbar{align-items:start}.page-heading{align-items:start;flex-direction:column}.list-item{align-items:start;flex-direction:column}.list-item .actions{justify-content:start}.field-row{grid-template-columns:1fr}}
