:root{--navy:#132c46;--navy2:#203f60;--blue:#1477e8;--blue2:#eaf4ff;--ink:#183452;--muted:#6983a0;--line:#d7e5f2;--bg:#f3f7fb;--green:#17805d;--red:#c9364e;--amber:#935d0c;--shadow:0 3px 15px #132c4609}
*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Segoe UI,Arial,sans-serif;color:var(--ink);line-height:1.5}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}a{color:#095dbb}h1,h2,h3,p{margin-top:0}h1{font-size:25px;line-height:1.25;margin-bottom:6px}h2{font-size:19px;margin-bottom:12px}h3{font-size:16px;margin-bottom:8px}small{font-size:12px}textarea{resize:vertical;min-height:86px}input,select,textarea{max-width:100%}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #8bc4ff;outline-offset:3px}[hidden]{display:none!important}.skip-link{position:fixed;left:12px;top:-80px;background:white;padding:10px 15px;z-index:20;border-radius:6px}.skip-link:focus{top:10px}.topbar{min-height:70px;background:linear-gradient(100deg,var(--navy),#244867);color:white;display:flex;align-items:center;gap:16px;padding:12px 26px;box-shadow:0 3px 12px #132c4620}.logo{width:42px;height:42px;border:2px solid #8ec9ff;border-radius:8px;display:grid;place-items:center;font-size:24px;flex-shrink:0}.brand{font-size:20px;font-weight:650}.topsub{border-left:1px solid #7893ad;padding-left:18px;color:#d5e7f8;font-size:15px}.topright{margin-left:auto;color:#d5e7f8;font-size:14px;display:flex;align-items:center;gap:15px}.topright .btn{color:white;background:#ffffff12;border-color:#ffffff50}.app{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:calc(100vh - 70px)}.app.signed-out{grid-template-columns:1fr}.sidebar{background:var(--navy);padding:24px 16px;display:flex;flex-direction:column}.navitem{width:100%;background:transparent;border:0;color:#c7d9eb;display:flex;align-items:center;gap:12px;text-align:left;padding:13px 15px;border-radius:7px;margin-bottom:7px;font-size:15px}.navitem:hover{background:#ffffff0d}.navitem.active{background:var(--blue);color:white}.navicon{width:20px;text-align:center;font-size:18px}.side-note{font-size:12px;line-height:1.8;color:#91abc5;margin-top:auto;padding:30px 10px 5px}.main{padding:25px 28px;min-width:0;max-width:1600px;width:100%;margin:0 auto}.heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:21px;flex-wrap:wrap}.subtitle,.muted{color:var(--muted);font-size:14px}.pill,.badge{display:inline-flex;align-items:center;padding:5px 11px;border-radius:20px;background:var(--blue2);color:#0d64bf;font-size:12px;font-weight:600;white-space:nowrap}.badge.success{color:var(--green);background:#e5f6ef}.badge.warn{color:var(--amber);background:#fff3db}.badge.error{color:var(--red);background:#fff0f2}.panel{background:white;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:18px}.panel-head{padding:15px 20px;border-bottom:1px solid var(--line);background:#fbfdff;display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap}.panel-head h2,.panel-head h3{margin:0}.content{padding:22px}.btn{min-height:40px;border:1px solid #bed3e8;background:white;color:var(--ink);border-radius:6px;padding:8px 15px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none;transition:background .12s}.btn:hover{background:#f0f6fc}.btn.primary{background:var(--blue);border-color:var(--blue);color:white}.btn.primary:hover{background:#0965d0}.btn.danger{color:var(--red);border-color:#e8bac3}.btn.small{min-height:34px;padding:5px 10px;font-size:13px}.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.actions.spread{justify-content:space-between}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:18px}.test-card{margin-bottom:0}.test-card h2{word-break:break-word}.test-card .content{display:flex;flex-direction:column;height:100%;gap:14px}.test-card .actions{margin-top:auto}.description{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.meta{display:flex;gap:10px 18px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.empty{text-align:center;padding:45px 20px}.empty h2{margin-bottom:8px}.empty p{color:var(--muted);margin-bottom:20px}.loading{padding:30px;text-align:center;color:var(--muted)}.notice{padding:12px 16px;border-radius:7px;background:#eaf4ff;border:1px solid #bad9f9;margin-bottom:18px;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}.notice.error{background:#fff0f2;border-color:#efc1ca;color:#9b2337}.notice.warn{background:#fff6e5;border-color:#efd4a1;color:#805007}.notice.success{background:#e9f7f1;border-color:#b8e1d0;color:#136846}.field{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:14px;font-weight:600}.field input,.field textarea,.field select,.filter-input{border:1px solid #bed3e8;border-radius:6px;padding:9px 11px;background:white;color:var(--ink);font-weight:400;min-height:41px;width:100%}.field small{color:var(--muted);font-weight:400}.field-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:15px}.field-row.two{grid-template-columns:repeat(2,minmax(0,1fr))}.stack{display:flex;flex-direction:column;gap:16px}.check{display:flex;align-items:flex-start;gap:9px;font-size:14px;font-weight:400}.check input{width:17px;height:17px;flex-shrink:0;accent-color:var(--blue);margin-top:3px}.login-panel{max-width:430px;margin:65px auto}.login-panel .content{padding:28px}.login-panel h1{font-size:23px}.login-panel form{margin-top:25px}.login-panel .btn{width:100%}.question-editor{padding:20px;border:1px solid var(--line);border-radius:8px;background:#fbfdff;margin:16px 0}.question-editor .field-row{grid-template-columns:minmax(0,1fr) minmax(160px,.5fr);align-items:start}.question-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:16px}.question-toolbar h3{margin:0}.options-editor{display:flex;flex-direction:column;gap:8px;margin-top:12px}.option-editor{display:flex;align-items:center;gap:9px}.option-editor>input[type=text]{flex:1;min-width:0;border:1px solid #bed3e8;border-radius:6px;padding:8px 10px}.option-editor>input[type=radio],.option-editor>input[type=checkbox]{width:18px;height:18px;accent-color:var(--green);flex-shrink:0}.option-order{display:flex;gap:4px}.filter-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.filter-form .field{flex:1;min-width:180px}.table-wrap{overflow:auto}.table{border-collapse:collapse;width:100%;font-size:13px;text-align:left}.table th{background:#f5f9fd;color:#456480;font-weight:600;white-space:nowrap}.table td,.table th{padding:11px 13px;border-bottom:1px solid var(--line);vertical-align:top}.table td{overflow-wrap:anywhere}.table tr:last-child td{border-bottom:0}.table tr.duplicate{background:#fff8eb}.table td .actions{flex-wrap:nowrap}.table input[type=checkbox]{accent-color:var(--blue);width:17px;height:17px}.credential-bar{padding:16px;background:#e9f7f1;border:1px solid #b8e1d0;border-radius:8px;margin-bottom:18px}.credential-bar p{font-size:14px;margin-bottom:10px}.test-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:20px;align-items:start}.sidepanel{padding:21px;position:sticky;top:20px}.timerlabel{font-size:13px;color:var(--muted);text-align:center}.timer{font-size:35px;font-weight:700;text-align:center;color:var(--navy);font-variant-numeric:tabular-nums;margin:4px 0 8px}.deadline{font-size:12px;text-align:center;color:var(--muted);margin-bottom:22px}.side-title{font-size:14px;font-weight:650;margin:18px 0 12px}.questiongrid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.qnum{border:1px solid #c7d9eb;border-radius:5px;min-height:35px;background:#f8fbfe;color:#607e9b;font-size:13px}.qnum.done{background:#e2f5ed;border-color:#9dd5bd;color:var(--green)}.qnum.current{background:var(--blue);border-color:var(--blue);color:white}.legend{display:flex;flex-direction:column;gap:7px;font-size:12px;color:var(--muted);margin:13px 0 18px}.legend span{display:flex;align-items:center;gap:6px}.dot{width:9px;height:9px;background:#c3d4e5;border-radius:50%;display:inline-block}.dot.blue{background:var(--blue)}.dot.green{background:var(--green)}.stats{border-top:1px solid var(--line);padding-top:4px}.statline{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin-bottom:9px}.statline span{color:var(--muted)}.progressrow{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--muted);margin-bottom:25px;flex-wrap:wrap}.progress{height:7px;background:#e5edf5;border-radius:6px;flex:1;min-width:90px;overflow:hidden}.progressbar{height:100%;background:var(--blue);border-radius:6px;transition:width .2s}.question{font-size:21px;font-weight:650;line-height:1.5;margin-bottom:15px;white-space:pre-wrap;overflow-wrap:anywhere}.selecthint{font-size:13px;color:var(--muted);margin:0 0 16px}.answers{display:flex;flex-direction:column;gap:11px;margin-bottom:20px}.answer{display:flex;align-items:center;gap:13px;border:1px solid #cadcec;background:#fbfdff;padding:14px 15px;border-radius:8px;cursor:pointer}.answer:hover{border-color:#91bcef;background:#f4f9ff}.answer.chosen{border-color:var(--blue);background:var(--blue2)}.answer input{accent-color:var(--blue);width:17px;height:17px;flex-shrink:0}.letter{width:29px;height:29px;display:grid;place-items:center;border-radius:6px;background:#eaf0f6;color:#7892ad;font-size:12px;font-weight:700;flex-shrink:0}.chosen .letter{background:var(--blue);color:white}.answertext{font-size:15px;overflow-wrap:anywhere;white-space:pre-wrap}.hintbox{background:#fff9eb;border:1px solid #efddb4;border-radius:7px;padding:11px 14px;font-size:13px;margin:18px 0 23px}.hintbox summary{cursor:pointer;color:#94712a}.hintbox p{margin:10px 0 0;white-space:pre-wrap}.save-status{font-size:13px;margin-bottom:15px;color:var(--muted);min-height:24px}.save-status.error{color:var(--red)}.save-status.saved{color:var(--green)}.save-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:15px}.result{padding:28px;text-align:center}.scorecircle{width:116px;height:116px;border:7px solid var(--blue);border-radius:50%;display:grid;place-items:center;font-size:30px;font-weight:750;margin:20px auto;color:var(--blue)}.scorecircle.passed{border-color:var(--green);color:var(--green)}.result-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:20px}.review{text-align:left;padding:16px 0;border-top:1px solid var(--line);margin-top:15px}.review h3{font-weight:600;white-space:pre-wrap;overflow-wrap:anywhere}.review p{font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:8px}.good{color:var(--green)}.bad{color:var(--red)}.footer-note{font-size:12px;color:#8198af;text-align:center;margin:23px 0 8px}dialog{border:1px solid var(--line);border-radius:10px;padding:0;color:var(--ink);max-width:min(850px,calc(100vw - 28px));width:700px;max-height:90vh;box-shadow:0 15px 60px #132c4640}dialog::backdrop{background:#132c4690}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:18px 22px;border-bottom:1px solid var(--line);background:#fbfdff}.dialog-head h2{margin:0}.dialog-body{padding:22px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:1px solid var(--line);flex-wrap:wrap}.student-picks{max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:6px;padding:10px;margin:15px 0}.student-picks .check{padding:7px}.full-width{width:100%}.preview-question{padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}.preview-question:last-child{border-bottom:0}.preview-correct{font-size:12px;color:var(--green)}.wordbreak{overflow-wrap:anywhere;white-space:pre-wrap}
@media(min-width:1500px){.main{padding:30px 38px}}
@media(max-width:1050px){.app{grid-template-columns:195px minmax(0,1fr)}.main{padding:22px 20px}.test-layout{grid-template-columns:minmax(0,1fr) 235px}.sidepanel{padding:16px}.field-row{grid-template-columns:repeat(2,minmax(0,1fr))}.topsub{display:none}.brand{font-size:18px}}
@media(max-width:760px){.topbar{padding:12px 15px;gap:10px;flex-wrap:wrap}.brand{font-size:17px;flex:1}.logo{width:34px;height:34px;font-size:20px}.topright{margin-left:44px;width:calc(100% - 44px);justify-content:space-between;font-size:12px}.topright:empty{display:none}.app{display:block}.sidebar{padding:10px 12px}.sidebar nav{display:flex;gap:5px;overflow-x:auto}.navitem{width:auto;flex:1;min-width:110px;margin:0;justify-content:center;padding:10px;font-size:13px}.side-note{display:none}.main{padding:19px 14px}.heading{margin-bottom:16px}h1{font-size:22px}.content{padding:17px}.test-layout{display:flex;flex-direction:column}.test-layout>.panel{width:100%}.sidepanel{position:static;order:-1;margin-bottom:0}.sidepanel .timerlabel,.sidepanel .timer,.sidepanel .deadline{display:inline-block;vertical-align:middle;margin:0 10px 8px 0;text-align:left}.sidepanel .timer{font-size:25px}.sidepanel .legend{flex-direction:row;flex-wrap:wrap;margin-bottom:10px}.sidepanel .stats{display:none}.sidepanel .side-title{margin:8px 0}.questiongrid{grid-template-columns:repeat(10,minmax(0,1fr));gap:5px}.qnum{min-width:0}.sidepanel>.btn{margin-top:10px}.question{font-size:18px}.field-row,.field-row.two{grid-template-columns:1fr}.question-editor .field-row{grid-template-columns:1fr}.question-editor{padding:14px}.option-editor{flex-wrap:wrap}.option-editor>input[type=text]{flex-basis:calc(100% - 32px)}.option-order{margin-left:27px}.card-grid{grid-template-columns:1fr}.login-panel{margin:25px auto}.answer{padding:12px;gap:10px}.letter{display:none}.dialog-body{padding:16px}.filter-form .btn{width:100%}.result{padding:20px}.footer-note{font-size:11px}.badge{white-space:normal}.notice{font-size:13px}}
@media(max-width:390px){.questiongrid{grid-template-columns:repeat(5,minmax(0,1fr))}.navicon{display:none}.navitem{min-width:90px}.btn{padding:8px 12px}.brand{font-size:15px}}
@media print{.topbar,.sidebar,.actions,.result-actions,.footer-note,.save-controls,dialog,.notice,.skip-link{display:none!important}.app{display:block}.main{padding:0}.panel{box-shadow:none;border-color:#ddd}.review{break-inside:avoid}.result{text-align:left}}
