:root{--ll-navy: #1F2A44;--ll-gold: #C59B4F;--bg: #F7F8FA;--card: #FFFFFF;--border: #E5E7EB;--border-soft: #EEF2F7;--text: #111827;--muted: #6B7280;--primary: var(--ll-navy);--primary-hover: #162038;--accent: var(--ll-gold);--accent-hover: #B6893C;--focus: rgba(31, 42, 68, .28);--danger-bg: #fff5f5;--danger-border: #fecaca;--danger-text: #7f1d1d;--shadow: 0 1px 2px rgba(0,0,0,.04)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;overflow-anchor:none}} #root{max-width:none;margin:0;padding:0;text-align:initial}.page{min-height:100vh}.container{max-width:1100px;margin:0 auto;padding:0 14px}.containerWide{max-width:1400px;margin:0 auto;padding:0 14px}.appMain{padding-top:40px;padding-bottom:48px}.appHeader{position:sticky;top:0;z-index:999;background:#fff;border-bottom:1px solid var(--border-soft)}.appHeaderInner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 0}.brand{display:flex;flex-direction:column;gap:2px;min-width:180px}.brandName{font-weight:900;letter-spacing:-.02em;font-size:18px;line-height:1.1;color:var(--text)}.brandSub{color:var(--muted);font-size:13px;font-weight:700}.brandLogo{height:42px;width:auto;display:block}.headerActions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.navLink{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;border:1px solid var(--border);background:#f9fafb;color:var(--text);text-decoration:none;font-weight:800;font-size:13px}.navLink:hover{background:#fff}.navLink-active{background:var(--primary);border-color:var(--primary);color:#fff}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.mainGrid{display:grid;gap:12px;align-items:start;grid-template-columns:1fr}@media(min-width:980px){.mainGrid{grid-template-columns:420px 1fr}}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:0 6px 18px #0000000f;overflow:hidden}.cardHead{padding:12px 14px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:10px}.cardTitle{font-weight:750}.cardBody{padding:14px;display:grid;gap:10px}.muted{color:var(--muted)}.small{font-size:12px;color:var(--muted)}.pill{display:inline-block;padding:4px 10px;border-radius:999px;background:#f3f4f6;border:1px solid var(--border);font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.field{display:grid;gap:6px}.label{font-size:12px;color:#374151}.input,.select,.textarea{width:100%;padding:10px;border-radius:10px;border:1px solid var(--border);outline:none;background:#fff}.textarea{resize:vertical;min-height:84px}.btn:focus-visible,.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.btn{padding:9px 12px;border-radius:10px;font-weight:650;font-size:13px;cursor:pointer;border:1px solid rgba(31,42,68,.14);background:#fff;color:var(--text);transition:background .12s ease,border-color .12s ease,transform .02s ease}.btn:hover{border-color:#1f2a4438}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-soft{background:#1f2a440f;border-color:#1f2a4429}.btn-soft:hover{background:#1f2a441a}.btn-ghost{background:#fff}.btn-ghost:hover{background:#f3f4f6}.btn-accent{background:var(--accent);border-color:var(--accent);color:#1b1b1b}.btn-accent:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.errorBox{margin-top:10px;border:1px solid var(--danger-border);background:var(--danger-bg);padding:10px;border-radius:12px;color:var(--danger-text)}.listPanel{border:1px solid var(--border-soft);border-radius:12px;padding:10px;background:#fafafa;max-height:200px;overflow:auto}.listRow{padding:8px 0;border-top:1px solid #eee}.listRow:first-child{border-top:none}.listRowTop{display:flex;justify-content:space-between;gap:10px}.modalOverlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;padding:14px;z-index:9999}.modal{width:min(560px,100%);background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:14px;box-shadow:0 12px 36px #00000038;overflow:hidden}.modalHead{padding:12px 14px;border-bottom:1px solid rgba(0,0,0,.06);display:flex;align-items:center;justify-content:space-between;gap:10px}.modalTitle{font-weight:850}.modalBody{padding:14px;display:grid;gap:10px}.modalFoot{padding:14px;border-top:1px solid rgba(0,0,0,.06);display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(0,0,0,.15);border-top-color:#000000a6;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.rosterPanel{background:#11182708;border:1px solid rgba(0,0,0,.06);border-radius:12px;padding:10px}.rosterList{display:grid;gap:8px}.rosterItem{border:1px solid rgba(0,0,0,.06);border-radius:10px;padding:10px;background:#fff}@media(min-width:980px){main.isProfessor .mainGrid{grid-template-columns:1fr!important}}.assignmentsTwoCol{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}@media(min-width:1180px){.assignmentsTwoCol{grid-template-columns:repeat(2,minmax(560px,1fr))}.assignmentsTwoCol>*{min-width:0}}main.isProfessor.containerWide{max-width:1400px}main.isStudent.containerWide{max-width:980px;margin:0 auto}main.isStudent .mainGrid{grid-template-columns:1fr!important}.sessionMeta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.statusPill{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:800;border:1px solid rgba(0,0,0,.08);background:#1118270a;letter-spacing:.2px}.status-active{background:#10b9811a;border-color:#10b98140}.status-submitted{background:#3b82f61a;border-color:#3b82f640}.status-ended{background:#6b72801a;border-color:#6b728040}.sessionId{display:inline-flex;align-items:baseline;gap:6px;padding:4px 10px;border-radius:10px;border:1px solid rgba(0,0,0,.06);background:#fff}.sessionIdLabel{font-size:12px;color:#0000008c;font-weight:700}.sessionIdValue{font-size:12px;color:#000000d9;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:520px){.sessionIdValue{max-width:200px}}.brandLogoText{font-family:Inter,system-ui,sans-serif;font-weight:800;font-size:34px;letter-spacing:-.02em;display:inline-block;white-space:nowrap}.logoMain{color:#142033}.logoLab{color:#c6a15b}.logoUnderline{position:relative}.logoUnderline:after{content:"";position:absolute;left:6%;right:6%;height:3px;background:#142033;bottom:-6px;border-radius:999px}.headerRight{display:flex;align-items:center;gap:10px}.acctMenu{position:relative}.acctBtn{border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 10px;font-weight:600;cursor:pointer}.acctBtn:hover{border-color:#1f2a4438}.acctDropdown{position:absolute;right:0;top:calc(100% + 8px);background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 22px #0000001a;min-width:180px;overflow:hidden;z-index:50}.acctItem{width:100%;text-align:left;padding:10px 12px;background:transparent;border:0;cursor:pointer}.acctItem:hover{background:#f6f7f9}.acctSep{height:1px;background:#eee}.acctItem.danger:hover{background:#fff1f0}.appHeader .headerRight .acctBtn{background:#fff;border:1px solid rgba(31,42,68,.18);color:var(--primary);border-radius:10px;padding:8px 12px;font-weight:700;transition:background .15s ease,border-color .15s ease,color .15s ease}.appHeader .headerRight .acctBtn:hover{background:#1f2a440f;border-color:#1f2a444d}.appHeader .headerRight .acctBtn.open{border-color:var(--accent);box-shadow:0 0 0 2px #c59b4f26}.acctDropdown{border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 22px #0000001a}.acctItem:hover{background:#1f2a440f}.acctItem.danger{color:#b42318}.acctBtn svg,.acctBtn .caret{color:var(--accent)}
