/* Roster Assistant screen — scoped (#roster / .rs*). Uses portal tokens
   (--navy/--teal/--gold/--danger/--muted/--border/--card/--radius-*). Shift
   states: allocated=neutral, suggested=teal, accepted=gold, unfillable=danger,
   pinned=gold accent. */
#roster { --rs-teal-glow: rgba(42,125,140,0.12); --rs-danger-soft: #fce8e6; }
.rs-hidden { display: none !important; }
.rs-muted { color: var(--muted); }
.rs-danger { color: var(--danger); font-size: 13.5px; }
#roster .btn-icon { padding: 6px 9px; line-height: 1; }

.rs-bar { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 6px; }
.rs-weeknav { display: flex; align-items: center; gap: 6px; }
.rs-weeklabel { font-family: 'Outfit', system-ui, sans-serif; font-weight: 600; font-size: 15px; min-width: 150px; text-align: center; }
.rs-actions { display: flex; gap: 8px; margin-left: auto; flex-wrap: wrap; align-items: center; }
.rs-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--danger); margin-left: 4px; }
.rs-freshness { font-size: 12px; color: var(--muted); margin-bottom: 10px; }

.rs-toolbar { display: flex; gap: 8px; align-items: center; margin-bottom: 12px; flex-wrap: wrap; }
.rs-toolbar input[type=search] { flex: 0 1 320px; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-sm); font: inherit; font-size: 13px; }
.rs-toolbar input[type=search]:focus { outline: none; border-color: var(--teal); }
.rs-sep { flex: 1; }
.rs-toggle { display: inline-flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }
.rs-toggle .btn { border: none; border-radius: 0; background: #fff; color: var(--navy); }
.rs-toggle .btn:hover { background: var(--bg); }
.rs-toggle .btn.on { background: var(--navy); color: #fff; }

.rs-stats { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.rs-stat { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 12px 16px; min-width: 120px; }
.rs-stat b { display: block; font-family: 'Outfit', system-ui, sans-serif; font-size: 26px; font-weight: 700; line-height: 1; color: var(--navy); }
.rs-stat span { display: block; margin-top: 5px; font-size: 11px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }
.rs-stat.warn b { color: var(--teal); } .rs-stat.bad b { color: var(--danger); } .rs-stat.good b { color: var(--gold-deep); }
.rs-stat.actions { display: flex; gap: 8px; align-items: center; border: none; background: transparent; padding: 12px 0; }

.rs-unfillable { background: var(--rs-danger-soft); border: 1px solid #f0cbc4; border-radius: var(--radius-md); padding: 10px 14px; margin-bottom: 12px; }
.rs-unfillable h3 { margin: 0 0 6px; font-size: 13px; color: var(--danger); display: flex; align-items: center; gap: 6px; }

.rs-gridwrap { overflow: auto; max-height: calc(100vh - 320px); border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--card); }
table.rs-roster { border-collapse: separate; border-spacing: 0; width: 100%; }
table.rs-roster th, table.rs-roster td { border-bottom: 1px solid var(--border); border-right: 1px solid #eef1f4; padding: 6px; vertical-align: top; min-width: 116px; }
table.rs-roster th { background: var(--bg); font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); font-weight: 600; padding: 9px 6px; text-align: center; position: sticky; top: 0; z-index: 5; }
table.rs-roster th.corner { left: 0; z-index: 7; text-align: left; }
table.rs-roster th.today, table.rs-roster td.today { background: var(--rs-teal-glow); }
table.rs-roster th.wknd, table.rs-roster td.wknd { background: #f6f4ee; }
table.rs-roster td.staff-cell { min-width: 168px; max-width: 188px; padding: 8px 10px; background: #fcfdfe; position: sticky; left: 0; z-index: 4; box-shadow: 2px 0 4px rgba(15,30,51,0.05); }
.rs-staffname { font-weight: 600; font-size: 13px; cursor: pointer; color: var(--navy); }
.rs-staffname:hover { color: var(--teal); text-decoration: underline; }
.rs-fixedbadge { font-size: 10px; font-weight: 600; color: var(--navy); background: #e7edf3; border-radius: var(--radius-pill); padding: 1px 7px; display: inline-flex; align-items: center; gap: 3px; }
.rs-ruledot { color: var(--teal); }
.rs-hours { font-size: 11px; color: var(--muted); margin-top: 3px; } .rs-hours.under { color: var(--danger); font-weight: 600; }
.rs-hoursbar { height: 5px; background: #e8edf1; border-radius: var(--radius-pill); margin-top: 4px; overflow: hidden; }
.rs-hoursbar i { display: block; height: 100%; border-radius: var(--radius-pill); background: var(--teal); } .rs-hoursbar i.warn { background: var(--gold); } .rs-hoursbar i.over { background: var(--danger); }
tr.staff-fixed .staff-cell { background: var(--bg); } tr.staff-fixed .rs-hoursbar i { background: var(--muted); }

.rs-chip { display: block; border-radius: var(--radius-sm); padding: 4px 7px; font-size: 11.5px; line-height: 1.3; margin: 3px 0; cursor: pointer; border: 1px solid transparent; }
.rs-chip b { display: block; font-size: 11px; }
.rs-chip.allocated { background: #eef2f7; border-color: #dbe2ea; color: var(--navy); }
.rs-chip.suggested { background: #fff3b0; border: 1.5px dashed #e0a800; color: #5e4a00; }
.rs-chip.accepted { background: var(--gold-soft); border: 1.5px solid var(--gold); color: var(--gold-deep); }
.rs-chip.unfillable, .rs-chip.warnchip { background: var(--rs-danger-soft); border: 1.5px dashed #e0a59d; color: var(--danger); }
.rs-chip.selected { outline: 2px solid var(--navy); }
.rs-chip.pinned { box-shadow: inset 3px 0 0 var(--gold); }
.rs-chip.hit { outline: 2px solid var(--teal); } .rs-chip.dim { opacity: 0.35; }
.rs-chip:hover { filter: brightness(0.97); }
.rs-pindot { color: var(--gold-deep); margin-right: 1px; }
.rs-ablock { display: block; font-size: 10.5px; line-height: 1.3; border-radius: var(--radius-sm); padding: 2px 6px; margin: 2px 0; white-space: nowrap; }
.rs-ablock.off { background: repeating-linear-gradient(45deg, #f1f3f5, #f1f3f5 4px, #e3e8ee 4px, #e3e8ee 8px); color: #5b6877; border: 1px solid #dbe2e9; }
table.rs-roster.compact .rs-chip { padding: 2px 5px; font-size: 10.5px; }
table.rs-roster.compact td, table.rs-roster.compact th { padding: 3px; }
table.rs-roster.compact .rs-hours, table.rs-roster.compact .rs-hoursbar { display: none; }

.rs-empty { margin: 32px auto; max-width: 520px; text-align: center; padding: 32px; color: var(--muted); }
.rs-empty h2 { color: var(--navy); margin-top: 0; }

/* panel */
.rs-panel { position: fixed; top: 0; right: 0; bottom: 0; width: 400px; max-width: 92vw; background: #fff; border-left: 1px solid var(--border); box-shadow: -8px 0 24px rgba(15,30,51,0.12); z-index: 1200; display: flex; flex-direction: column; }
.rs-panelhead { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--border); }
.rs-panelhead h2 { font-size: 16px; margin: 0; color: var(--navy); }
.rs-panelbody { padding: 14px 16px; overflow-y: auto; }
.rs-shiftmeta { font-size: 13px; color: var(--muted); margin-bottom: 12px; } .rs-shiftmeta b { color: var(--navy); }
.rs-candidate { border: 1px solid var(--border); border-radius: var(--radius-md); padding: 10px 12px; margin-bottom: 10px; }
.rs-candidate.top { border-color: var(--teal); background: var(--rs-teal-glow); }
.rs-candidate.accepted { border-color: var(--gold); background: var(--gold-soft); }
.rs-candidate.warned { border-color: #e0a59d; background: var(--rs-danger-soft); }
.rs-candidate .head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.rs-candidate .name { font-weight: 600; font-size: 14px; color: var(--navy); }
.rs-candidate .tag { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; border-radius: var(--radius-pill); padding: 3px 9px; background: var(--rs-teal-glow); color: var(--teal-dark); }
.rs-candidate .tag.pref { background: var(--rs-teal-glow); color: var(--teal-dark); } .rs-candidate .tag.pin { background: var(--gold-soft); color: var(--gold-deep); }
.rs-candidate.accepted .tag { background: var(--gold-soft); color: var(--gold-deep); }
.rs-candidate ul { margin: 8px 0 0; padding-left: 18px; font-size: 12.5px; color: var(--ink); }
.rs-candidate ul li.warn { color: var(--gold-deep); }
.rs-candidate .row-actions { margin-top: 9px; display: flex; gap: 6px; flex-wrap: wrap; }
.rs-rejected { margin-top: 14px; } .rs-rejected summary { font-size: 13px; color: var(--muted); cursor: pointer; }
.rs-rejected table { width: 100%; font-size: 12.5px; margin-top: 8px; border-collapse: collapse; } .rs-rejected td { padding: 4px 6px; border-bottom: 1px solid #f1f5f9; }
.rs-reviewbar { display: flex; justify-content: space-between; align-items: center; background: var(--navy); color: #fff; border-radius: var(--radius-md); padding: 9px 12px; font-size: 13px; margin-bottom: 10px; }
.rs-reviewbar .btn { background: rgba(255,255,255,0.12); color: #fff; border-color: rgba(255,255,255,0.25); }
.rs-reviewnav { display: flex; gap: 6px; }
.rs-reviewhints { font-size: 11.5px; color: var(--muted); text-align: center; margin: -4px 0 10px; }
.rs-pinbanner { background: var(--gold-soft); border: 1px solid #e3cfa2; color: var(--gold-deep); border-radius: var(--radius-md); padding: 9px 11px; font-size: 12.5px; margin-bottom: 10px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rs-pinwarn { background: var(--rs-danger-soft); border: 1px solid #f0cbc4; color: var(--danger); border-radius: var(--radius-md); padding: 9px 11px; font-size: 12.5px; margin-bottom: 10px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rs-pincta { background: var(--rs-teal-glow); border: 1px solid #b8dde2; color: var(--teal-dark); border-radius: var(--radius-md); padding: 9px 11px; font-size: 12.5px; margin-bottom: 10px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

.rs-section { margin-bottom: 20px; }
.rs-section h3 { font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); font-weight: 600; margin: 0 0 10px; display: flex; align-items: center; gap: 6px; }
.rs-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; font-size: 13px; }
.rs-row input[type=number], .rs-row input[type=time], .rs-row select { padding: 6px 8px; border: 1px solid var(--border); border-radius: var(--radius-sm); font: inherit; font-size: 13px; }
.rs-row input[type=number] { width: 84px; }
.rs-ruleline { display: flex; align-items: center; justify-content: space-between; font-size: 13px; padding: 7px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); margin-bottom: 6px; background: #fbfcfd; }
.rs-ruleadd { display: flex; gap: 6px; align-items: center; margin-top: 10px; flex-wrap: wrap; }
.rs-ruleadd select, .rs-ruleadd input[type=time] { padding: 5px 7px; border: 1px solid var(--border); border-radius: var(--radius-sm); font: inherit; font-size: 12.5px; }
.rs-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.rs-prefchip { font-size: 11.5px; border: 1px solid var(--border); border-radius: var(--radius-pill); padding: 3px 10px; cursor: pointer; user-select: none; }
.rs-prefchip.pref.on { background: var(--teal); border-color: var(--teal); color: #fff; }
.rs-prefchip.block.on { background: var(--danger); border-color: var(--danger); color: #fff; }
.rs-back { font-size: 13px; color: var(--teal); text-decoration: none; }
.rs-panelsearch { width: 100%; padding: 9px 12px; border: 1px solid var(--border); border-radius: var(--radius-sm); font: inherit; font-size: 13px; margin-bottom: 10px; }
.rs-clientrow { display: flex; justify-content: space-between; align-items: center; padding: 9px 10px; border-bottom: 1px solid #f1f5f9; font-size: 13.5px; cursor: pointer; border-radius: var(--radius-sm); }
.rs-clientrow:hover { background: var(--rs-teal-glow); } .rs-clientrow.hidden > span:first-child { opacity: 0.55; }
.rs-hiddenbadge { font-size: 10px; background: var(--muted); color: #fff; border-radius: var(--radius-pill); padding: 1px 7px; text-transform: uppercase; }

/* modal */
.rs-modalback { position: fixed; inset: 0; background: rgba(15,30,51,0.5); z-index: 1300; display: flex; align-items: flex-start; justify-content: center; padding: 6vh 16px; }
.rs-modal { background: #fff; border-radius: var(--radius-md); width: 760px; max-width: 100%; max-height: 86vh; display: flex; flex-direction: column; box-shadow: 0 6px 16px rgba(15,30,51,0.16); }
.rs-modalhead { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--border); }
.rs-modalhead h2 { margin: 0; font-size: 18px; color: var(--navy); }
.rs-modalbody { padding: 16px 20px; overflow-y: auto; }
.rs-progress { font-size: 13px; margin-bottom: 10px; color: var(--muted); } .rs-progress b { color: var(--teal); font-family: 'Outfit', system-ui, sans-serif; font-size: 17px; }
.rs-clline { font-size: 13.5px; padding: 8px 4px; border-bottom: 1px solid #f1f5f9; display: flex; gap: 10px; align-items: center; cursor: default; }
.rs-clline .when { color: var(--muted); min-width: 160px; } .rs-clline .main { flex: 1; } .rs-clline .main b { color: var(--navy); }
.rs-clline.done .main, .rs-clline.done .when { text-decoration: line-through; opacity: 0.55; }
.rs-clline .badge { font-size: 10px; font-weight: 600; text-transform: uppercase; border-radius: var(--radius-pill); padding: 2px 8px; }
.rs-clline .badge.acc { background: var(--gold-soft); color: var(--gold-deep); } .rs-clline .badge.sug { background: var(--rs-teal-glow); color: var(--teal-dark); } .rs-clline .badge.chg { background: #e7edf3; color: var(--navy); }
.rs-cllink { font-size: 12px; color: var(--teal); text-decoration: none; white-space: nowrap; }
.rs-tools { display: flex; gap: 8px; align-items: center; margin: 6px 0; }
.rs-scope { display: flex; gap: 8px; margin-bottom: 8px; align-items: center; }
.rs-rtotals { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 10px; margin-bottom: 16px; }
.rs-rtotals .rt { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 12px 14px; }
.rs-rtotals .rt b { display: block; font-family: 'Outfit', system-ui, sans-serif; font-size: 22px; font-weight: 700; color: var(--navy); } .rs-rtotals .rt.bad b { color: var(--danger); }
.rs-rtotals .rt span { font-size: 11px; color: var(--muted); text-transform: uppercase; }
.rs-repweek { border-top: 1px solid var(--border); padding-top: 10px; margin-top: 12px; } .rs-repweek h3 { margin: 0 0 6px; font-size: 15px; color: var(--navy); }
.rs-ok { background: var(--rs-teal-glow); border: 1px solid #b8dde2; border-radius: var(--radius-md); padding: 12px 14px; font-size: 13.5px; color: var(--teal-dark); margin: 12px 0; }
.rs-count { font-size: 13.5px; margin: 12px 0 6px; }
.rs-gapslot { border: 1px solid var(--border); background: #fff; border-radius: var(--radius-md); padding: 9px 11px; margin-bottom: 7px; } .rs-gapslot.dismissed { background: var(--bg); }
.rs-gapwhen { font-size: 13.5px; font-weight: 600; color: var(--navy); display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rs-gapmeta { font-size: 12px; margin-top: 1px; }
.rs-gapmissing { font-size: 12.5px; color: var(--danger); font-weight: 600; margin-top: 4px; display: flex; align-items: center; gap: 5px; }
.rs-gapactions { display: flex; gap: 6px; margin-top: 7px; flex-wrap: wrap; } .rs-gapactions a.btn { text-decoration: none; }
.rs-dismissed { margin-top: 16px; } .rs-dismissed summary { font-size: 12.5px; color: var(--muted); cursor: pointer; }

/* more menu */
.rs-menu { position: fixed; z-index: 1250; background: #fff; border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: 0 6px 16px rgba(15,30,51,0.16); padding: 8px; min-width: 230px; }
.rs-menugroup { padding: 4px 0; } .rs-menugroup + .rs-menugroup { border-top: 1px solid #f1f3f5; margin-top: 4px; }
.rs-menulabel { font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); font-weight: 600; padding: 6px 10px 4px; }
.rs-menuitem { display: block; width: 100%; text-align: left; background: none; border: none; cursor: pointer; font: inherit; font-size: 13px; color: var(--navy); padding: 8px 10px; border-radius: var(--radius-sm); }
.rs-menuitem:hover { background: var(--bg); color: var(--teal-dark); }

/* Week strip — one pill per pulled week showing % allocated in ShiftCare */
.rs-weekstrip { display: flex; gap: 6px; flex-wrap: wrap; margin: -2px 0 10px; }
.rs-wk { display: inline-flex; align-items: center; gap: 6px; font: inherit; font-size: 11px; color: var(--navy); background: #fff; border: 1px solid var(--border); border-radius: 999px; padding: 3px 10px; cursor: pointer; }
.rs-wk b { font-size: 11px; }
.rs-wk.ok b { color: var(--teal-dark); }
.rs-wk.mid b { color: #8b6914; }
.rs-wk.low b { color: var(--danger); }
.rs-wk:hover { border-color: var(--teal); }
.rs-wk.on { background: var(--navy); color: #fff; border-color: var(--navy); }
.rs-wk.on b { color: #fff; }
