:root{--bg: #f7f8fb;--card: #ffffff;--border: #e5e7eb;--border-soft: #eef2f7;--text: #111827;--muted: #6b7280;--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}body{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}.appMain{padding-top:14px;padding-bottom:24px}.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}.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}.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(--text);border-color:var(--text);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:var(--shadow);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{padding:9px 12px;border-radius:10px;font-weight:650;font-size:13px;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--text)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--text);border-color:var(--text);color:#fff}.btn-ghost{background:#fff}.btn-soft{background:#f9fafb}.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)}}.rosterBox{margin-top:10px;margin-left:14px;padding:10px;border-radius:14px;background:#00000008;border:1px solid rgba(0,0,0,.06)}.assignmentsTwoCol{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:900px){.assignmentsTwoCol{grid-template-columns:1fr .9fr;align-items:start}}.rosterListPanel{padding:10px;border-radius:14px;background:#00000008;border:1px solid rgba(0,0,0,.06)}@media(min-width:900px){.rosterListPanel{max-height:240px;overflow:auto}}.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}.assignmentsTwoCol{display:grid;grid-template-columns:minmax(380px,520px) 1fr;gap:12px;align-items:start}@media(max-width:900px){.assignmentsTwoCol{grid-template-columns:1fr}}.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}}
