.roster-launch{max-width:1280px;margin:0 auto 12px;display:flex;justify-content:flex-end}
.roster-panel{color:#f5f4f2;background:#111;border:1px solid #414141;border-radius:18px;padding:clamp(16px,4vw,32px);width:min(600px,calc(100vw - 24px));font:15px/1.5 var(--body,system-ui);box-sizing:border-box}
dialog.roster-panel{max-height:calc(100dvh - 24px);overflow:auto;margin:auto}
.roster-panel::backdrop{background:#000b}
.roster-panel [hidden]{display:none!important}
.roster-head{display:flex;justify-content:space-between;align-items:start;gap:12px;padding-bottom:14px;border-bottom:1px solid #414141;margin-bottom:14px}
.roster-head h2{font:400 clamp(16px,3vw,24px)/1.25 var(--display,system-ui);margin:0}
.roster-panel form{display:grid;gap:12px}
.roster-panel label{display:grid;gap:4px}
.roster-panel small{color:#b7b7b7}
.roster-panel input,.roster-panel textarea,.roster-panel select{font:inherit;color:#fff;background:#050505;border:1px solid #626262;border-radius:8px;min-height:44px;padding:9px 10px;width:100%;box-sizing:border-box}
.roster-panel textarea{resize:vertical}
.roster-panel button,.roster-launch button{font:inherit;color:#fff;background:#171717;border:1px solid #626262;border-radius:999px;padding:8px 14px;min-height:44px;cursor:pointer}
.roster-panel .roster-primary,.roster-launch button{background:#f5f4f2;color:#050505;border-color:#f5f4f2;font-weight:600}
.roster-panel button:disabled{opacity:.55;cursor:wait}
.roster-panel :focus-visible,.roster-launch button:focus-visible{outline:2px solid #ffc86b;outline-offset:3px}
.roster-status{min-height:1.5em;color:#ffc86b}
.roster-admin{margin:32px auto}
.roster-request{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;border-top:1px solid #414141;padding:14px 0;overflow-wrap:anywhere}
.roster-request img{width:64px;height:64px;object-fit:cover;border-radius:50%}
.roster-request a{text-decoration:underline}
.roster-request button{margin:8px 8px 0 0}
.map-overview .node .av,.map-overview .node.inner .av{width:108px!important;height:108px!important}
.map-overview .node.boss .av{width:232px!important;height:232px!important}
.map-overview .node:not(.boss) b{width:fit-content!important}
#roster-editor{max-width:1280px;margin:24px auto;padding:0 12px}
#roster-editor[hidden]{display:none}
#roster-editor h1{font:400 clamp(20px,4vw,38px)/1.2 var(--display,system-ui)}
#roster-editor header p{color:#b7b7b7;margin:8px 0 16px}
#roster-editor .editor-controls{width:100%;margin-bottom:16px}
.editor-controls form{margin-top:10px}
.editor-controls .editor-checkbox{display:flex;align-items:center;gap:8px}
.editor-checkbox input{width:18px;min-height:18px;accent-color:white}
.editor-actions{display:flex;gap:8px;flex-wrap:wrap}
.editor-controls [data-map-status]:empty{display:none}
.editor-controls [data-map-removed]{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
#roster-editor .node[data-name]:not(.boss){touch-action:none;cursor:grab;transition:none}
#roster-editor .node.editor-dragging{cursor:grabbing;z-index:10}
#roster-editor .node.editor-selected .av img{outline:4px solid #ffc86b;outline-offset:5px}
