:root{--bg: #f6f7f9;--panel: #ffffff;--ink: #1b1f24;--muted: #5d6673;--line: #d9dee5;--accent: #2456c7;--accent-ink: #ffffff;--accent-soft: #e8eefb;--warn: #b8860b;--danger: #c0392b;--ok: #1f8a4c;--radius: 10px;--font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--reading: Georgia, "Times New Roman", serif}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);font-size:16px;line-height:1.45}#app{min-height:100%}a{color:var(--accent)}h1,h2,h3{margin:0 0 .5em;line-height:1.2}h1{font-size:1.6rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 .8em}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:.5em 1em}button:hover{border-color:#b8c0cc}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.primary:hover{filter:brightness(1.08)}button.danger{color:var(--danger);border-color:#e3b4ae}button.ghost{border-color:transparent;background:transparent}button.small{padding:.3em .7em;font-size:.9rem}button.big{padding:.9em 2em;font-size:1.15rem}input[type=text],input[type=number],input[type=password],select,textarea{border:1px solid var(--line);border-radius:8px;padding:.5em .7em;background:var(--panel);width:100%}textarea{resize:vertical;min-height:4em}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}label{display:block;font-size:.9rem;color:var(--muted);margin-bottom:.25em}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:.75rem}.muted{color:var(--muted)}.small{font-size:.9rem}.tag{display:inline-block;padding:.1em .6em;border-radius:999px;font-size:.8rem;font-weight:600;background:#e9ecf1;color:var(--muted)}.tag.open{background:#dff3e6;color:var(--ok)}.tag.closed{background:#f5e1dd;color:var(--danger)}.tag.draft{background:#eee;color:#666}.tag.frozen{background:#fff1cc;color:#8a6300}.tag.active{background:#dde8ff;color:var(--accent)}.tag.submitted{background:#dff3e6;color:var(--ok)}.tag.not_started{background:#eee;color:#777}.err{color:var(--danger);background:#fbeae7;padding:.6em .9em;border-radius:8px}.note{background:#fff8e1;border:1px solid #f0e0a0;padding:.7em 1em;border-radius:8px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem}.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.center .card{width:min(520px,100%)}table{border-collapse:collapse;width:100%;background:var(--panel)}th,td{text-align:left;padding:.55em .7em;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.85rem;color:var(--muted);font-weight:600;background:#f2f4f7}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#f7f9fc}.md img{max-width:100%;height:auto;border-radius:6px}.md pre{background:#f2f4f7;padding:.7em;border-radius:6px;overflow:auto}.md blockquote{margin:.5em 0;padding-left:.9em;border-left:3px solid var(--line);color:#444}.md table td,.md table th{border:1px solid var(--line)}.code-input{font-size:2rem;letter-spacing:.3em;text-transform:uppercase;text-align:center;font-weight:700}.pin-input{font-size:2rem;letter-spacing:.5em;text-align:center;font-weight:700}.name-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem;max-height:50vh;overflow:auto;padding:2px}.name-grid button{text-align:left;padding:.7em .9em}.name-grid button.sel{border-color:var(--accent);background:var(--accent-soft);font-weight:600}.runner{height:100vh;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.runner.locked,.runner.locked .reader,.runner.locked .qtext,.runner.locked .choices{user-select:none;-webkit-user-select:none}.runner textarea,.runner input{user-select:text;-webkit-user-select:text}.topbar{display:flex;align-items:center;gap:1rem;padding:.45rem 1rem;background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}.topbar .title{font-weight:600;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .timer{font-variant-numeric:tabular-nums;font-weight:700;padding:.2em .6em;border-radius:6px;background:#eef1f6}.topbar .timer.low{background:#fde7e4;color:var(--danger)}.topbar .save{font-size:.85rem;color:var(--muted);min-width:5em;text-align:right}.split{flex:1 1 auto;display:flex;min-height:0}.split .reader{display:flex;flex-direction:column;min-width:240px;background:var(--panel);border-right:1px solid var(--line)}.split .divider{flex:0 0 8px;cursor:col-resize;background:#e4e8ee;border-left:1px solid var(--line);border-right:1px solid var(--line)}.split .divider:hover,.split .divider.drag{background:#c9d3e2}.split .work{flex:1 1 auto;min-width:280px;display:flex;flex-direction:column;min-height:0}.reader .tabs{display:flex;gap:2px;padding:.4rem .6rem 0;border-bottom:1px solid var(--line);background:#f2f4f7;align-items:flex-end;overflow-x:auto}.reader .tabs button{border-radius:8px 8px 0 0;border-bottom:none;background:#e6eaf0;padding:.45em .9em;white-space:nowrap}.reader .tabs button.on{background:var(--panel);font-weight:600;position:relative;top:1px}.reader .tabs .spacer{flex:1}.reader .tabs .zoom{display:flex;gap:2px;padding-bottom:4px}.reader .tabs .zoom button{border-radius:6px;border-bottom:1px solid var(--line);padding:.2em .6em}.reader .body{flex:1;overflow:auto;padding:1rem 1.4rem 2rem;font-family:var(--reading);line-height:1.6}.reader .body h2.ptitle{font-family:var(--font);font-size:1.1rem;color:var(--muted);margin-bottom:.8em}.numbered .ln{display:flex;gap:.8em}.numbered .ln .n{flex:0 0 2.2em;text-align:right;color:#9aa3ad;font-family:var(--font);font-size:.8em;padding-top:.25em;-webkit-user-select:none;user-select:none}.numbered .ln .t{flex:1}.numbered .ln.blank{height:.8em}.numbered.paragraphs .ln{margin-bottom:.8em}.work .qscroll{flex:1;overflow:auto;padding:1rem 1.4rem}.work .qcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.3rem;margin-bottom:1rem}.work .qhead{display:flex;justify-content:space-between;color:var(--muted);font-size:.85rem;margin-bottom:.4em}.work .qtext{font-size:1.05rem;margin-bottom:.8em}.work .qtext.pinned{position:sticky;top:-1rem;background:var(--panel);padding:.5em 0;z-index:1;border-bottom:1px solid var(--line)}.choices{display:flex;flex-direction:column;gap:.5rem}.choices label{display:flex;gap:.7em;align-items:flex-start;padding:.6em .8em;border:1px solid var(--line);border-radius:8px;cursor:pointer;color:var(--ink);font-size:1rem;margin:0}.choices label:hover{background:#f7f9fc}.choices label.sel{border-color:var(--accent);background:var(--accent-soft)}.choices input{margin-top:.3em}.choices .letter{font-weight:700;color:var(--muted);min-width:1.3em}.essay{width:100%;min-height:40vh;font-family:var(--reading);font-size:1.05rem;line-height:1.6;padding:.9em 1em}.short{width:100%;min-height:6em;font-size:1rem}.wc{display:flex;justify-content:space-between;color:var(--muted);font-size:.85rem;margin-top:.4em}.wc .need{color:var(--warn)}.wc .met{color:var(--ok)}.spell{margin-top:.5rem}.spell-list{list-style:none;padding:0;margin:.5rem 0 0;border:1px solid var(--line);border-radius:8px;background:#fbfcfe;max-height:14rem;overflow:auto}.spell-list li{display:flex;gap:1rem;align-items:center;padding:.35em .7em;border-bottom:1px dashed var(--line)}.spell-list li .w{min-width:9em;font-weight:600;color:var(--danger);font-family:var(--reading)}.spell-list li .s{display:flex;gap:.3rem;flex-wrap:wrap;align-items:center}.navbar{flex:0 0 auto;display:flex;align-items:center;gap:.6rem;padding:.5rem 1rem;background:var(--panel);border-top:1px solid var(--line)}.navbar .pills{flex:1;display:flex;gap:4px;flex-wrap:wrap}.navbar .pills button{width:2.1em;height:2.1em;padding:0;border-radius:6px;font-size:.85rem}.navbar .pills button.done{background:#dff3e6;border-color:#b9e2c7}.navbar .pills button.cur{outline:2px solid var(--accent)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14181ff5;color:#fff;display:flex;align-items:center;justify-content:center;z-index:100;padding:2rem;text-align:center}.overlay .box{max-width:560px}.overlay h1{font-size:2rem}.overlay .muted{color:#c7ccd4}@media print{body *{display:none!important}body:after{content:"Printing is disabled during a test.";display:block;padding:2rem;font-size:1.5rem}}.tshell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.tnav{background:#1b2230;color:#d7dde6;padding:1.2rem .9rem;display:flex;flex-direction:column;gap:.25rem}.tnav .brand{font-weight:700;font-size:1.15rem;color:#fff;margin-bottom:1rem;padding:0 .5rem}.tnav a{color:#d7dde6;text-decoration:none;padding:.5em .7em;border-radius:8px;display:block}.tnav a:hover,.tnav a.on{background:#2b3546;color:#fff}.tmain{padding:1.5rem 2rem;max-width:1400px}.thead{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.2rem;flex-wrap:wrap}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}@media (max-width: 1000px){.grid2,.tshell{grid-template-columns:1fr}.tnav{flex-direction:row;flex-wrap:wrap}}.builder{display:grid;grid-template-columns:minmax(300px,2fr) minmax(380px,3fr);gap:1.2rem;align-items:start}@media (max-width: 1100px){.builder{grid-template-columns:1fr}}.item{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem;margin-bottom:.8rem}.item.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.item .ihead{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem}.item .ihead .t{font-weight:600}.iconbtns{display:flex;gap:2px}.iconbtns button{padding:.15em .5em;font-size:.85rem}.choice-edit{display:flex;gap:.5rem;align-items:center;margin-bottom:.35rem}.choice-edit input[type=text]{flex:1}.chips{display:flex;gap:.4rem;flex-wrap:wrap}.chips label{display:inline-flex;align-items:center;gap:.35em;border:1px solid var(--line);border-radius:999px;padding:.2em .7em;cursor:pointer;margin:0;color:var(--ink);font-size:.85rem}.chips label.on{border-color:var(--accent);background:var(--accent-soft)}.field{margin-bottom:.7rem}.field.inline{display:flex;gap:1rem;align-items:center}.field.inline label{margin:0}.bigcode{font-size:4rem;font-weight:800;letter-spacing:.25em;text-align:center;font-family:ui-monospace,Menlo,Consolas,monospace}.qr{display:flex;justify-content:center;margin:1rem 0}.checklist li{margin-bottom:.5em}.statusdot{display:inline-block;width:.6em;height:.6em;border-radius:50%;background:#bbb;margin-right:.4em}.statusdot.live{background:var(--ok)}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(720px,95vw);background:var(--panel);border-left:1px solid var(--line);box-shadow:-8px 0 30px #0000001f;padding:1.3rem 1.5rem;overflow:auto;z-index:50}.timeline{font-size:.9rem}.timeline li{padding:.2em 0;border-bottom:1px dashed var(--line);display:flex;gap:1em}.timeline .at{color:var(--muted);min-width:7em;font-variant-numeric:tabular-nums}.answerbox{white-space:pre-wrap;background:#f7f9fc;border:1px solid var(--line);border-radius:8px;padding:.7em .9em;font-family:var(--reading)}.saveind{font-size:.85rem;color:var(--muted)}.saveind.dirty{color:var(--warn)}.saveind.err{color:var(--danger);background:none;padding:0}.pinslip{display:inline-block;border:1px dashed #999;padding:.6em 1em;margin:.3em;width:11rem}.pinslip .p{font-size:1.6rem;font-weight:700;letter-spacing:.2em}@media print{.tshell .tnav,.thead button,.noprint{display:none!important}.tshell{grid-template-columns:1fr}}
