/* Shift roster care planner (round 7 phase 2, lane r7-p2-care): one card per adult, shift names in a
   row that wraps, and the roster as a grid of day cards that wraps from 2 columns at 375px to 7 wide. */
.sr-adult{margin:var(--space-4,16px) 0 0;padding:12px 14px;border:3px solid var(--outline);border-radius:16px;background:var(--card);min-width:0}
.sr-adult legend{font:800 1.0625rem/1.3 var(--font-head);padding:0 6px}
.sr-adult-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:8px 12px;align-items:end}
.sr-shifts{display:grid;gap:8px;margin:var(--space-3,12px) 0 0;padding:0;border:0;min-width:0}
.sr-shifts legend{font-weight:800;padding:0;margin:0 0 4px}
.sr-shift{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);gap:6px 8px;align-items:end}
.sr-shift>div,.sr-day,.sr-adult-top>div{min-width:0}
.sr-shift label,.sr-day label,.sr-adult-top label{display:block;font-weight:700;font-size:.875rem}
.sr-shift input,.sr-day select,.sr-day input,.sr-adult-top input,.sr-adult-top select{width:100%;max-width:100%;box-sizing:border-box;min-height:44px;min-width:0}
.sr-week{margin:var(--space-3,12px) 0 0;padding:0;border:0;min-width:0}
.sr-week legend{font-weight:800;padding:0;margin:0 0 4px}
.sr-week-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:8px}
.sr-day{padding:6px;border:2px solid var(--outline);border-radius:12px;min-width:0}
.sr-day.is-holiday{border-style:dashed}
.sr-day-own{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:4px}
.sr-day-own[hidden]{display:none}
.sr-adult-actions{display:flex;flex-wrap:wrap;gap:8px;margin:var(--space-3,12px) 0 0}
.sr-table td{vertical-align:top}
.sr-table .sr-times{display:block;font-variant-numeric:tabular-nums;white-space:nowrap}
.sr-table .sr-none{color:var(--ink-soft,inherit)}
@media (max-width:30em){.sr-shift{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.sr-shift>div:first-child{grid-column:1/-1}.sr-adult{padding:10px}.sr-day select{padding-left:8px;padding-right:6px}.sr-shift input[type=time],.sr-day-own input{padding-left:6px;padding-right:2px;font-size:.9375rem}}
/* Large text (P0-08): when the form is narrower than 35rem at the zoomed size (a tablet at 150%), each
   shift's name takes its own row and its two times share the next, as on a phone. */
@container tool-form (max-width:34.99rem){.sr-shift{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.sr-shift>div:first-child{grid-column:1/-1}}
/* Narrow results: each day is a block. The result is a container, so this follows the zoomed width at
   A+ 130% and 150% as well as the window (UI and UX ledger P0-14, 13 October 2026). A time or a length
   of time never breaks inside itself ("8:15a / m", "7 hr 30 / min"). */
#sr-results{container:sr-result/inline-size}
.sr-table .sr-times,.sr-table td>.small{white-space:nowrap}
@container sr-result (max-width:40rem){.sr-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.sr-table tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 8px;padding:8px 0;border-bottom:2px solid var(--outline)}.sr-table th[scope=row]{grid-column:1/-1;text-align:left}.sr-table th,.sr-table td{display:block;padding:0;border:0;text-align:left}.sr-table td::before{content:attr(data-label);display:block;font-size:.75rem;font-weight:800}}
/* Under 30rem (a phone, or a tablet at 150%) each day is a card: the day, then three full-width
   "label: value" rows, so no column is squeezed to one word a line ("No / adult / home"). */
@container sr-result (max-width:30rem){.sr-table tr{grid-template-columns:minmax(0,1fr);gap:6px}.sr-table td{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px}.sr-table td::before{content:attr(data-label) ":";display:inline;flex:0 0 auto;font-size:.875rem}.sr-table td>span{display:inline}}
/* Round 8 (r8-polish): the day list's two parts, gap days first. */
.sr-part th{grid-column:1/-1;background:var(--soft);font:800 .9375rem/1.3 var(--font-head);text-align:left;padding:8px 10px}
