/* Scoped shift additions: original task cards, filters and calendar layout are retained. */
.shift-summary{margin:0 0 22px;padding:18px 22px;border:1px solid #cad9cf;border-radius:10px;background:#edf3ee;color:#29453d}
.shift-summary-top{display:flex;align-items:center;justify-content:space-between;gap:20px}.shift-summary p{margin:5px 0;font-size:14px}.shift-summary strong{font-size:19px}.shift-summary-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.shift-summary-tools label{display:flex;align-items:center;gap:8px;font-size:14px}.shift-summary-tools input{width:160px;background:white}.shift-summary-tools button,.shift-summary-tools input{min-height:44px}
.shift-duty-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px;border-top:1px solid #cedbd0;padding-top:16px}.shift-duty{padding:14px;background:#fff;border-radius:8px}.shift-duty h3{margin:0;font-size:18px}.shift-duty li{margin:9px 0;line-height:1.65}.shift-duty ul{padding-left:22px;margin:12px 0 0}.shift-footnote{font-size:13px;color:#72857a;line-height:1.65;margin-top:18px}
#shift-dialog{width:min(1020px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:28px;box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain}.shift-dialog button{min-height:44px}.shift-dialog h3{font-size:20px}.shift-week-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 12px}.shift-week-nav strong{font-size:15px;text-align:center}.shift-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.shift-week-day{padding:10px 6px;text-align:left;min-width:0;display:flex;flex-direction:column;gap:5px;overflow-wrap:anywhere}.shift-week-day strong{font-size:13px}.shift-week-day small{font-size:12px;line-height:1.45;color:#708577}.shift-week-day[aria-pressed=true]{background:#e8f1e9;border-color:#74987d;box-shadow:inset 0 0 0 1px #74987d}.shift-editor{margin-top:22px;background:#f4f7f3;border:1px solid #d8e3d8;border-radius:10px;padding:18px}.shift-editor h3{margin:0 0 16px}.shift-choice-row{display:flex;align-items:center;gap:18px;margin:14px 0}.shift-choice-label{min-width:125px;display:flex;flex-direction:column;gap:4px}.shift-choice-label small{font-size:13px;color:#758879}.shift-people{display:flex;gap:8px;flex-wrap:wrap}.shift-person[aria-pressed=true]{background:#306759;color:white;border-color:#306759}.shift-person{padding:9px 16px}.shift-preview{margin-top:22px}.shift-preview-item{display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid #e0e7df;padding:11px 0}.shift-preview-item>div{display:flex;flex-direction:column;gap:5px;min-width:0}.shift-preview-item small{color:#788879;font-size:12px}.shift-preview-item strong{font-size:16px;overflow-wrap:anywhere}.shift-preview-item span{font-size:14px;color:#536f60}.shift-preview-item button{flex-shrink:0}.shift-kept{margin-top:14px;padding:12px;border:1px solid #dce4d9;border-radius:8px}.shift-kept summary{cursor:pointer;min-height:32px;padding:4px}.shift-gap,.shift-operation{padding:12px 16px;background:#fbf7ec;border:1px solid #e5d7b7;border-radius:8px;margin:16px 0}.shift-gap p,.shift-operation p{margin:6px 0;font-size:14px;line-height:1.6}.shift-gap small{font-size:13px}.shift-local-operation:empty{display:none}.shift-item-context{padding:10px 14px;margin:12px 0;background:#f1f5ee;border-radius:6px}.shift-item-context p{font-size:13px;margin:3px 0}.shift-item-context button{margin-top:4px}
.shift-calendar-entry{font-size:11px;line-height:1.45;padding:3px 6px;min-height:30px;border:0;background:#edf3ec;color:#637d65;border-radius:4px;max-width:100%;text-align:left;overflow-wrap:anywhere}.cal-date-head:has(.shift-calendar-entry){flex-wrap:wrap;gap:4px}.cal-date-head .shift-calendar-entry{margin-left:auto}
@media(max-width:760px){.shift-summary-top{align-items:flex-start;flex-direction:column;gap:10px}.shift-summary-tools{width:100%}.shift-duty-grid{grid-template-columns:1fr}.shift-choice-row{align-items:flex-start;flex-direction:column;gap:8px}.shift-choice-label{flex-direction:row;align-items:center;gap:12px}.shift-week{grid-template-columns:repeat(4,minmax(0,1fr))}.shift-preview-item{align-items:flex-start}.shift-preview-item button{font-size:12px;padding:6px}.shift-summary{padding:14px}}
@media(max-width:440px){#shift-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);padding:18px 14px}.shift-week-nav strong{font-size:12px}.shift-week-nav{gap:6px}.shift-week-nav button{padding:8px}.shift-week{grid-template-columns:repeat(3,minmax(0,1fr))}.shift-editor{padding:12px}.shift-person{padding:8px 12px}.shift-people{gap:6px}.shift-summary-tools label{width:100%;justify-content:space-between}.shift-preview-item{display:block}.shift-preview-item button{margin-top:5px}.shift-calendar-entry{min-height:36px}}

/* Approved person roster V0.2; scoped to shift dialogs. Source fa1a013b8d4b */
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog){--ink:#283f3c;--muted:#6d7e75;--line:#dce5df;--green:#326a5d;--bg:#f4f5f2;font:15px/1.5 system-ui,'Microsoft YaHei',sans-serif;color:var(--ink);color-scheme:light}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) *{box-sizing:border-box}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) button,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) select{font:inherit;color:inherit;touch-action:manipulation}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) button{cursor:pointer;min-height:40px;padding:8px 16px;border:1px solid #d1ddd5;border-radius:6px;background:white;line-height:1.45}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) button:hover{background:#f1f6f2;border-color:#91ae9c}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) button:disabled{opacity:.5;cursor:default}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) button:focus-visible,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) select:focus-visible,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) summary:focus-visible,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-scroll:focus-visible{outline:2px solid #719e8b;outline-offset:3px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) button.primary{font-weight:600;background:var(--green);color:white;border-color:var(--green)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) button.primary:hover{background:#28594e}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .text-button{border-color:transparent;background:transparent;color:var(--green);padding:7px 10px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .icon-button{padding:2px 12px;font-size:24px;min-width:40px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) select{min-height:36px;padding:5px 24px 5px 10px;border:1px solid #d1ddd5;border-radius:6px;background:white}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) h1,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) h2,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) p{margin:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) h1{font-size:26px;line-height:1.4;font-weight:600}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) h2{font-size:18px;line-height:1.5;font-weight:600}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) [hidden]{display:none!important}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-head{padding:20px 24px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);flex-shrink:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .eyebrow{font-size:12px;color:var(--muted);margin-bottom:4px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-nav{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 0 12px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-nav strong{font-size:16px;font-weight:600}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-nav .text-button{font-size:12px;margin-left:8px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .grid-intro{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13px;color:var(--muted);margin-bottom:10px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .grid-intro>span{font-size:12px;color:#92723f}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:9px;scrollbar-width:thin;scrollbar-color:#b4c6b9 #f4f7f3}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid{width:100%;min-width:920px;table-layout:fixed;border-collapse:separate;border-spacing:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .people-col{width:110px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid th,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid td{padding:0;text-align:center;border-right:1px solid #e5eae1;border-bottom:1px solid #dfe7dc;font-weight:400}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid tr>*:last-child{border-right:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid tfoot tr>*{border-bottom:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .people-corner,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .person-name,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .status-label{position:sticky;left:0;z-index:2;border-right:1px solid #cfdccd;text-align:left;padding-left:16px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .people-corner{background:#f6f9f3;color:var(--muted);font-size:12px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .day-header{border:0;border-radius:0;width:100%;background:#f8faf6;min-height:68px;padding:10px 5px;display:flex;align-items:center;justify-content:center;gap:2px;flex-direction:column;position:relative}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .day-header .weekday{font-size:12px;color:var(--muted)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .day-header .date-number{font-size:19px;line-height:1.4;font-weight:600;font-variant-numeric:tabular-nums}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .day-header[aria-pressed=true]{background:#e6efdf;box-shadow:inset 0 3px #8aa88c;color:#315f4f}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .day-header:hover{background:#eef4e8}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .day-header[aria-pressed=true]:hover{background:#e6efdf}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .day-header .dirty-dot{position:absolute;right:5px;top:4px;color:#866b3f;font-size:10px;line-height:1.2}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .person-yu{--person-bg:#eff5ea}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .person-dai{--person-bg:#eef3f5}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .person-shu{--person-bg:#f8f4e9}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .person-row>*{height:58px;background-color:var(--person-bg)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .person-name{font-size:14px;font-weight:600;white-space:nowrap;letter-spacing:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .date-cell.is-active-date{box-shadow:inset 1px 0 #b6c9ae,inset -1px 0 #b6c9ae,inset 0 0 0 999px #436d3710}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-select{width:96px;min-width:96px;min-height:36px;line-height:20px;border:1px solid #d4ded0;color:#3f5d48;font-size:13px;font-weight:600;cursor:pointer;padding:7px 25px 7px 12px;border-radius:6px;appearance:none;background:#ffffffb8 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='m3 4.5 3 3 3-3' fill='none' stroke='%23637e70' stroke-width='1.2'/%3E%3C/svg%3E") no-repeat right 7px center}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-select.rest{color:#6c7b6a}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-select.flex{color:#56718a}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-select.unassigned{color:#886831}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-select option{background:white;color:var(--ink)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .day-status{height:32px;font-size:11px;color:#866a3b;padding:6px 5px;background:#fbfcf9;line-height:1.4}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .status-label{font-size:11px;color:var(--muted);background:#fbfcf9}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-help{display:flex;flex-wrap:wrap;gap:6px 20px;font-size:12px;color:var(--muted);padding:12px 0 0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-help time{font-variant-numeric:tabular-nums;margin-left:5px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .mobile-tip{display:none}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-foot{position:sticky;bottom:0;z-index:3;background:#f7f9f5;border-top:1px solid var(--line);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-shrink:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-foot>div:first-child{display:flex;flex-direction:column;gap:2px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-foot strong{font-size:14px;font-weight:500}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-foot small{color:var(--muted);font-size:12px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .foot-actions{display:flex;gap:10px;flex-shrink:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .foot-actions button{font-size:14px;min-height:44px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .foot-actions .primary{min-width:146px}
:is(#shift-batch-dialog,#shift-swap-dialog){border:1px solid var(--line);border-radius:12px;width:min(490px,calc(100vw - 32px));padding:25px;color:var(--ink);box-shadow:0 16px 60px #18382a29}
:is(#shift-batch-dialog,#shift-swap-dialog)::backdrop{background:#293e3852}
:is(#shift-batch-dialog,#shift-swap-dialog) h2{font-size:20px;line-height:1.4;margin-bottom:12px}
:is(#shift-batch-dialog,#shift-swap-dialog) p{font-size:14px;color:var(--muted)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .swap-plan{padding:12px 14px;margin:18px 0;background:#f2f6ef;border-radius:6px;font-size:14px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .swap-plan p{color:#45654f;margin:4px 0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .dialog-actions{display:flex;gap:10px;justify-content:flex-end}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .dialog-actions button{font-size:14px}
@media(max-width:1004px){
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .mobile-tip{display:block;text-align:right;font-size:11px;color:var(--muted);margin-top:7px}
}
@media(max-width:700px){
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-head{padding:17px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-head h2{font-size:23px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-nav{gap:8px;padding:15px 0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-nav strong{font-size:13px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-nav .text-button{font-size:11px;margin:0;padding:6px 2px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .icon-button{min-width:30px;padding:2px 7px;font-size:22px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .grid-intro{align-items:flex-start;flex-direction:column;gap:3px;font-size:12px;margin-bottom:11px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .grid-intro>span:empty{display:none}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid{min-width:870px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .people-col{width:86px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .people-corner,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .person-name,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .status-label{padding-left:12px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .week-grid .person-row>*{height:60px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-select{min-height:44px;width:96px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .shift-help{gap:6px 16px;font-size:11px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-foot{padding:13px;flex-wrap:wrap;gap:10px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-foot>div:first-child{width:100%;gap:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .panel-foot small{font-size:11px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .foot-actions{width:100%;justify-content:flex-end}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .foot-actions button{font-size:13px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .foot-actions .primary{flex:1;min-width:0}
:is(#shift-batch-dialog,#shift-swap-dialog){padding:19px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .dialog-actions button{min-height:44px}
}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-summary{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-heading>div{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-heading h2{font-size:16px;font-weight:600}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-heading .month-scope{font-size:12px;color:var(--muted)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-picker{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--muted);white-space:nowrap}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-picker input{font:inherit;font-size:13px;color:var(--ink);border:1px solid #d1ddd5;background:white;border-radius:6px;padding:7px 10px;min-height:36px;max-width:175px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-picker input:focus-visible,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table-scroll:focus-visible{outline:2px solid #719e8b;outline-offset:3px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:8px;scrollbar-width:thin;scrollbar-color:#b4c6b9 #f4f7f3}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:100%;min-width:620px;font-size:14px;font-variant-numeric:tabular-nums}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table th,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table td{padding:9px 12px;text-align:center;white-space:nowrap;border-bottom:1px solid #e6ece3}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table thead th{background:#f5f8f2;color:#6d8072;font-size:12px;font-weight:600}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table th:first-child{position:sticky;left:0;z-index:1;width:110px;text-align:left;padding-left:16px;border-right:1px solid #e6ece3}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table .work-total{background:#f0f5ec;color:#365e46}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table .muted-column{color:#71816f}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-footnote{display:flex;justify-content:space-between;gap:12px;margin-top:9px;font-size:11px;color:var(--muted)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-draft-note{color:#96713d;white-space:nowrap}
@media(max-width:700px){
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-summary{margin-top:16px;padding-top:14px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-heading{align-items:flex-start;flex-wrap:wrap;gap:9px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-heading>div{display:block}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-heading h2{font-size:15px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-heading .month-scope{display:block;margin-top:2px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-picker{gap:6px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-picker input{max-width:150px;min-height:40px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table{font-size:13px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table th:first-child{width:86px;padding-left:12px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table th,:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-table td{padding:9px 10px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-footnote{display:block;font-size:11px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .month-draft-note{display:block;margin-top:3px}
}
#shift-batch-dialog{width:min(820px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:0;overflow:hidden}
#shift-batch-dialog[open]{display:flex;flex-direction:column}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:20px 24px 16px;border-bottom:1px solid var(--line);flex-shrink:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-head h2{font-size:21px;margin:0 0 5px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-head p{font-size:13px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-head .text-button{font-size:13px;white-space:nowrap}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-intro{font-size:12px!important;margin-bottom:13px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-day{border:1px solid #dce5d9;border-radius:8px;overflow:hidden;margin-bottom:12px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-day-head{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:#f1f6ed;border-bottom:1px solid #e1e9db;gap:10px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-day-head h3{font-size:14px;font-weight:600;margin:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-day-head button{min-height:30px;font-size:12px;padding:4px 7px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-change{display:grid;grid-template-columns:minmax(74px,1fr) minmax(55px,100px) 28px minmax(55px,100px);gap:10px;align-items:center;padding:9px 15px;font-size:14px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-person{font-weight:600}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .before-role{color:#74816f;text-align:center}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .change-arrow{color:#86998b;text-align:center}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .after-role{text-align:center;color:#3b684c;font-weight:600}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .after-role.rest{color:#7c877a}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .after-role.flex{color:#59788e}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .after-role.unassigned{color:#977541}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-impact{margin:0 14px 11px;padding:8px 1px 0;border-top:1px solid #e8eee4}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .impact-label{font-size:11px;color:var(--muted)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-impact p{font-size:12px;margin-top:3px;color:#607765}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-impact p.needs{color:#9b783e}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-rules{font-size:12px;color:var(--muted);margin-top:13px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-rules summary{cursor:pointer}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-rules p{font-size:12px;margin-top:7px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-foot{border-top:1px solid var(--line);background:#f7f9f5;padding:15px 24px;display:flex;align-items:center;justify-content:space-between;gap:15px;flex-shrink:0}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-foot>span{font-size:11px;color:var(--muted)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-foot button{font-size:14px;min-height:44px}
@media(max-width:700px){
#shift-batch-dialog{width:calc(100vw - 20px);max-height:calc(100dvh - 24px)}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-head{padding:16px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-head h2{font-size:19px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-day-head{padding:7px 10px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-day-head h3{font-size:12px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-change{grid-template-columns:minmax(48px,1fr) 56px 18px 56px;gap:5px;padding:9px 11px;font-size:13px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-impact{margin:0 10px 10px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-foot{padding:12px 13px;flex-wrap:wrap;gap:9px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-foot>span{width:100%}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-foot .dialog-actions{width:100%}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-foot button{font-size:13px}
:is(#shift-dialog,#shift-batch-dialog,#shift-swap-dialog) .batch-foot .primary{flex:1}
}
#shift-dialog{width:min(1380px,calc(100vw - 36px));max-width:none;max-height:calc(100dvh - 32px);padding:0;overflow:hidden;box-sizing:border-box;border:1px solid #dce5df;border-radius:12px}
#shift-dialog[open]{display:flex;flex-direction:column}
#shift-dialog .panel-head h2{font-size:26px;font-weight:600;line-height:1.4;margin:0}
/* Auto basis keeps the scroll body visible in an auto-height dialog. */
#shift-dialog .panel-body{flex:1 1 auto}
#shift-dialog .month-scope{font-size:12px;color:var(--muted)}
#shift-dialog .month-draft-note{color:#96713d;white-space:nowrap}
#shift-dialog .person-name small{display:block;font-size:10px;font-weight:400}
#shift-dialog .month-table{margin:0}
#shift-dialog .week-grid{margin:0}
#shift-dialog .grid-intro{margin-top:0}
#shift-batch-dialog .batch-head h2{font-size:21px;font-weight:600}
#shift-batch-dialog .dialog-actions,#shift-swap-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:10px}
#shift-batch-dialog .batch-rules summary{cursor:pointer;min-height:30px;padding:5px 0}
#shift-batch-dialog .shift-preview-item strong{font-size:13px}
#shift-batch-dialog .shift-preview-item span{font-size:12px}
#shift-batch-dialog .shift-preview-item small{font-size:11px}
#shift-batch-dialog .shift-preview-item button{font-size:12px}
#shift-batch-dialog .batch-impact p{line-height:1.5}
#shift-batch-dialog .batch-rules details{padding-left:8px}
#shift-swap-dialog .swap-plan{margin:8px 0}
@media(max-width:700px){
 #shift-dialog{width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}
 #shift-dialog .panel-head h2{font-size:23px}
 #shift-dialog .month-scope{display:block;margin-top:2px}
 #shift-dialog .month-draft-note{display:block;margin-top:3px}
 #shift-batch-dialog .batch-head h2{font-size:19px}
 #shift-batch-dialog .shift-preview-item{display:block}
}

/* Keep the approved panel body scroll inside the fixed footer. */
#shift-dialog .panel-body{padding:0 24px 20px;min-height:0;overflow-y:auto}
#shift-batch-dialog .batch-body{padding:16px 24px 20px;min-height:0;overflow-y:auto}
@media(max-width:700px){#shift-dialog .panel-body{padding:0 13px 17px}#shift-batch-dialog .batch-body{padding:12px 13px 15px}}

#shift-batch-dialog,#shift-swap-dialog{max-width:none;box-sizing:border-box}
#shift-dialog .month-table tbody th{font-weight:600;text-align:left;background:white}
#shift-dialog .month-table tbody tr:last-child>*{border-bottom:0}
#shift-dialog .month-table tbody td{font-weight:600}

/* Monthly PDF export only; original roster, statistics and fixed footer stay intact. */
#shift-dialog .month-heading{flex-wrap:wrap;gap:10px 20px}
#shift-dialog .month-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px}
#shift-dialog .month-picker input{min-height:40px;max-width:165px}
#shift-dialog .export-button{min-height:40px;color:#326a5d;border-color:#9ab7a7;font-size:13px;font-weight:600;white-space:nowrap}
#shift-dialog .export-button:hover{background:#edf4ef}
#shift-dialog .export-feedback{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:5px 12px;margin:-2px 0 12px;font-size:12px;min-height:28px;color:#6d7e75}
#shift-dialog .export-message{min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 14px}
#shift-dialog .export-detail{font-size:11px;overflow-wrap:anywhere}
#shift-dialog .export-feedback[data-state=dirty]{padding:9px 12px;border:1px solid #e5d7b8;border-radius:6px;background:#fcf8ee;color:#876429}
#shift-dialog .export-feedback[data-state=ready]{padding:9px 12px;border:1px solid #d8e5d9;border-radius:6px;background:#f2f7f0;color:#386148}
#shift-dialog .export-feedback[data-state=error]{padding:9px 12px;border:1px solid #e5cfc2;border-radius:6px;background:#fcf4ef;color:#95603c}
#shift-dialog .export-actions{display:flex;gap:6px;flex-wrap:wrap}
#shift-dialog .export-actions button{min-height:30px;padding:4px 7px;font-size:12px}
@media(max-width:700px){
 #shift-dialog .month-tools{gap:8px;width:100%}
 #shift-dialog .month-picker{flex-wrap:wrap;gap:5px;font-size:12px}
 #shift-dialog .month-picker input{max-width:162px;min-height:44px;font-size:16px}
 #shift-dialog .export-button{min-height:44px}
 #shift-dialog .export-feedback{gap:6px}
 #shift-dialog .export-actions{width:100%}
 #shift-dialog .export-actions button{min-height:40px}
}

/* Monthly roster preview: all rules stay inside the existing shift dialog. */
#shift-dialog .roster-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:18px 0 12px}
#shift-dialog .roster-toolbar .week-nav{margin:0;gap:9px;flex-wrap:nowrap}
#shift-dialog .roster-toolbar .week-nav strong{font-size:18px;white-space:nowrap}
#shift-dialog .roster-toolbar .month-tools{margin-left:auto}
#shift-dialog .roster-tabs{display:flex;gap:2px;border:1px solid #d9e3db;background:#f4f7f2;padding:3px;border-radius:7px}
#shift-dialog .roster-tabs button{border:1px solid transparent;background:transparent;border-radius:5px;min-height:36px;padding:6px 15px;font-size:14px;color:#738177;white-space:nowrap}
#shift-dialog .roster-tabs button[aria-pressed=true]{background:white;border-color:#b6d0be;color:#326a5c;font-weight:600}
#shift-dialog .roster-tabs button:disabled{opacity:.6}
#shift-dialog .roster-version-line{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 14px;font-size:12px;flex-wrap:wrap}
#shift-dialog .roster-version-line .roster-tabs button{font-size:13px;min-height:30px;padding:4px 12px}
#shift-dialog .roster-draft-note{color:#966627;background:#fff7e9;border:1px solid #eccf9c;border-radius:5px;padding:4px 10px}
#shift-dialog .roster-month-scroll{overflow:auto;border:1px solid #d7e2d8;border-radius:8px;scrollbar-width:thin}
#shift-dialog .roster-month-grid{width:100%;min-width:1115px;table-layout:fixed;border-collapse:separate;border-spacing:0;margin:0;font-variant-numeric:tabular-nums}
#shift-dialog .roster-name-col{width:106px}
#shift-dialog .roster-month-grid th,#shift-dialog .roster-month-grid td{padding:0;border:0;border-right:1px solid #d9e3d9;border-bottom:1px solid #d9e3d9;text-align:center;position:relative}
#shift-dialog .roster-month-grid tr>*:last-child{border-right:0}
#shift-dialog .roster-month-grid tfoot tr>*{border-bottom:0}
#shift-dialog .roster-month-grid .roster-person{position:sticky;left:0;z-index:2;text-align:left;padding:0 14px;background:var(--roster-row,#f6f9f4);box-shadow:1px 0 #d3ded2;font-size:15px;white-space:nowrap;font-weight:600}
#shift-dialog .roster-person small{display:block;color:#7a867a;font-weight:400;font-size:10px}
#shift-dialog .roster-month-grid thead .roster-person{font-size:12px;color:#738177;z-index:3}
#shift-dialog .roster-date{background:#f6f9f4}
#shift-dialog .roster-date.weekend{background:#edf2ec}
#shift-dialog .roster-date-button{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:64px;border:0;border-radius:0;padding:7px 1px;background:transparent;gap:2px}
#shift-dialog .roster-date-button b{font-size:16px;font-weight:700;min-width:25px}
#shift-dialog .roster-date-button small{font-size:11px;color:#768679}
#shift-dialog .roster-date-button .today{background:#326a5c;color:#fff;border-radius:50%}
#shift-dialog .roster-role{background:var(--roster-row)}
#shift-dialog .roster-cell{display:block;width:100%;min-height:46px;font-size:16px;font-weight:700;border:0;border-radius:0;padding:0;background:transparent}
#shift-dialog .roster-cell:hover{background:#326a5c12}
#shift-dialog .roster-cell.rest{font-weight:400;color:#7d897d}
#shift-dialog .roster-cell.flex{color:#3c7182}
#shift-dialog .roster-cell.unassigned{font-weight:400;color:#a18555}
#shift-dialog .roster-cell.outside{font-weight:400;color:#94a295}
#shift-dialog .roster-month-grid .selected{box-shadow:inset 1px 0 #9bb494,inset -1px 0 #9bb494,inset 0 0 0 999px #356a3810}
#shift-dialog .selected .roster-date-button{box-shadow:inset 0 3px #7da182;color:#326a5c}
#shift-dialog .roster-role.changed{outline:1px solid #c39a50;outline-offset:-3px}
#shift-dialog .roster-role.changed::after{content:"";position:absolute;right:4px;top:6px;width:5px;height:5px;border-radius:50%;background:#bf872f;pointer-events:none}
#shift-dialog .roster-month-grid tfoot th,#shift-dialog .roster-gap{height:29px;font-size:11px;font-weight:400;color:#7c8d7e;background:#fbfcf9}
#shift-dialog .gap-mark{background:#fbefcf;color:#a17734;border-radius:3px;padding:0 3px;font-size:10px}
#shift-dialog .roster-legend{display:flex;flex-wrap:wrap;gap:6px 15px;margin:10px 0;color:#768679;font-size:12px}
#shift-dialog .changed-label{color:#a0712d;font-size:11px}
#shift-dialog .roster-day-detail{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:14px 0 0;padding:13px 15px;border:1px solid #d6e3d8;border-radius:8px;background:#f7faf5}
#shift-dialog .roster-day-title{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-size:15px;margin-bottom:8px}
#shift-dialog .roster-day-title .muted{font-size:12px}
#shift-dialog .roster-day-items{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:13px}
#shift-dialog .roster-day-person{display:flex;gap:7px;flex-wrap:wrap}
#shift-dialog .roster-day-person strong{font-weight:500}
#shift-dialog #shift-month-to-week{font-size:13px;white-space:nowrap;min-height:40px;flex-shrink:0}
#shift-dialog .shift-cell-note{position:fixed;z-index:6;box-sizing:border-box;background:#fff;border:1px solid #bcd1c3;box-shadow:0 10px 30px #263f3526;border-radius:9px;padding:12px 15px;overflow:auto;color:#29413d}
#shift-dialog .shift-cell-note[hidden]{display:none}
#shift-dialog .cell-note-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid #e1e9e1;font-size:13px}
#shift-dialog .cell-note-head button{min-height:27px;min-width:27px;padding:0;font-size:19px}
#shift-dialog .cell-note-line{display:flex;align-items:baseline;gap:12px;margin-top:8px;font-size:13px}
#shift-dialog .cell-note-line>.muted{min-width:49px;font-size:12px}
#shift-dialog .cell-note-line small{padding:1px 4px;background:#fff6e7;border-radius:3px;white-space:nowrap}
#shift-dialog :is(.roster-cell,.roster-date-button,.roster-tabs button):focus-visible{outline:2px solid #bc9141;outline-offset:-3px}
@media(max-width:1100px){#shift-dialog .roster-toolbar{gap:12px}#shift-dialog .roster-toolbar .month-tools{margin-left:0}}
@media(max-width:700px){
 #shift-dialog .roster-toolbar>.roster-tabs{width:100%}
 #shift-dialog .roster-toolbar>.roster-tabs button{flex:1;min-height:42px}
 #shift-dialog .roster-toolbar .week-nav{width:100%;justify-content:center}
 #shift-dialog .roster-toolbar .month-tools{width:100%;justify-content:space-between}
 #shift-dialog .roster-version-line{gap:9px}
 #shift-dialog .roster-day-detail{display:block}
 #shift-dialog #shift-month-to-week{margin-top:12px}
 #shift-dialog .roster-day-person{width:100%;gap:5px 10px}
}
