*{box-sizing:border-box;margin:0;padding:0}html,body{-webkit-text-size-adjust:100%;overscroll-behavior-y:none;background:#04040c}@media (hover:none) and (pointer:coarse){button,[data-tap]{touch-action:manipulation}input,textarea,select{font-size:16px!important}}input[type=range]{appearance:none;cursor:pointer;background:#252540;border-radius:3px;outline:none;height:6px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;cursor:grab;background:#f8fafc;border:2px solid #0a0a1c;border-radius:50%;width:17px;height:17px;box-shadow:0 1px 5px #0000008c}input[type=range]::-webkit-slider-thumb:active{cursor:grabbing}input[type=range]::-moz-range-thumb{cursor:grab;background:#f8fafc;border:2px solid #0a0a1c;border-radius:50%;width:17px;height:17px;box-shadow:0 1px 5px #0000008c}input[type=range]::-moz-range-track{background:0 0;border-radius:3px;height:6px}select option{background:#09091e}.thin-scroll{scrollbar-width:thin;scrollbar-color:#252540 transparent}.thin-scroll::-webkit-scrollbar{width:9px;height:9px}.thin-scroll::-webkit-scrollbar-track{background:0 0}.thin-scroll::-webkit-scrollbar-thumb{background:#252540;border-radius:5px}.thin-scroll::-webkit-scrollbar-thumb:hover{background:#35355e}.roster{color:#cbd5e1;flex-direction:column;flex:1;gap:12px;min-height:0;padding:18px 24px 16px;display:flex}.roster-head{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.roster-head h1{color:#f1f5f9;letter-spacing:-.3px;font-size:21px;font-weight:650}.roster-head p{color:#8896ad;max-width:64ch;margin-top:2px;font-size:13px}.roster-tools{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.roster-field,.roster-btn{color:#cbd5e1;background:#101026;border:1px solid #2a2a48;border-radius:9px;height:34px;padding:0 12px;font-family:inherit;font-size:13px}.roster-field:focus{border-color:#6366f1;outline:none}.roster-btn{color:#a8b6cc;cursor:pointer;white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.roster-btn:hover{color:#f1f5f9;background:#17173a}.roster-btn.primary{color:#fff;background:#4f46e5;border-color:#6366f1;font-weight:600}.roster-btn.primary:hover{background:#5b52f0}.roster-btn.danger{color:#fca5a5}.roster-status{color:#5b6a80;align-items:center;gap:6px;font-size:12px;display:inline-flex}.roster-status i{background:#22c55e;border-radius:50%;width:6px;height:6px}.roster-status.saving i{background:#fbbf24}.roster-status.error{color:#fca5a5}.roster-status.error i{background:#ef4444}.roster-stats{color:#8896ad;flex-wrap:wrap;align-items:center;gap:22px;font-size:12.5px;display:flex}.roster-stats b{color:#f1f5f9;font-variant-numeric:tabular-nums;font-weight:600}.roster-split{vertical-align:middle;background:#1c1c36;border-radius:4px;width:120px;height:8px;margin-left:8px;display:inline-flex;overflow:hidden}.roster-wrap{background:#0b0b1d;border:1px solid #1c1c36;border-radius:12px;outline:none;flex:1;min-height:0;overflow:auto}.roster-wrap:focus-visible{border-color:#3b3b74}.roster table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:100%;min-width:1060px}.roster thead th{z-index:2;text-align:left;letter-spacing:.8px;text-transform:uppercase;color:#8896ad;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#0e0e24;border-bottom:1px solid #2a2a48;padding:10px 12px;font-size:11px;font-weight:700;position:sticky;top:0}.roster thead th.sortable{cursor:pointer}.roster thead th.sortable:hover{color:#f1f5f9}.roster thead th .rng{letter-spacing:0;text-transform:none;color:#5b6a80;margin-left:5px;font-weight:500}.roster thead th .arrow{color:#818cf8;margin-left:4px}.roster tbody td{white-space:nowrap;border-bottom:1px solid #1c1c36;height:44px;padding:0 12px;position:relative}.roster tbody tr:hover td{background:#12122b}.roster tbody tr.sel td{background:#1a1a3d}.roster td.cell.active{box-shadow:inset 0 0 0 2px #818cf8}.roster .chk{width:40px;padding-right:0}.roster .chk input{accent-color:#6366f1;cursor:pointer;vertical-align:middle;width:15px;height:15px}.roster .empty-row td{text-align:center;color:#5b6a80;height:90px}.roster-name{color:#f1f5f9;align-items:center;gap:10px;min-width:150px;font-weight:550;display:flex}.roster-dot{border-radius:50%;flex-shrink:0;box-shadow:inset -2px -2px 4px #00000059,inset 2px 2px 3px #ffffff2e}.roster-type{background:#17172e;border:1px solid #2a2a48;border-radius:6px;padding:3px 9px;font-size:12.5px}.roster-chips{gap:5px;display:flex}.roster-chip{white-space:nowrap;border:1px solid;border-radius:20px;padding:2px 8px;font-size:11.5px}.roster-empty{color:#5b6a80;font-size:12.5px}.roster-notes{color:#8896ad;text-overflow:ellipsis;max-width:220px;font-size:12.5px;overflow:hidden}.roster-metric{align-items:center;gap:10px;min-width:170px;display:flex}.roster-track{cursor:ew-resize;touch-action:none;flex:1;height:22px;position:relative}.roster-track:before{content:"";background:#1d1d38;border-radius:2px;height:4px;position:absolute;top:9px;left:0;right:0}.roster-track .fill{border-radius:2px;height:4px;position:absolute;top:9px}.roster-track .zero{background:#34345a;width:1px;height:10px;position:absolute;top:6px;left:50%}.roster-track .knob{opacity:0;pointer-events:none;background:#e2e8f0;border-radius:50%;width:12px;height:12px;margin-left:-6px;transition:opacity .12s;position:absolute;top:5px;box-shadow:0 0 0 3px #00000059}.roster-track:hover .knob,.roster td.active .knob,.roster-track.dragging .knob{opacity:1}.roster-val{text-align:right;color:#f1f5f9;width:80px;font-size:12.5px;line-height:1.2}.roster-val small{color:#5b6a80;font-size:10.5px;display:block}.roster-edit{color:#f1f5f9;width:100%;height:30px;font:inherit;background:#06060f;border:1px solid #818cf8;border-radius:6px;outline:none;padding:0 8px;font-size:13px}.roster tfoot td{color:#8896ad;z-index:2;background:#0e0e24;border-top:1px solid #2a2a48;padding:8px 12px;font-size:11.5px;position:sticky;bottom:0}.roster-hist{align-items:flex-end;gap:2px;height:22px;margin-bottom:3px;display:flex}.roster-hist span{border-radius:2px 2px 0 0;flex:1;min-height:1px}.roster-pop{z-index:50;background:#14142e;border:1px solid #34345a;border-radius:10px;min-width:200px;padding:6px;position:fixed;box-shadow:0 14px 40px -8px #000}.roster-pop h4{letter-spacing:.9px;text-transform:uppercase;color:#5b6a80;margin:4px 9px 6px;font-size:10.5px}.roster-pop button{text-align:left;width:100%;font:inherit;color:#cbd5e1;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:9px;padding:7px 9px;font-size:13px;display:flex}.roster-pop button:hover{background:#23234a}.roster-pop .sw{border-radius:3px;width:10px;height:10px}.roster-pop .tick{color:#818cf8;margin-left:auto;font-weight:700}.roster-dock{flex-wrap:wrap;align-items:center;gap:10px;min-height:34px;display:flex}.roster-bulk{background:#1a1a3d;border:1px solid #3b3b74;border-radius:11px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 8px 6px 14px;font-size:13px;display:flex}.roster-bulk b{color:#f1f5f9}.roster-bulk .roster-field,.roster-bulk .roster-btn{height:30px;padding:0 9px}.roster-hint{color:#5b6a80;font-size:11.5px}.roster-hint kbd{color:#8896ad;background:#101026;border:1px solid #2a2a48;border-radius:4px;padding:1px 5px;font:11px ui-monospace,Consolas,monospace}@media (width<=820px){.roster{padding:14px 12px 12px}.roster-tools{width:100%;margin-left:0}.roster-tools .roster-field[type=search]{flex:1;min-width:0}.roster-hint{display:none}}
