.team-roster-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.team-roster-tabs{display:flex;gap:8px}.team-roster-tabs button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:8px 14px;font-weight:700;cursor:pointer}.team-roster-tabs button.is-active{background:#0b1f3a;color:#fff}.team-roster-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;margin:8px 0 14px}.team-roster-pool{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--surface);color:var(--ink);margin-bottom:16px;position:sticky;top:92px;z-index:8;box-shadow:0 10px 24px rgba(15,23,42,.09)}.team-roster-pool-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.team-roster-student{display:inline-flex;align-items:center;gap:7px;padding:7px 9px;border:1px solid var(--line);background:var(--surface-soft);border-radius:10px;font-size:12px;font-weight:700;cursor:grab}.team-roster-student.fit-green{color:#15803d;border-color:#9dd5ad;background:#f0fbf3}.team-roster-student.fit-red{color:#b91c1c;border-color:#efb2b2;background:#fff4f4}.team-roster-student.fit-neutral{color:var(--muted)}.team-roster-event-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:12px}.team-roster-event{border:1px solid var(--line);border-radius:14px;padding:13px;background:var(--surface);color:var(--ink);min-height:152px}.team-roster-event.is-drop-target{outline:3px solid rgba(37,99,235,.18);border-color:#2563eb}.team-roster-event-head{display:flex;justify-content:space-between;gap:8px}.team-roster-slots{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.team-roster-empty-slot{border:1px dashed var(--line);border-radius:9px;padding:7px 9px;color:var(--muted);font-size:11px}.team-roster-build-code,.team-roster-build-option{font-size:10px;border-radius:999px;padding:3px 7px}.team-roster-build-availability{margin-top:11px;padding-top:9px;border-top:1px solid var(--line)}.team-roster-build-options{display:flex;flex-wrap:wrap;gap:5px}.team-roster-build-option{border:1px solid var(--line);background:var(--surface-soft);color:var(--ink);font-weight:800}.team-roster-build-option.is-selected{border-color:#2563eb;background:#dbeafe;color:#1d4ed8}.team-roster-build-none{font-size:11px;font-weight:700;color:#b45309}.team-roster-student-name-wrap{position:relative;display:inline-flex}.team-roster-student-name{cursor:help}.team-roster-events-tooltip{display:none;position:absolute;left:0;top:calc(100% + 8px);z-index:40;min-width:220px;max-width:320px;padding:10px;border-radius:10px;background:#0f172a;color:#fff;box-shadow:0 12px 28px rgba(15,23,42,.22);font-size:11px}.team-roster-student-name-wrap:hover .team-roster-events-tooltip,.team-roster-student-name-wrap:focus-within .team-roster-events-tooltip,.team-roster-student-name-wrap.is-tooltip-open .team-roster-events-tooltip{display:block}.team-roster-tooltip-row{display:flex;justify-content:space-between;gap:14px;padding:4px 0;border-top:1px solid rgba(255,255,255,.12)}.team-roster-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.team-roster-warning,.team-roster-error{border-radius:12px;padding:10px 12px;margin-bottom:12px}.team-roster-warning{border:1px solid #f2c36b;background:#fff9e8}.team-roster-error{border:1px solid #efb2b2;background:#fff4f4;color:#991b1b}.team-roster-remove{display:inline-grid;place-items:center;width:22px;height:22px;margin-left:2px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:#b91c1c;font-size:15px;font-weight:800;line-height:1;cursor:pointer}.team-roster-remove:hover{border-color:#ef4444;background:#fff1f2}.team-roster-remove:disabled{opacity:.5;cursor:wait}.team-roster-suggestions{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}.team-roster-suggestions-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap}.team-roster-suggestions-head span{font-size:12px;font-weight:800}.team-roster-suggestions-head small,.team-roster-suggestions-empty{color:var(--muted);font-size:10px}.team-roster-suggestions-grid{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.team-roster-suggestion-chip{display:inline-flex;align-items:center;gap:6px;border:1px dashed #93c5fd;border-radius:9px;background:#eff6ff;color:#1e3a8a;padding:6px 8px;font-size:11px;cursor:grab}.team-roster-suggestion-chip small{font-size:9px;color:#64748b}.team-roster-workload{margin-top:18px;border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--surface);color:var(--ink)}.team-roster-workload-legend{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:10px;font-size:11px;color:var(--muted)}.team-roster-workload-legend>span{display:inline-flex;gap:5px;align-items:center}.team-roster-workload-key{display:inline-block;width:18px;height:7px;border-radius:999px}.team-roster-workload-key.is-preferred{background:#15803d}.team-roster-workload-key.is-drafted{background:#b91c1c}.team-roster-workload-chart{display:grid;gap:8px;margin-top:12px}.team-roster-workload-row{display:grid;grid-template-columns:minmax(130px,190px) minmax(180px,1fr) minmax(150px,210px);gap:12px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:var(--surface-soft);font-size:11px;min-width:0}.team-roster-workload-student{display:grid;gap:2px;min-width:0}.team-roster-workload-student strong{font-size:12px;overflow-wrap:anywhere}.team-roster-workload-grade{color:var(--muted);font-size:10px}.team-roster-workload-bar-track{height:14px;display:flex;overflow:hidden;border-radius:999px;background:var(--surface);border:1px solid var(--line);min-width:0}.team-roster-workload-bar-preferred,.team-roster-workload-bar-drafted{display:block;height:100%;flex:0 0 auto}.team-roster-workload-bar-preferred{background:#15803d}.team-roster-workload-bar-drafted{background:#b91c1c}.team-roster-workload-counts{display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:center;min-width:0}.team-roster-workload-counts>strong{font-size:15px}.team-roster-workload-counts>span{overflow-wrap:anywhere}.team-roster-workload-preferred{color:#15803d}.team-roster-workload-drafted{color:#b91c1c}@media(max-width:820px){.team-roster-pool{top:72px}.team-roster-workload-row{grid-template-columns:minmax(110px,150px) minmax(0,1fr);gap:8px}.team-roster-workload-counts{grid-column:1/-1;justify-self:start}}@media(max-width:520px){.team-roster-workload-row{grid-template-columns:1fr}.team-roster-workload-bar-track,.team-roster-workload-counts{grid-column:1}}

/* Keep team members available while browsing event cards. */
#content:has(.team-roster-workspace) > [data-team-pool-mount] { position: static; }
.team-roster-workspace {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 16px;
  height: calc(100vh - 140px);
  height: calc(100dvh - 140px);
  min-height: 320px;
  margin-bottom: 16px;
}
.team-roster-workspace .team-roster-current-members {
  position: relative;
  top: auto;
  margin: 0;
  min-width: 0;
  min-height: 0;
  overflow: auto;
  scrollbar-gutter: stable;
  overscroll-behavior: contain;
  align-self: stretch;
}
.team-roster-current-members h2 { margin: 4px 0; font-size: 18px; }
.team-roster-drag-hint { margin: 6px 0 0; font-size: 11px; line-height: 1.4; }
.team-roster-workspace .team-roster-current-members .team-roster-pool-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 4px;
}
.team-roster-current-members .team-roster-student {
  min-width: 0;
  min-height: 28px;
  padding: 3px 7px;
  justify-content: space-between;
}
.team-roster-current-members .team-roster-student-name { overflow-wrap: anywhere; }
.team-roster-current-members .team-roster-student-name-wrap { flex: 1; min-width: 0; flex-direction: column; }
.team-roster-current-members .team-roster-events-tooltip { position: static; min-width: 0; max-width: 100%; margin-top: 6px; }
.team-roster-current-members .team-roster-tooltip-row { gap: 6px; overflow-wrap: anywhere; }
.team-roster-current-members .team-pool-release { width: 18px; height: 18px; min-height: 18px; padding: 0; font-size: 15px; line-height: 1; flex-shrink: 0; }
.team-roster-events-panel {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  padding: 2px 4px 12px 2px;
  scrollbar-gutter: stable;
  overscroll-behavior: contain;
}
.team-roster-events-panel:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.team-roster-events-panel .team-roster-event-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(245px, 100%), 1fr));
}
.team-roster-events-panel .team-roster-workload-row {
  grid-template-columns: minmax(110px, 150px) minmax(0, 1fr);
}
.team-roster-events-panel .team-roster-workload-counts { grid-column: 1 / -1; }
@media (max-width: 820px) {
  .team-roster-workspace { grid-template-columns: 200px minmax(0, 1fr); gap: 10px; }
}
@media (max-width: 600px) {
  .team-roster-workspace { grid-template-columns: 1fr; grid-template-rows: auto minmax(0, 1fr); }
  .team-roster-workspace .team-roster-current-members { max-height: 180px; }
  .team-roster-workspace .team-roster-current-members .team-roster-pool-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
