#page-desert-storm {
  padding-bottom:24px;

  /* Semantic DS palette aligned to the main dashboard */
  --ds-blue:#60a5fa;
  --ds-blue-strong:#3b82f6;
  --ds-blue-hover:#2563eb;
  --ds-green:#34d399;
  --ds-green-strong:#22c55e;
  --ds-amber:#fbbf24;
  --ds-amber-strong:#f59e0b;
  --ds-amber-bg:rgba(245,158,11,.15);
  --ds-amber-border:rgba(245,158,11,.30);
  --ds-purple:#c084fc;
  --ds-purple-strong:#a855f7;
  --ds-danger:#f87171;
  --ds-danger-strong:#ef4444;
}

body.light-theme #page-desert-storm {
  --ds-blue:#2563eb;
  --ds-blue-strong:#2563eb;
  --ds-blue-hover:#1d4ed8;
  --ds-green:#059669;
  --ds-green-strong:#059669;
  --ds-amber:#d97706;
  --ds-amber-strong:#d97706;
  --ds-purple:#9333ea;
  --ds-purple-strong:#7e22ce;
  --ds-danger:#dc2626;
  --ds-danger-strong:#dc2626;
}

.ds-page-top {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}

.ds-week-chip {
  border: 1px solid var(--border-color);
  background: var(--bg-card);
  border-radius: 8px;
  padding: 7px 10px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .4px;
  text-transform: uppercase;
  white-space: nowrap;
}

.ds-team-tabs {
  display: flex;
  gap: 6px;
  margin-bottom: 14px;
  border-bottom: 1px solid var(--border-color);
}

.ds-team-tab {
  appearance: none;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--text-muted);
  padding: 9px 14px;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.ds-team-tab:hover { color: var(--text-main); }
.ds-team-tab.active { color: var(--ds-blue); border-bottom-color: var(--ds-blue-strong); }

.ds-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.ds-stat-card { padding: 14px 16px; min-height: 80px; justify-content: space-between; }
.ds-stat-blue::before { background:var(--ds-blue-strong); }
.ds-stat-green::before { background:var(--ds-green-strong); }
.ds-stat-amber::before { background:var(--ds-amber-strong); }
.ds-stat-purple::before { background:var(--ds-purple-strong); }
.ds-stat-danger::before { background:var(--ds-danger-strong); }
.ds-stat-danger .stat-val-base { color:var(--ds-danger); }

.ds-section {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: 12px;
  margin-bottom: 16px;
  overflow: hidden;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,.08);
}

.ds-section-header {
  min-height: 48px;
  padding: 10px 14px;
  background: var(--bg-card-header);
  border-bottom: 1px solid var(--border-color);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.ds-section-title { font-size: 13px; font-weight: 700; color: var(--text-main); }
.ds-section-subtitle { margin-top: 2px; font-size: 10px; color: var(--text-muted); }

.ds-primary-btn {
  border: 1px solid var(--ds-blue-strong);
  background: var(--ds-blue-strong);
  color: #fff;
  border-radius: 7px;
  padding: 7px 11px;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
}
.ds-primary-btn:hover { background:var(--ds-blue-hover); }

.ds-balance-meta { display:flex; align-items:center; gap:10px; }
#ds-balance-spread { font-size:10px; color:var(--text-muted); white-space:nowrap; }

.ds-applicant-scroll { overflow-x:auto; }
.ds-applicant-table { min-width: 560px; }
.ds-applicant-table td { vertical-align:middle; }
.ds-player-name { font-weight:600; color:var(--text-main); }
.ds-thp { font-variant-numeric: tabular-nums; font-weight:700; color:var(--ds-green); }

.ds-poll-pill, .ds-role-pill {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:22px;
  padding:0 8px;
  border-radius:6px;
  box-sizing:border-box;
  font-size:9px;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
}
.ds-poll-pill { color:var(--text-subtle); background:var(--bg-card-header); border:1px solid var(--border-color); }
.ds-poll-starter-9pm,
.ds-poll-sub-9pm {
  color:var(--ds-blue);
  border-color:rgba(59,130,246,.35);
  background:rgba(59,130,246,.10);
}
.ds-poll-starter-4pm,
.ds-poll-sub-4pm {
  color:var(--ds-amber);
  border-color:var(--ds-amber-border);
  background:var(--ds-amber-bg);
}
.ds-poll-either {
  color:var(--ds-purple);
  border-color:rgba(168,85,247,.35);
  background:rgba(168,85,247,.08);
}
.ds-poll-not-this-week {
  color:var(--text-muted);
  border-color:var(--border-color);
  background:var(--bg-card-header);
}
.ds-role-starter { color:var(--ds-green); background:rgba(34,197,94,.1); border:1px solid rgba(34,197,94,.25); }
.ds-role-sub { color:var(--ds-amber); background:var(--ds-amber-bg); border:1px solid rgba(245,158,11,.25); }

.ds-unassigned-wrap { padding:12px 12px 0; }

.ds-unassigned-zone {
  border:1px dashed var(--border-color);
  border-radius:9px;
  background:var(--bg-main);
  padding:8px;
}

.ds-unassigned-label {
  display:flex;
  align-items:center;
  gap:6px;
  padding:2px 3px 7px;
  font-size:10px;
  font-weight:700;
  color:var(--text-muted);
  text-transform:uppercase;
  letter-spacing:.45px;
}

.ds-unassigned-list {
  display:flex;
  flex-direction:column;
  gap:5px;
}

.ds-unassigned-list .ds-squad-player {
  width:100%;
  display:grid;
  grid-template-columns:minmax(0,1fr) 150px;
  align-items:center;
  gap:12px;
  padding:7px 9px;
}

.ds-unassigned-list .ds-squad-player-main {
  margin-bottom:0;
}

.ds-unassigned-list .ds-squad-select {
  width:150px;
}

.ds-squad-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  padding:12px;
}

.ds-squad-card {
  min-width:0;
  border:1px solid var(--border-color);
  border-radius:10px;
  background:var(--bg-main);
  overflow:hidden;
}

.ds-squad-header {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:11px 12px;
  border-bottom:1px solid var(--border-color);
  background:var(--bg-card-header);
}

.ds-squad-header-right {
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
}

.ds-leader-control {
  display:flex;
  align-items:center;
  gap:5px;
  min-width:0;
}

.ds-leader-control > span {
  color:var(--text-muted);
  font-size:8px;
  font-weight:800;
  letter-spacing:.4px;
}

.ds-leader-control select {
  width:130px;
  max-width:100%;
  min-width:0;
  padding:4px 6px;
  border:1px solid var(--border-color);
  border-radius:5px;
  background:var(--bg-input);
  color:var(--text-muted);
  font-size:10px;
}

.ds-leader-control select:disabled {
  opacity:.6;
}

.ds-squad-title { font-size:12px; font-weight:800; color:var(--text-main); }
.ds-squad-zone { font-size:9px; text-transform:uppercase; letter-spacing:.7px; color:var(--text-muted); margin-top:2px; }
.ds-squad-total { font-size:13px; font-weight:800; color:var(--ds-green); white-space:nowrap; }

.ds-squad-list { padding:7px; display:flex; flex-direction:column; gap:6px; }
.ds-squad-player {
  background:var(--bg-card);
  cursor:grab;
  user-select:none;
  border:1px solid var(--border-subtle);
  border-radius:7px;
  padding:8px;
}
.ds-squad-player-main { display:flex; align-items:center; justify-content:space-between; gap:7px; margin-bottom:6px; font-size:11px; }
.ds-drag-handle {
  display:inline-flex;
  flex-direction:column;
  justify-content:center;
  gap:2px;
  width:10px;
  height:14px;
  flex-shrink:0;
  cursor:grab;
}

.ds-drag-handle > span {
  display:block;
  width:8px;
  height:1.5px;
  border-radius:2px;
  background:var(--text-muted);
  opacity:.8;
}
.ds-squad-player-main strong { flex:1; min-width:0; }
.ds-squad-player-main strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ds-squad-player-main span { color:var(--ds-green); font-weight:700; white-space:nowrap; }

.ds-team-select,
.ds-role-select,
.ds-squad-select {
  background:var(--bg-input);
  color:var(--text-muted);
  border:1px solid var(--border-color);
  border-radius:5px;
  font-size:10px;
}

.ds-team-select,
.ds-role-select { padding:4px 6px; }
.ds-squad-select {
  width:100%;
  padding:4px 6px;
}

.ds-empty-squad { padding:16px 8px; text-align:center; color:var(--text-muted); font-size:10px; }

.ds-pools-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  padding:12px;
}

.ds-pool-card { border:1px solid var(--border-color); border-radius:9px; overflow:hidden; }
.ds-pool-heading {
  background:var(--bg-card-header);
  border-bottom:1px solid var(--border-color);
  padding:9px 11px;
  font-size:11px;
  font-weight:700;
}
.ds-count-badge {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:20px;
  height:20px;
  margin-left:5px;
  padding:0 6px;
  border-radius:10px;
  box-sizing:border-box;
  background:rgba(59,130,246,.13);
  color:var(--ds-blue);
  font-size:9px;
  font-weight:800;
  line-height:1;
}
.ds-pool-body { padding:7px; display:flex; flex-direction:column; gap:6px; }
.ds-pool-player {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:7px 8px;
  border:1px solid var(--border-subtle);
  border-radius:7px;
  font-size:10px;
}
.ds-pool-player > div:first-child { display:flex; flex-direction:column; gap:2px; min-width:0; }
.ds-pool-player strong { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-pool-player span { color:var(--text-muted); }
.ds-pool-muted { opacity:.7; }
.ds-flex-actions { display:flex; gap:4px; flex-shrink:0; }
.ds-flex-actions button {
  height:30px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--border-color);
  background:var(--bg-card-header);
  color:var(--text-subtle);
  border-radius:6px;
  padding:0 10px;
  box-sizing:border-box;
  font-size:9px;
  font-weight:800;
  line-height:1;
  cursor:pointer;
}
.ds-flex-actions button:hover { color:var(--text-main); border-color:var(--ds-blue-strong); }

.ds-preview-note {
  margin-top:4px;
  font-size:10px;
  color:var(--text-muted);
}

@media (max-width: 900px) {
  .ds-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ds-squad-grid { grid-template-columns:1fr; }
}

@media (max-width: 600px) {
  .ds-page-top { align-items:flex-start; flex-direction:column; gap:8px; }
  .ds-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .ds-pools-grid { grid-template-columns:1fr; }
  .ds-balance-meta { align-items:flex-end; flex-direction:column-reverse; gap:5px; }
}

.ds-dragging { opacity:.45; cursor:grabbing; }
.ds-drag-active .ds-dropzone { transition:border-color .12s, background-color .12s; }
.ds-drag-active .ds-dropzone { border-style:dashed; }
.ds-drop-target {
  border-color:var(--ds-blue-strong) !important;
  background:rgba(59,130,246,.07) !important;
}
.ds-drop-target .ds-squad-list,
.ds-drop-target .ds-unassigned-list { min-height:44px; }

@media (hover: none), (pointer: coarse) {
  .ds-squad-player { cursor:default; }
  .ds-drag-handle { display:none; }
}


.ds-week-actions {
  display:flex;
  align-items:center;
  gap:6px;
}

.ds-reset-btn,
.ds-secondary-btn {
  border:1px solid var(--border-color);
  background:transparent;
  color:var(--text-muted);
  border-radius:7px;
  padding:7px 9px;
  font-size:10px;
  font-weight:700;
  cursor:pointer;
}

.ds-reset-btn:hover,
.ds-secondary-btn:hover {
  color:var(--text-main);
  background:var(--border-color);
}

.ds-add-player-form {
  padding:10px 14px;
  border-bottom:1px solid var(--border-color);
  background:var(--bg-main);
}

.ds-add-player-form[hidden] { display:none; }

.ds-add-player-fields {
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
}

.ds-add-player-input {
  flex:1 1 220px;
  min-width:180px;
  background:var(--bg-input);
  color:var(--text-main);
  border:1px solid var(--border-color);
  border-radius:7px;
  padding:8px 10px;
  font-size:12px;
}

.ds-add-player-role {
  background:var(--bg-input);
  color:var(--text-main);
  border:1px solid var(--border-color);
  border-radius:7px;
  padding:8px 9px;
  font-size:11px;
}

.ds-add-player-hint {
  margin-top:6px;
  color:var(--text-muted);
  font-size:9px;
}

.ds-status-cell {
  display:flex;
  align-items:center;
  gap:6px;
}

.ds-row-remove {
  width:24px;
  height:24px;
  border:0;
  border-radius:5px;
  background:transparent;
  color:var(--text-muted);
  font-size:16px;
  line-height:1;
  cursor:pointer;
}

.ds-row-remove:hover {
  background:rgba(248,113,113,.1);
  color:var(--ds-danger);
}

@media (max-width: 600px) {
  .ds-week-actions { width:100%; justify-content:space-between; }
  .ds-add-player-fields { align-items:stretch; }
  .ds-add-player-input,
  .ds-add-player-role,
  .ds-add-player-fields .ds-primary-btn { min-height:44px; font-size:16px; }
  .ds-row-remove { width:32px; height:32px; }
}


#ds-roster-view[hidden],
#ds-team-view[hidden] { display:none; }


.ds-capacity-alerts {
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-bottom:14px;
}

.ds-capacity-alerts[hidden] { display:none; }

.ds-capacity-alert {
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  border:1px solid rgba(239,68,68,.35);
  background:rgba(239,68,68,.08);
  border-radius:8px;
  padding:8px 10px;
  font-size:10px;
}

.ds-capacity-alert strong {
  color:var(--ds-danger);
  font-size:11px;
}

.ds-capacity-alert span {
  color:var(--text-subtle);
}

.ds-capacity-alert button {
  margin-left:auto;
  border:1px solid rgba(239,68,68,.35);
  background:transparent;
  color:var(--ds-danger);
  border-radius:6px;
  padding:5px 8px;
  font-size:9px;
  font-weight:700;
  cursor:pointer;
}

.ds-capacity-alert button:hover {
  background:rgba(239,68,68,.1);
}

@media (max-width:600px) {
  .ds-capacity-alert button { margin-left:0; }
}



@media (max-width: 600px) {
  .ds-applicant-table th:first-child,
  .ds-applicant-table td:first-child {
    width: 112px;
    max-width: 112px;
  }

  .ds-player-name {
    max-width: 112px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}


.ds-event-select {
  border:1px solid var(--border-color);
  background:var(--bg-card);
  color:var(--text-main);
  border-radius:8px;
  padding:7px 9px;
  font-size:10px;
  font-weight:700;
}

.ds-event-status {
  display:inline-flex;
  align-items:center;
  min-height:29px;
  padding:0 8px;
  border-radius:7px;
  border:1px solid rgba(34,197,94,.25);
  background:rgba(34,197,94,.08);
  color:var(--ds-green-strong);
  font-size:9px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.35px;
  white-space:nowrap;
}

.ds-event-status-locked {
  border-color:var(--ds-amber-border);
  background:var(--ds-amber-bg);
  color:var(--ds-amber);
}

#page-desert-storm button:disabled,
#page-desert-storm select:disabled {
  opacity:.55;
  cursor:not-allowed;
}

@media (max-width:600px) {
  .ds-week-actions {
    flex-wrap:wrap;
  }

  .ds-event-select {
    flex:1 1 150px;
    min-height:36px;
  }
}


.ds-results-table {
  min-width: 620px;
}

.ds-attendance-select,
.ds-score-input {
  background:var(--bg-input);
  color:var(--text-main);
  border:1px solid var(--border-color);
  border-radius:6px;
  font-size:10px;
}

.ds-attendance-select {
  padding:5px 7px;
}

.ds-score-input {
  width:104px;
  padding:5px 7px;
  text-align:right;
  font-variant-numeric:tabular-nums;
}

.ds-event-status:not(.ds-event-status-locked) {
  border-color:rgba(59,130,246,.28);
  background:rgba(59,130,246,.08);
  color:var(--ds-blue-strong);
}

@media (max-width:600px) {
  .ds-results-table th:first-child,
  .ds-results-table td:first-child {
    width:44px;
    max-width:44px;
  }

  .ds-attendance-select {
    min-height:36px;
  }

  .ds-score-input {
    width:92px;
    min-height:36px;
  }
}


.ds-save-status {
  display:inline-flex;
  align-items:center;
  min-height:29px;
  padding:0 8px;
  border-radius:7px;
  color:var(--text-muted);
  font-size:9px;
  font-weight:700;
  white-space:nowrap;
}

.ds-save-status-error {
  color:var(--ds-danger);
}


/* Roster change verification */
.ds-roster-actions {
  display:flex;
  align-items:center;
  gap:10px;
}

.ds-change-count {
  color:var(--text-muted);
  font-size:9px;
  font-weight:700;
  white-space:nowrap;
}

.ds-change-col {
  width:78px;
  min-width:78px;
}

.ds-change-reset {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  min-width:58px;
  height:25px;
  padding:0 7px;
  border:1px solid rgba(245,158,11,.28);
  border-radius:5px;
  background:rgba(245,158,11,.07);
  color:var(--ds-amber);
  font-size:9px;
  font-weight:700;
  cursor:pointer;
  white-space:nowrap;
}

.ds-change-reset:hover {
  border-color:rgba(245,158,11,.48);
  background:rgba(245,158,11,.13);
}

.ds-reset-icon {
  font-size:12px;
  line-height:1;
}

.ds-change-none {
  color:var(--text-muted);
  opacity:.38;
  font-size:10px;
}

@media (max-width:600px) {
  .ds-roster-actions {
    gap:6px;
  }

  .ds-change-count {
    display:none;
  }

  .ds-change-col {
    width:44px;
    min-width:44px;
  }

  .ds-change-reset {
    min-width:28px;
    width:28px;
    padding:0;
  }

  .ds-reset-label {
    display:none;
  }
}

/* Weekly roster table layout */
.ds-applicant-table {
  width:100%;
  min-width:820px;
  table-layout:fixed;
}

.ds-applicant-table col.ds-col-number  { width:4%; }
.ds-applicant-table col.ds-col-player  { width:18%; }
.ds-applicant-table col.ds-col-thp     { width:10%; }
.ds-applicant-table col.ds-col-poll    { width:17%; }
.ds-applicant-table col.ds-col-team    { width:20%; }
.ds-applicant-table col.ds-col-status  { width:21%; }
.ds-applicant-table col.ds-col-actions { width:10%; }

.ds-applicant-table th,
.ds-applicant-table td {
  box-sizing:border-box;
  white-space:nowrap;
  vertical-align:middle;
}

.ds-applicant-table th:nth-child(1),
.ds-applicant-table td:nth-child(1) {
  text-align:center;
}

.ds-applicant-table th:nth-child(2),
.ds-applicant-table td:nth-child(2),
.ds-applicant-table th:nth-child(4),
.ds-applicant-table td:nth-child(4),
.ds-applicant-table th:nth-child(5),
.ds-applicant-table td:nth-child(5),
.ds-applicant-table th:nth-child(6),
.ds-applicant-table td:nth-child(6) {
  text-align:left;
}

.ds-applicant-table th:nth-child(3),
.ds-applicant-table td:nth-child(3),
.ds-applicant-table th:nth-child(7),
.ds-applicant-table td:nth-child(7) {
  text-align:right;
}

/* Give THP a little breathing room before Poll Choice */
.ds-applicant-table th:nth-child(3),
.ds-applicant-table td:nth-child(3) {
  padding-right:18px;
}

.ds-applicant-table th:nth-child(4),
.ds-applicant-table td:nth-child(4) {
  padding-left:10px;
}


.ds-team-select,
.ds-role-select {
  width:130px;
  max-width:100%;
}

.ds-status-cell {
  display:table-cell;
}

.ds-change-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
  width:100%;
  min-height:25px;
}

.ds-change-col {
  text-align:right !important;
}

.ds-row-remove {
  flex:0 0 24px;
}

@media (max-width:600px) {
  .ds-applicant-table {
    min-width:700px;
  }

  .ds-applicant-table col.ds-col-number  { width:5%; }
  .ds-applicant-table col.ds-col-player  { width:19%; }
  .ds-applicant-table col.ds-col-thp     { width:10%; }
  .ds-applicant-table col.ds-col-poll    { width:17%; }
  .ds-applicant-table col.ds-col-team    { width:20%; }
  .ds-applicant-table col.ds-col-status  { width:20%; }
  .ds-applicant-table col.ds-col-actions { width:9%; }

  .ds-team-select,
  .ds-role-select {
    width:118px;
  }

  .ds-change-actions {
    gap:3px;
  }
}


/* Team battle results */
.ds-results-table {
  width:100%;
  min-width:560px;
  table-layout:fixed;
}

.ds-results-table th,
.ds-results-table td {
  vertical-align:middle;
  white-space:nowrap;
}

.ds-results-table th:nth-child(1),
.ds-results-table td:nth-child(1) { width:5%; text-align:center; }

.ds-results-table th:nth-child(2),
.ds-results-table td:nth-child(2) { width:31%; }

.ds-results-table th:nth-child(3),
.ds-results-table td:nth-child(3) { width:17%; }

.ds-results-table th:nth-child(4),
.ds-results-table td:nth-child(4) { width:27%; }

.ds-results-table th:nth-child(5),
.ds-results-table td:nth-child(5) { width:20%; text-align:right; }

@media (max-width:600px) {
  .ds-results-table {
    min-width:520px;
  }
}

/* Team-tab Either pool */
.ds-team-flex-panel {
  margin-bottom:14px;
  border:1px solid rgba(168,85,247,.28);
  border-radius:10px;
  background:rgba(168,85,247,.055);
  overflow:hidden;
}

.ds-team-flex-panel[hidden] {
  display:none;
}

.ds-team-flex-heading {
  min-height:42px;
  padding:8px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-bottom:1px solid rgba(168,85,247,.18);
}

.ds-team-flex-heading > div {
  display:flex;
  align-items:baseline;
  gap:8px;
  min-width:0;
}

.ds-team-flex-heading strong {
  color:var(--text-main);
  font-size:11px;
}

.ds-team-flex-heading span:not(.ds-count-badge) {
  color:var(--text-muted);
  font-size:9px;
}

.ds-team-flex-list {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:7px;
  padding:9px 10px;
}

.ds-team-flex-player {
  min-width:0;
  display:grid;
  grid-template-columns:minmax(90px,1fr) 58px 62px 116px;
  align-items:center;
  gap:7px;
  padding:6px 7px 6px 9px;
  border:1px solid var(--border-color);
  border-radius:7px;
  background:var(--bg-card);
}

.ds-team-flex-player-main {
  display:contents;
}

.ds-team-flex-player-main strong {
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:10px;
  color:var(--text-main);
}

.ds-team-flex-player-main .ds-member-origin-either {
  width:58px;
  justify-content:center;
  justify-self:center;
}

.ds-team-flex-player-main > span:last-child {
  width:62px;
  text-align:right;
  justify-self:end;
  color:var(--ds-green);
  font-size:9px;
  font-weight:700;
  white-space:nowrap;
}

.ds-team-flex-player button {
  width:104px;
  height:24px;
  justify-self:end;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(168,85,247,.35);
  border-radius:6px;
  box-sizing:border-box;
  background:rgba(168,85,247,.10);
  color:var(--ds-purple);
  padding:0 8px;
  font-size:8px;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
  cursor:pointer;
}

.ds-team-flex-player button:disabled {
  opacity:.5;
  cursor:default;
}

/* Persistent team role/origin markers */
.ds-member-role,
.ds-member-origin-either {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:44px;
  height:22px;
  padding:0 7px;
  border-radius:6px;
  box-sizing:border-box;
  font-size:8px;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
}

.ds-member-role-starter {
  color:var(--ds-green) !important;
  border:1px solid rgba(34,197,94,.28);
  background:rgba(34,197,94,.09);
}

.ds-member-role-sub {
  color:var(--ds-amber) !important;
  border:1px solid var(--ds-amber-border);
  background:var(--ds-amber-bg);
}

.ds-member-origin-either {
  color:var(--ds-purple) !important;
  border:1px solid rgba(168,85,247,.30);
  background:rgba(168,85,247,.08);
}

.ds-squad-player-thp {
  margin-left:auto;
  color:var(--ds-green) !important;
  font-weight:700;
  white-space:nowrap;
}

/* Sortable weekly roster headers */
.ds-sort-btn {
  appearance:none;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-weight:inherit;
  text-transform:inherit;
  letter-spacing:inherit;
  padding:0;
  margin:0;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:4px;
}

.ds-sort-btn:hover {
  color:var(--text-main);
}

.ds-sort-btn-right {
  width:100%;
  justify-content:flex-end;
}

.ds-sort-indicator {
  min-width:8px;
  font-size:7px;
  opacity:.75;
}

/* Team controls */
.ds-reset-squads-btn {
  white-space:nowrap;
}

/* Shared substitute pool */
.ds-team-sub-pool {
  margin:0 12px 12px;
  border:1px solid var(--border-color);
  border-radius:10px;
  background:var(--bg-main);
  overflow:hidden;
}

.ds-team-sub-pool-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px;
  border-bottom:1px solid var(--border-color);
  background:var(--bg-card-header);
}

.ds-team-sub-pool-heading > div {
  min-width:0;
}

.ds-team-sub-pool-heading strong {
  display:block;
  font-size:12px;
  font-weight:800;
  color:var(--text-main);
}

.ds-team-sub-pool-heading > div > span {
  display:block;
  margin-top:2px;
  font-size:9px;
  color:var(--text-muted);
  text-transform:uppercase;
  letter-spacing:.45px;
}

#ds-team-sub-pool.ds-pool-body {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:6px;
  padding:8px;
}

.ds-team-sub-row {
  min-width:0;
  display:grid;
  grid-template-columns:minmax(90px,1fr) 64px 44px;
  align-items:center;
  gap:8px;
  padding:7px 9px;
  background:var(--bg-card);
}

.ds-team-sub-row > div:first-child {
  display:contents;
}

.ds-team-sub-row > div:first-child strong {
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.ds-team-sub-row > div:first-child span {
  width:64px;
  text-align:right;
  justify-self:end;
  margin:0;
  color:var(--ds-green);
  font-weight:700;
  white-space:nowrap;
}

.ds-team-sub-row .ds-member-role-sub {
  width:44px;
  justify-content:center;
  justify-self:end;
}

/* Row number columns */
.ds-number-col,
.ds-number-cell {
  text-align:center;
  color:var(--text-muted);
  font-variant-numeric:tabular-nums;
}

.ds-number-cell {
  font-size:10px;
  font-weight:600;
}

/* Compact empty unassigned state */
.ds-unassigned-empty {
  display:flex;
  align-items:center;
  gap:8px;
  min-height:34px;
  padding:7px 10px;
  border:1px dashed var(--border-color);
  border-radius:8px;
  background:var(--bg-main);
  color:var(--text-muted);
  font-size:10px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.4px;
}

.ds-unassigned-empty .ds-unassigned-complete {
  margin-left:auto;
  font-weight:500;
  text-transform:none;
  letter-spacing:0;
}

@media (max-width:1100px) {
  .ds-team-flex-list,
  #ds-team-sub-pool.ds-pool-body {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:700px) {
  .ds-team-flex-heading > div {
    display:block;
  }

  .ds-team-flex-heading span:not(.ds-count-badge) {
    display:block;
    margin-top:2px;
  }

  .ds-team-flex-list,
  #ds-team-sub-pool.ds-pool-body {
    grid-template-columns:1fr;
  }

  .ds-team-flex-player {
    grid-template-columns:minmax(0,1fr) 52px 56px 108px;
    gap:5px;
  }

  .ds-team-flex-player-main .ds-member-origin-either {
    width:52px;
  }

  .ds-team-flex-player-main > span:last-child {
    width:56px;
  }

  .ds-team-flex-player button {
    width:108px;
  }

  .ds-member-role,
  .ds-member-origin-either {
    min-width:40px;
    height:22px;
    padding:0 6px;
    font-size:7px;
  }

  .ds-balance-meta {
    flex-wrap:wrap;
    justify-content:flex-end;
  }
}


/* Desert Storm squad leadership markers */
.ds-leadership-badge {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:32px;
  height:22px;
  padding:0 7px;
  border-radius:6px;
  box-sizing:border-box;
  font-size:8px;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
}

.ds-leadership-sl,
.ds-leadership-co {
  color:var(--ds-blue);
  border:1px solid rgba(59,130,246,.32);
  background:rgba(59,130,246,.06);
}

@media (max-width:700px) {
  .ds-leadership-badge {
    min-width:30px;
    height:22px;
    padding:0 6px;
    font-size:7px;
  }
}
