/* One bounded dialog, one scroll region; no oversized form inside a smaller shell. */
#rosterDialog { width:min(1180px,calc(100vw - 48px)); max-width:none; max-height:none; height:min(860px,calc(100dvh - 48px)); margin:auto; overflow:hidden; color:#17263f; }
#rosterDialog .roster-dialog { width:100%; min-width:0; height:100%; display:flex; flex-direction:column; overflow:hidden; }
#rosterDialog .roster-dialog>header { flex:none; padding:20px 24px 16px; gap:16px; }
#rosterDialog h2 { margin:4px 0 7px; font-size:24px; color:#162746; }
#rosterDialog header .icon-button { flex:none; align-self:flex-start; width:40px; height:40px; }
#rosterDialog .roster-op-summary { font-size:12px; color:#65758e; line-height:1.6; overflow-wrap:anywhere; }
#rosterDialog .roster-top-actions { flex:none; display:flex; align-items:flex-end; gap:10px; padding:14px 24px; border-bottom:1px solid #e4ebf6; background:white; }
#rosterDialog .roster-search { display:grid; gap:6px; flex:1; min-width:100px; color:#536783; font-size:12px; }
#rosterDialog .roster-search input { width:100%; min-width:0; min-height:40px; }
#rosterDialog button { min-height:38px; white-space:nowrap; }
#rosterDialog .roster-content { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; padding:18px 24px 24px; scrollbar-gutter:stable; background:#f7faff; }
#rosterDialog .roster-tip { margin:0 0 14px; border-radius:8px; font-size:12px; }
#rosterDialog .roster-toolbar { justify-content:flex-start; margin:12px 0; }
#rosterDialog .roster-tree { display:grid; grid-auto-rows:max-content; max-height:none; overflow:visible; padding:0; gap:16px; }
#rosterDialog .roster-manager-card { min-width:0; overflow:visible; border-radius:12px; }
#rosterDialog .roster-manager-head { border-radius:12px 12px 0 0; flex-wrap:wrap; padding:13px 14px; }
#rosterDialog .roster-operator-head { flex-wrap:wrap; padding:12px 14px; }
#rosterDialog .roster-manager-head input { min-width:0; width:150px; }
#rosterDialog .roster-operator-head input { min-width:0; width:140px; }
#rosterDialog .roster-operator-head label { min-width:0; }
#rosterDialog .roster-editor-row { grid-template-columns:8px minmax(120px,1fr) minmax(170px,1.5fr) 90px 36px; align-items:center; padding:12px 14px; gap:12px; }
#rosterDialog .roster-person-dot { margin:0; }
#rosterDialog .roster-editor-row input,#rosterDialog .roster-editor-row select { min-width:0; min-height:38px; font-size:13px; }
#rosterDialog .roster-unassigned { max-height:none; overflow:visible; }
#rosterDialog .roster-dialog>footer { flex:none; margin:0; padding:14px 24px; align-items:center; background:#fff; box-shadow:0 -4px 18px #233e7510; }
#rosterDialog #rosterStatus { margin:0 auto 0 0; font-size:12px; line-height:1.6; color:#536783; overflow-wrap:anywhere; }
#rosterDialog #rosterConfirm { flex:none; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 24px; background:#fff6e5; border-top:1px solid #ecd9aa; color:#74510f; font-size:13px; }
#rosterDialog #rosterConfirm>div { display:flex; flex-wrap:wrap; gap:8px; }
#rosterDialog:not(.roster-editing) .roster-toolbar,#rosterDialog:not(.roster-editing) .roster-import,#rosterDialog:not(.roster-editing) .roster-keywords,
#rosterDialog:not(.roster-editing) .roster-add-operator,#rosterDialog:not(.roster-editing) .roster-del-manager,#rosterDialog:not(.roster-editing) .roster-add-editor,
#rosterDialog:not(.roster-editing) .roster-del-operator,#rosterDialog:not(.roster-editing) .roster-del,#rosterDialog:not(.roster-editing) #rosterUnassigned,#rosterDialog:not(.roster-editing) #rosterSave { display:none!important; }
#rosterDialog:not(.roster-editing) .roster-editor-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
#rosterDialog:not(.roster-editing) .roster-editor-row { grid-template-columns:8px minmax(0,1fr) 64px; gap:10px; }
#rosterDialog:not(.roster-editing) .roster-editor-row label { font-size:11px; }
#rosterDialog:not(.roster-editing) #rosterRows input:disabled,#rosterDialog:not(.roster-editing) #rosterRows select:disabled { opacity:1; -webkit-text-fill-color:currentColor; color:#182b4b; background:transparent; border-color:transparent; box-shadow:none; padding:0; cursor:default; }
#rosterDialog:not(.roster-editing) #rosterRows select:disabled { color:#43755f; appearance:none; background-image:none; }
#rosterDialog:not(.roster-editing) #rosterRows [data-field=name] { font-size:15px; font-weight:700; }
#rosterDialog button:focus-visible,#rosterDialog input:focus-visible,#rosterDialog select:focus-visible { outline:3px solid #5c87ef; outline-offset:2px; }
body.roster-modal-open { overflow:hidden; }
@media(max-width:700px) {
 #rosterDialog { width:calc(100vw - 16px); height:calc(100dvh - 16px); }
 #rosterDialog .roster-dialog>header { padding:16px; }
 #rosterDialog h2 { font-size:21px; }
 #rosterDialog .roster-top-actions { padding:12px 16px; flex-wrap:wrap; gap:8px; }
 #rosterDialog .roster-search { flex:1 0 100%; }
 #rosterDialog .roster-top-actions button { flex:1; padding:7px 9px; font-size:12px; }
 #rosterDialog .roster-content { padding:12px; }
 #rosterDialog .roster-manager-head,#rosterDialog .roster-operator-head { padding:12px; gap:8px; }
 #rosterDialog .roster-manager-head input { width:120px; }
 #rosterDialog .roster-count { white-space:normal; }
 #rosterDialog .roster-operators { padding:8px; }
 #rosterDialog .roster-editor-row { grid-template-columns:6px minmax(0,1fr) 72px 32px; gap:8px; padding:10px; }
 #rosterDialog .roster-editor-row .roster-keywords { grid-column:2/-1; grid-row:2; }
 #rosterDialog:not(.roster-editing) .roster-editor-list { grid-template-columns:1fr; }
 #rosterDialog .roster-dialog>footer { padding:12px 16px; flex-wrap:wrap; }
 #rosterDialog #rosterStatus { flex-basis:100%; }
 #rosterDialog .roster-dialog>footer button { flex:1; }
 #rosterDialog #rosterConfirm { flex-direction:column; align-items:stretch; padding:12px 16px; }
}
