
:root{--blue:#0b5bd3;--blue2:#173b77;--bg:#eef5ff;--text:#1d2633;--muted:#687386;--border:#dbe6f5;--green:#168c5a;--orange:#d97706;--red:#c2413b;--shadow:0 8px 24px rgba(25,55,95,.10)}
*{box-sizing:border-box}html,body{margin:0;min-width:0}body{font-family:Arial,Helvetica,sans-serif;background:linear-gradient(180deg,#eef5ff,#f8fbff 46%,#fff);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer}.topbar{position:sticky;top:0;z-index:30;background:linear-gradient(135deg,var(--blue2),var(--blue));color:white;padding:11px 14px;box-shadow:0 2px 12px rgba(0,0,0,.13)}.topbar-inner{max-width:1180px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{font-size:24px;font-weight:900;text-align:center}.brand small{display:block;font-size:12px;opacity:.85}.linkbtn,.primary,.secondary,.success,.danger{min-height:44px;border-radius:12px;padding:10px 14px;font-weight:900;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;border:0}.primary{background:var(--blue);color:white}.secondary{background:#f2f6fb;color:var(--blue2);border:1px solid #cbd8e9}.success{background:var(--green);color:#fff}.danger{background:var(--red);color:#fff}.ghost{color:#fff;border:1px solid rgba(255,255,255,.45);background:rgba(255,255,255,.12);border-radius:11px;padding:9px 12px;text-decoration:none;font-weight:800}main{max-width:1180px;margin:auto;padding:18px 12px 40px}.card{background:white;border:1px solid var(--border);border-radius:18px;padding:18px;box-shadow:var(--shadow);margin-bottom:14px}.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.pill{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef5ff;color:#174e98;font-size:13px;font-weight:800}.tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:14px 0}.tabs button{min-height:58px;border:1px solid #cfdaea;background:#fff;color:var(--blue2);border-radius:14px;padding:8px;font-weight:900}.tabs button.active{background:var(--blue);color:#fff}.panel{display:none}.panel.active{display:block}.field{display:grid;gap:6px}.field label{font-weight:900;color:var(--blue2)}select,input{min-height:44px;border:1px solid #cbd8e9;border-radius:11px;padding:9px 11px;background:#fff}.selectbar{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}.list{display:grid;gap:10px}.row{border:1px solid var(--border);border-radius:14px;padding:13px;background:#fff;display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.status-valid{background:#d8f0d8}.status-progress{background:#ffe4b0}.modal{position:fixed;inset:0;background:rgba(10,24,45,.55);display:none;align-items:flex-start;justify-content:center;padding:12px;overflow:auto;z-index:100}.modal.active{display:flex}.modal-shell{width:min(1000px,100%);background:white;border-radius:18px;padding:12px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;position:sticky;top:0;background:white;padding:4px 0 10px;z-index:2}.pages{display:grid;gap:14px}.pages img{width:100%;display:block;background:#fff;border:1px solid #ccd5e3;border-radius:8px}.login{max-width:620px;margin:30px auto;text-align:center}.code{font-size:28px;letter-spacing:.18em;text-align:center;width:100%;max-width:360px}.student-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:14px 0}.student-nav button{min-height:60px;border:1px solid #cfdaea;background:#fff;color:var(--blue2);border-radius:14px;font-weight:900;padding:8px}.student-nav button.active{background:var(--blue);color:#fff}.student-panel{display:none}.student-panel.active{display:block}.demo-codes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}.demo-code{border:1px solid #d4e0ee;border-radius:12px;padding:10px;background:#f8fbff}.demo-code b{display:block;font-size:20px;color:var(--blue2)}
@media(max-width:850px){.grid{grid-template-columns:1fr 1fr}.tabs{grid-template-columns:repeat(2,1fr)}.student-nav{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.grid,.selectbar,.demo-codes{grid-template-columns:1fr}.brand{font-size:20px}.topbar-inner{align-items:flex-start}.row{align-items:flex-start}}
.teacher-gate{position:fixed;inset:0;z-index:500;background:linear-gradient(180deg,#eaf3ff,#f8fbff 55%,#fff);display:flex;align-items:center;justify-content:center;padding:18px;overflow:auto}.auth-card{width:min(520px,100%);background:#fff;border:1px solid var(--border);border-radius:20px;padding:22px;box-shadow:0 18px 50px rgba(25,55,95,.16)}.auth-card h2{margin:12px 0}.auth-brand{color:var(--blue2);margin-bottom:10px}.teacher-code-display{font-size:34px;letter-spacing:.22em;font-weight:900;text-align:center;color:var(--blue2);background:#eef5ff;border:2px dashed #9fbee9;border-radius:14px;padding:14px;margin:12px 0 18px}.wide-btn{width:100%;margin-top:14px}.text-link-btn{border:0;background:transparent;color:var(--blue);font-weight:900;padding:12px 4px}.error-msg{color:var(--red);font-weight:800;min-height:22px;margin-top:8px}.recovery-question{font-size:18px;font-weight:900;color:var(--blue2);background:#f3f7fd;border-radius:12px;padding:12px}.small-note{font-size:12px;margin-bottom:0}.tabs{grid-template-columns:repeat(6,minmax(0,1fr))}@media(max-width:850px){.tabs{grid-template-columns:repeat(2,1fr)}}
