.workerRoster{padding:22px 18px 28px;color:#1b2224;font-size:14px}
.workerRoster button,.workerRoster input{font:inherit}
.workerRoster button{cursor:pointer}
.workerRoster svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.rosterHeading{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
.rosterHeading span{color:#7d8585;font-size:12px;letter-spacing:.08em}
.rosterHeading h1{margin:3px 0 0;font-size:28px;font-weight:750;letter-spacing:-.04em;line-height:1.2}
.workerRoster .rosterToday{padding:0 15px;height:38px;border:1px solid #dce0db;border-radius:12px;background:#fff;font-size:12px;font-weight:650}
.rosterWeekNav{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:6px;margin-bottom:14px}
.rosterWeekNav button{display:grid;place-items:center;height:36px;padding:0;border:0;border-radius:10px;background:#ecefea;color:#535e5f}
.rosterWeekNav strong{text-align:center;font-size:13px;font-weight:650;letter-spacing:-.01em}
.rosterDays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.workerRoster .rosterDay{min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 0 8px;border:1px solid transparent;border-radius:14px;background:transparent}
.rosterDay small{font-size:11px;line-height:1.2;color:#828b8b}
.rosterDay b{font-size:20px;font-weight:650;line-height:1.2;font-variant-numeric:tabular-nums}
.rosterDay i{width:4px;height:4px;border-radius:50%;background:transparent}
.rosterDay i.scheduled{background:#477b6d}
.workerRoster .rosterDay.today{border-color:#d8dfd9}
.workerRoster .rosterDay.selected{background:#1d2c2d;border-color:#1d2c2d;color:white;box-shadow:0 5px 12px #1d2c2d18}
.rosterDay.selected small{color:#b9cccc}
.rosterDay.selected i.scheduled{background:#b5dac9}
.rosterTools{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:16px 0 24px;padding-bottom:18px;border-bottom:1px solid #e1e5df;font-size:11px;color:#788282}
.rosterTools>span{padding-top:4px}
.rosterDatePicker{max-width:160px}
.rosterDatePicker summary{display:flex;align-items:center;gap:5px;list-style:none;cursor:pointer;min-height:28px;color:#405d58;font-weight:600}
.rosterDatePicker summary::-webkit-details-marker{display:none}
.rosterDatePicker svg{width:16px;height:16px}
.rosterDatePicker label{display:block;margin:8px 0 4px}
.workerRoster .rosterDatePicker input{width:100%;min-width:0;max-width:160px;height:38px;padding:5px;border:1px solid #ccd6cd;border-radius:8px;background:#fff;font-size:12px}
.rosterDayTitle{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:12px}
.rosterDayTitle h2,.rosterOther h2{margin:0;font-size:14px;font-weight:700}
.rosterDayTitle span{font-size:11px;color:#818988}
.rosterShift{padding:20px;border:1px solid #dfe4dc;border-radius:21px;background:#fff;box-shadow:0 10px 30px #243b2d06}
.rosterShiftTop{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.rosterShiftTop small{display:block;font-size:10px;letter-spacing:.08em;color:#88908a;font-weight:600}
.rosterShiftTop strong{display:block;margin-top:4px;font-size:38px;line-height:1.2;letter-spacing:-.045em;font-weight:650;font-variant-numeric:tabular-nums}
.rosterStatus{display:inline-flex;align-items:center;min-height:26px;max-width:45%;padding:4px 9px;border-radius:8px;background:#f8f0dc;color:#8b6a24;font-size:10px;font-weight:650;text-align:center}
.rosterStatus.accepted{background:#ecf3ed;color:#466e5a}
.rosterStatus.declined{background:#f9eeea;color:#9a594d}
.rosterSite{margin-top:22px}
.rosterSite>small{display:block;color:#939b96;font-size:10px;letter-spacing:.06em;margin-bottom:4px}
.rosterSite h3{margin:0;font-size:20px;font-weight:700;line-height:1.3;letter-spacing:-.025em;overflow-wrap:anywhere}
.rosterSite p{margin:5px 0 0;color:#7a8580;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.rosterWork{border-top:1px solid #edf0e9;padding-top:16px;margin-top:18px}
.rosterWork span{display:inline-block;padding:4px 8px;background:#f1f3ee;border-radius:6px;font-size:11px;color:#546458;font-weight:600}
.rosterWork p{margin:10px 0 0;line-height:1.65;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}
.rosterResponse{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:20px}
.rosterResponse button{height:42px;border:1px solid #dce2db;border-radius:11px;background:white;font-size:12px;font-weight:650}
.rosterResponse #rosterAccept{background:#233b35;color:white;border-color:#233b35}
.rosterEmpty{padding:32px 16px;text-align:center;border:1px dashed #d5ddd4;border-radius:20px;background:#f4f6f0}
.rosterEmpty svg{width:28px;height:28px;color:#93a292;margin-bottom:12px}
.rosterEmpty h3{margin:0;font-size:16px;font-weight:650}
.rosterEmpty p{margin:8px 0 0;font-size:12px;color:#8a948a}
.rosterOther{margin-top:26px}
.rosterOther h2{margin-bottom:8px}
.rosterOther button{display:flex;width:100%;align-items:center;gap:13px;padding:14px 0;border:0;border-bottom:1px solid #e5e9e0;background:transparent;text-align:left}
.rosterMiniDate{width:42px;flex-shrink:0;text-align:center}
.rosterMiniDate small{display:block;color:#8a948c;font-size:10px}
.rosterMiniDate b{font-size:21px;font-weight:650}
.rosterMiniSite{flex:1;min-width:0}
.rosterMiniSite strong{display:block;font-size:13px;overflow-wrap:anywhere;font-weight:650}
.rosterMiniSite small{display:block;margin-top:4px;color:#859087;font-size:11px}
.rosterOther svg{width:16px;height:16px;color:#9aa39b}
.rosterFooter{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:24px;padding-top:4px}
.rosterFooter button{min-height:44px;padding:8px;border:1px solid #dce2d9;border-radius:12px;background:transparent;color:#5c6d60;font-size:12px;font-weight:600}
.workerRoster button:focus-visible,.rosterDatePicker summary:focus-visible{outline:2px solid #49796a;outline-offset:3px}
.workerRoster button:active{transform:translateY(1px)}
@media(max-width:360px){.workerRoster{padding:18px 14px}.rosterDays{gap:2px}.rosterShift{padding:17px}.rosterDay b{font-size:18px}.rosterWeekNav strong{font-size:12px}}
