/* Saved raid plans: group positions, shared signups and unlimited team benches. */
.vmw-roster-builder { width: 100%; min-width: 0; display: grid; gap: 18px; }
.vmw-roster-builder > .vmw-page-head { margin-bottom: 0; }
.vmw-roster-command { padding: 18px; gap: 18px; border-top: 3px solid var(--vmw-accent); background: linear-gradient(110deg, var(--vmw-accent-faint), transparent 65%), var(--vmw-surface); }
.vmw-roster-command-top { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 18px; }
.vmw-roster-command-top > div:first-child { min-width: 0; }
.vmw-roster-command h2 { font: 600 1.1rem var(--vmw-font-display); margin: 5px 0 14px; overflow-wrap: anywhere; }
.vmw-roster-save-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.vmw-roster-save-state { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; font-size: .76rem; color: var(--vmw-dim); }
.vmw-roster-save-state > span:first-child { color: var(--rz-text-color); }
.vmw-roster-save-state > span { display: inline-flex; align-items: center; gap: 6px; }
.vmw-roster-save-state .rzi { font-size: 18px; }
.vmw-roster-save-state > .is-dirty { color: var(--vmw-link); }
.vmw-roster-save-state > .vmw-link-btn { margin-left: auto; }
.vmw-roster-instructions { margin: 0; padding-top: 16px; border-top: 1px solid var(--vmw-border); font-size: .78rem; line-height: 1.7; color: var(--vmw-dim); }
.vmw-roster-review { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; padding: 14px 18px; border: 1px solid color-mix(in srgb, var(--vmw-accent) 45%, var(--vmw-border)); border-radius: var(--vmw-radius); background: var(--vmw-accent-faint); }
.vmw-roster-review > .rzi { color: var(--vmw-link); }
.vmw-roster-review > div { flex: 1; min-width: 200px; }
.vmw-roster-review strong { font-size: .82rem; }
.vmw-roster-review p { font-size: .76rem; line-height: 1.6; margin: 4px 0 0; color: var(--vmw-dim); }
.vmw-roster-review.is-warning { border-color: color-mix(in srgb, var(--vmw-danger) 35%, var(--vmw-border)); background: color-mix(in srgb, var(--vmw-danger) 5%, var(--vmw-surface)); }
.vmw-roster-review.is-warning > .rzi { color: var(--vmw-danger); }
.vmw-roster-team-toolbar { display: flex; flex-direction: row; align-items: flex-end; flex-wrap: wrap; gap: 14px; padding: 18px; }
.vmw-roster-team-choice, .vmw-roster-team-name { display: flex; flex-direction: column; gap: 7px; flex: 1 1 250px; min-width: 0; }
.vmw-roster-team-choice { flex-basis: 360px; max-width: 560px; }
.vmw-roster-team-name { max-width: 360px; flex-basis: 220px; }
.vmw-roster-team-toolbar label { font-size: .68rem; text-transform: uppercase; font-weight: 650; letter-spacing: .04em; color: var(--vmw-dim); }
.vmw-roster-team-toolbar select, .vmw-roster-team-toolbar input { width: 100%; min-height: 40px; border: 1px solid var(--vmw-border-strong); border-radius: var(--vmw-radius); padding: 9px 12px; background: var(--rz-body-background-color); color: var(--rz-text-color); font: 600 .82rem var(--vmw-font); }
.vmw-roster-team-select-shell { position: relative; display: flex; min-width: 0; }
.vmw-roster-team-select-shell select { appearance: none; height: 40px; min-width: 0; padding: 0 44px 0 14px; text-overflow: ellipsis; cursor: pointer; }
.vmw-roster-team-select-shell > .rzi { position: absolute; inset-inline-end: 14px; top: 50%; transform: translateY(-50%); font-size: 20px; color: var(--vmw-dim); pointer-events: none; }
.vmw-roster-team-select-shell select:disabled { cursor: default; opacity: .6; }
.vmw-roster-team-select-shell select:disabled + .rzi { opacity: .6; }
@media (forced-colors: active) { .vmw-roster-team-select-shell select { appearance: auto; padding-inline-end: 14px; } .vmw-roster-team-select-shell > .rzi { display: none; } }
.vmw-roster-team-toolbar select:focus-visible, .vmw-roster-team-toolbar input:focus-visible, .vmw-roster-destination:focus-visible { outline: 2px solid var(--vmw-accent); outline-offset: 2px; }
.vmw-roster-workspace { display: grid; grid-template-columns: 260px minmax(0, 1fr) 280px; gap: 18px; align-items: start; }
.vmw-roster-pool { min-width: 0; border-top: 2px solid var(--vmw-accent); }
.vmw-roster-area-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px; border-bottom: 1px solid var(--vmw-border); }
.vmw-roster-area-head h2 { font: 600 1rem var(--vmw-font-display); margin: 0 0 5px; }
.vmw-roster-area-head h2 > span { font: 600 .8rem var(--vmw-font); color: var(--vmw-dim); margin-left: 8px; }
.vmw-roster-area-head > .rzi { color: var(--vmw-link); font-size: 22px; }
.vmw-roster-area-head span, .vmw-roster-area-head p { font-size: .72rem; color: var(--vmw-dim); margin: 0; line-height: 1.6; }
.vmw-roster-search { padding: 12px 12px 0; }
.vmw-roster-pool-list { display: flex; flex-direction: column; gap: 8px; padding: 12px; overflow-y: auto; max-height: 75vh; scrollbar-gutter: stable; }
.vmw-roster-team-board { min-width: 0; display: grid; gap: 18px; }
.vmw-roster-board-heading { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 18px; }
.vmw-roster-board-heading h2 { margin: 0 auto 0 0; font: 600 1rem var(--vmw-font-display); overflow-wrap: anywhere; }
.vmw-roster-board-heading > span { font-size: .76rem; color: var(--vmw-dim); }
.vmw-roster-board-heading strong { color: var(--vmw-link); font-size: .9rem; }
.vmw-roster-groups { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; align-items: start; }
.vmw-roster-group { min-width: 0; border-top: 2px solid color-mix(in srgb, var(--vmw-accent) 55%, var(--vmw-border)); transition: border-color .1s, background-color .1s; }
.vmw-roster-group-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px 14px; }
.vmw-roster-group-head h3 { margin: 0; font-size: .84rem; font-weight: 650; }
.vmw-roster-group-head > span { color: var(--vmw-dim); font-size: .72rem; font-variant-numeric: tabular-nums; }
.vmw-roster-slots { list-style: none; padding: 0 8px; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.vmw-roster-slot { min-width: 0; min-height: 82px; }
.vmw-roster-slot.is-empty { border: 1px dashed var(--vmw-border); border-radius: var(--vmw-radius-sm); background: var(--vmw-inset); }
.vmw-roster-empty-slot { height: 100%; min-height: 80px; display: flex; align-items: center; gap: 10px; padding: 12px; color: var(--vmw-faint); font-size: .73rem; }
.vmw-roster-empty-slot > span { color: var(--vmw-dim); font: 500 .9rem var(--vmw-font-display); }
.vmw-roster-empty-slot > div { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.vmw-roster-add-placeholder { align-self: flex-start; max-width: 100%; min-height: 32px; height: auto; padding: 6px 10px; font-size: .72rem; }
.vmw-roster-add-placeholder .rzi { font-size: 16px; }
.vmw-roster-player.vmw-roster-placeholder { border-style: dashed; }
.vmw-roster-placeholder .vmw-roster-player-name > span { color: var(--vmw-link); }
.vmw-roster-placeholder-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 7px; }
.vmw-roster-placeholder-controls > select { flex: 1 1 105px; margin-top: 0; }
.vmw-roster-placeholder-help { margin: 0 0 18px; font-size: .85rem; line-height: 1.65; color: var(--vmw-dim); }
.vmw-roster-placeholder-preview { display: flex; align-items: center; gap: 12px; margin-top: 18px; padding: 14px; background: var(--vmw-accent-faint); border: 1px dashed var(--vmw-border-strong); border-radius: var(--vmw-radius); }
.vmw-roster-placeholder-preview > img { border: 1px solid var(--vmw-accent); border-radius: var(--vmw-radius-sm); }
.vmw-roster-placeholder-preview > div { display: flex; flex-direction: column; gap: 5px; }
.vmw-roster-placeholder-preview strong { font-size: .87rem; }
.vmw-roster-placeholder-preview span { font-size: .75rem; color: var(--vmw-dim); }
.vmw-roster-planned-count { color: var(--vmw-link); font-size: .65rem; }
.vmw-roster-player { --vmw-class-color: var(--vmw-accent); min-width: 0; padding: 8px 7px 7px; border: 1px solid color-mix(in srgb, var(--vmw-class-color) 25%, var(--vmw-border)); border-left: 3px solid color-mix(in srgb, var(--vmw-class-color) 70%, var(--vmw-border)); border-radius: var(--vmw-radius-sm); background: linear-gradient(105deg, color-mix(in srgb, var(--vmw-class-color) 7%, transparent), transparent 85%), var(--vmw-surface); transition: opacity .1s, border-color .1s, background-color .1s; }
.vmw-roster-player.vmw-class-druid { --vmw-class-color: #ff7d0a; }
.vmw-roster-player.vmw-class-hunter { --vmw-class-color: #abd473; }
.vmw-roster-player.vmw-class-mage { --vmw-class-color: #69ccf0; }
.vmw-roster-player.vmw-class-paladin { --vmw-class-color: #f58cba; }
.vmw-roster-player.vmw-class-priest { --vmw-class-color: #ffffff; }
.vmw-roster-player.vmw-class-rogue { --vmw-class-color: #fff569; }
.vmw-roster-player.vmw-class-shaman { --vmw-class-color: #0070de; }
.vmw-roster-player.vmw-class-warlock { --vmw-class-color: #8787ed; }
.vmw-roster-player.vmw-class-warrior { --vmw-class-color: #c79c6e; }
.vmw-roster-player[draggable="true"] { cursor: grab; }
.vmw-roster-player[draggable="true"]:active { cursor: grabbing; }
.vmw-roster-player-identity { display: flex; align-items: center; gap: 6px; min-width: 0; }
.vmw-roster-grip { display: flex; color: var(--vmw-faint); margin-left: -3px; }
.vmw-roster-grip > .rzi { font-size: 15px; }
.vmw-roster-player-identity > img { flex-shrink: 0; border-radius: var(--vmw-radius-sm); border: 1px solid color-mix(in srgb, var(--vmw-class-color) 60%, var(--vmw-border)); }
.vmw-roster-player-fallback { width: 30px; height: 30px; display: grid; place-items: center; background: var(--vmw-inset); border-radius: var(--vmw-radius-sm); }
.vmw-roster-player-name { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; }
.vmw-roster-player-name > strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .76rem; line-height: 1.3; font-weight: 650; color: color-mix(in srgb, var(--vmw-class-color) 15%, var(--rz-text-color)); }
:root[data-theme="dark"] .vmw-roster-player-name > strong { color: color-mix(in srgb, var(--vmw-class-color) 75%, var(--rz-text-color)); }
.vmw-roster-player-name > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--vmw-dim); font-size: .62rem; line-height: 1.3; }
.vmw-roster-discord { display: flex; color: var(--vmw-dim); padding: 3px; border-radius: var(--vmw-radius-sm); }
.vmw-roster-discord .rzi { font-size: 14px; }
.vmw-roster-demo { font-size: .53rem; font-weight: 650; text-transform: uppercase; color: var(--vmw-dim); border: 1px solid var(--vmw-border); border-radius: var(--vmw-radius-sm); padding: 2px 3px; }
.vmw-roster-destination { display: block; width: 100%; min-width: 0; min-height: 27px; margin-top: 7px; border: 1px solid var(--vmw-border); border-radius: var(--vmw-radius-sm); background: var(--rz-body-background-color); color: var(--vmw-dim); padding: 3px 5px; font: 500 .65rem var(--vmw-font); cursor: pointer; }
.vmw-roster-destination:disabled { opacity: .65; cursor: default; }
.vmw-roster-player.is-dragging { opacity: .4; }
.vmw-roster-player.is-unavailable { border-left-color: var(--vmw-danger); background: color-mix(in srgb, var(--vmw-danger) 5%, var(--vmw-surface)); }
.vmw-roster-unavailable-note { display: flex; align-items: center; gap: 4px; font-size: .65rem; line-height: 1.5; margin-top: 7px; color: color-mix(in srgb, var(--vmw-danger) 65%, var(--rz-text-color)); }
.vmw-roster-unavailable-note .rzi { font-size: 16px; }
.vmw-roster-group-roles { display: flex; justify-content: space-between; gap: 8px; padding: 11px 14px; color: var(--vmw-dim); }
.vmw-roster-group-roles > span { display: inline-flex; align-items: center; gap: 4px; font-size: .69rem; }
.vmw-roster-group-roles .rzi { font-size: 16px; }
.vmw-roster-group-buffs { border-top: 1px solid var(--vmw-border); font-size: .7rem; }
.vmw-roster-group-buffs > summary { padding: 11px 12px; cursor: pointer; color: var(--vmw-dim); font-weight: 600; }
.vmw-roster-group-buffs > summary > span { float: right; font-weight: 500; }
.vmw-roster-buff-icons { display: flex; flex-wrap: wrap; gap: 7px; padding: 0 12px 10px; }
.vmw-roster-buff-icons > a { display: flex; align-items: center; gap: 2px; text-decoration: none; color: var(--vmw-dim); }
.vmw-roster-buff-icons img { border-radius: var(--vmw-radius-sm); border: 1px solid var(--vmw-border-strong); }
.vmw-roster-buff-icons .is-available { color: color-mix(in srgb, var(--vmw-ok) 65%, var(--rz-text-color)); }
.vmw-roster-buff-icons .is-planned { color: var(--vmw-link); }
.vmw-roster-buff-icons .is-planned img { opacity: .7; border-style: dashed; border-color: var(--vmw-accent); }
.vmw-roster-buff-icons .is-missing img { opacity: .35; }
.vmw-roster-group-buffs p { margin: 0; padding: 0 12px 12px; line-height: 1.6; color: var(--vmw-dim); font-size: .66rem; }
.vmw-roster-bench { border-top: 2px solid var(--vmw-border-strong); }
.vmw-roster-bench-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 10px; padding: 14px; max-height: 540px; overflow-y: auto; scrollbar-gutter: stable; }
.vmw-roster-bench-list > .vmw-empty { grid-column: 1 / -1; }
.vmw-roster-workspace.has-drag .vmw-roster-slot.is-empty { border-color: color-mix(in srgb, var(--vmw-accent) 65%, var(--vmw-border)); background: var(--vmw-accent-faint); }
.vmw-roster-workspace.has-drag .vmw-roster-bench, .vmw-roster-workspace.has-drag .vmw-roster-pool { outline: 1px dashed var(--vmw-accent); outline-offset: 3px; }
.vmw-roster-workspace.has-drag .vmw-roster-slot:hover { outline: 2px solid var(--vmw-accent); outline-offset: 1px; border-radius: var(--vmw-radius-sm); }
.vmw-roster-workspace .is-drop-target { outline: 2px solid var(--vmw-accent); outline-offset: 2px; border-radius: var(--vmw-radius-sm); background-color: var(--vmw-accent-faint); }
.vmw-roster-buff-panel { min-width: 0; border-top: 2px solid var(--vmw-accent); }
.vmw-roster-buff-panel .vmw-roster-area-head p { overflow-wrap: anywhere; }
.vmw-roster-buff-summary { display: flex; flex-direction: column; gap: 3px; padding: 14px 16px 8px; font-size: .78rem; }
.vmw-roster-buff-summary strong { color: var(--vmw-link); }
.vmw-roster-buff-summary > span { color: var(--vmw-dim); font-size: .7rem; }
.vmw-roster-buff-legend { display: flex; flex-wrap: wrap; gap: 6px 12px; padding: 0 16px 12px; font-size: .66rem; color: var(--vmw-dim); border-bottom: 1px solid var(--vmw-border); }
.vmw-roster-buff-legend > span { display: inline-flex; align-items: center; gap: 4px; }
.vmw-roster-buff-legend b { font-size: .9rem; }
.vmw-roster-buff-legend .is-assigned, .vmw-roster-buff-row.is-assigned .vmw-roster-buff-status { color: color-mix(in srgb, var(--vmw-ok) 75%, var(--rz-text-color)); }
.vmw-roster-buff-legend .is-planned, .vmw-roster-buff-row.is-planned .vmw-roster-buff-status { color: var(--vmw-link); }
.vmw-roster-buff-legend .is-missing, .vmw-roster-buff-row.is-missing .vmw-roster-buff-status { color: color-mix(in srgb, var(--vmw-danger) 75%, var(--rz-text-color)); }
.vmw-roster-buff-list { padding: 4px 10px 12px; max-height: 70vh; overflow-y: auto; scrollbar-gutter: stable; }
.vmw-roster-buff-list:focus-visible { outline: 2px solid var(--vmw-accent); outline-offset: -2px; }
.vmw-roster-buff-section h3 { margin: 15px 6px 8px; font-size: .72rem; color: var(--vmw-dim); }
.vmw-roster-buff-section ul { margin: 0; padding: 0; list-style: none; }
.vmw-roster-buff-row { display: grid; grid-template-columns: 15px 20px minmax(0, 1fr); gap: 5px; align-items: center; padding: 4px; font-size: .71rem; line-height: 1.35; color: var(--rz-text-color); text-decoration: none; border-radius: var(--vmw-radius-sm); }
.vmw-roster-buff-row img { border-radius: 3px; }
.vmw-roster-buff-status { font-size: 1rem; text-align: center; font-weight: 700; }
.vmw-roster-buff-row:hover { background: var(--vmw-hover); color: var(--vmw-link); }
.vmw-roster-buff-row:focus-visible { outline: 2px solid var(--vmw-accent); }
.vmw-roster-buff-row.is-missing > span:last-child { color: var(--vmw-dim); }
.vmw-roster-buff-note { margin: 0; padding: 12px 16px; border-top: 1px solid var(--vmw-border); font-size: .68rem; line-height: 1.6; color: var(--vmw-dim); }
@media (max-width: 1900px) { .vmw-roster-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1300px) { .vmw-roster-workspace { grid-template-columns: 240px minmax(0, 1fr); } .vmw-roster-buff-panel { grid-column: 2; } .vmw-roster-buff-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; max-height: none; } .vmw-roster-team-name { max-width: none; } }
@media (max-width: 1024px) { .vmw-roster-workspace { grid-template-columns: minmax(0, 1fr); } .vmw-roster-buff-panel { grid-column: auto; } .vmw-roster-pool-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: 360px; } .vmw-roster-pool-list > .vmw-empty { grid-column: 1 / -1; } }
@media (max-width: 640px) { .vmw-roster-groups, .vmw-roster-pool-list { grid-template-columns: minmax(0, 1fr); } .vmw-roster-team-toolbar { gap: 12px; } .vmw-roster-save-actions { width: 100%; } .vmw-roster-save-actions > button { flex: 1; } .vmw-roster-save-state > .vmw-link-btn { margin-left: 0; } .vmw-roster-player-name > strong { font-size: .82rem; } .vmw-roster-destination { min-height: 34px; font-size: .72rem; } }
@media (prefers-reduced-motion: reduce) { .vmw-roster-player, .vmw-roster-group { transition: none; } }
@media (max-width: 460px) { .vmw-roster-buff-list { grid-template-columns: minmax(0, 1fr); } }
