.roster{--roster-green:#25856b;--roster-soft:#edf7f3;display:grid;gap:1.25rem;min-width:0}.roster *{min-width:0}.roster button,.roster input,.roster select{min-height:44px}.roster button{touch-action:manipulation}.roster h2,.roster h3,.roster p{overflow-wrap:anywhere}.roster-kicker{font-size:.65rem;font-weight:700;letter-spacing:.14em;color:#8797b0;margin:0 0 .55rem}.roster-hero{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:2rem 2.2rem;border-radius:18px;background:linear-gradient(115deg,#192e50,#284976);color:#fff;position:relative;overflow:hidden}.roster-hero:after{content:'';position:absolute;width:240px;height:240px;border:1px solid #ffffff0d;border-radius:50%;right:13%;top:-125px;pointer-events:none}.roster-hero .roster-kicker{color:#a7e0cd}.roster-hero h2{font-size:clamp(1.55rem,2.6vw,2.1rem);letter-spacing:-.045em;margin:0 0 .7rem;line-height:1.15}.roster-day{color:#bccde5;font-size:.9rem;margin:0}.roster-sync{display:grid;justify-items:end;gap:.7rem;flex:none}.roster-sync-status{font-size:.75rem;color:#c8d9ed}.roster-sync-status:before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#a7e0cd;margin-right:.45rem;vertical-align:middle}.roster-refresh{background:#ffffff10;color:#fff;border-color:#ffffff30;font-size:.82rem}.roster-refresh:hover{background:#ffffff20;border-color:#ffffff60}.roster-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.roster-stat{display:grid;grid-template-columns:1fr auto;gap:.55rem 1rem;padding:1.3rem 1.5rem;background:#fff;border:1px solid var(--line);border-radius:13px;align-items:center}.roster-stat>span{font-size:.8rem;color:#697f9d;font-weight:550}.roster-stat>strong{font-size:2rem;letter-spacing:-.06em;grid-row:span 2;font-weight:650;color:#244365}.roster-stat>small{font-size:.72rem;color:#93a0b2}.roster-stat:nth-child(2){background:#edf7f3;border-color:#dcece6}.roster-stat:nth-child(2)>strong{color:var(--roster-green)}.roster-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:1.25rem;align-items:start}.roster-schedule{display:grid;gap:1rem}.roster-filters{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:.8rem}.roster-filters label{font-size:.74rem;color:#8492a7;font-weight:500;margin:0}.roster-filters input,.roster-filters select{margin-top:.4rem;font-size:.85rem}.roster-groups{display:grid;gap:1rem}.roster-group{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 2px 4px #17294a03;overflow:clip}.roster-group-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.2rem 1.3rem;background:#fcfdff;border-bottom:1px solid #e9edf4}.roster-group-heading h3{font-size:1rem;margin:0;color:#314b6e;line-height:1.45}.roster-group-heading .roster-kicker{font-size:.58rem;margin-bottom:.3rem;color:#9aa7ba}.roster-count{font-size:.72rem;line-height:1.5;padding:.35rem .55rem;border-radius:6px;background:#eaf1fb;color:#6580a9;white-space:nowrap}.roster-slot{display:grid;grid-template-columns:minmax(110px,.45fr) minmax(0,1fr);gap:1rem;padding:1rem 1.3rem;border-bottom:1px solid #edf0f5;align-items:start;position:relative}.roster-slot:last-child{border-bottom:0}.roster-slot.is-changed{background:#f6f9ff;box-shadow:inset 3px 0 #90a9e7}.roster-slot.has-conflict{background:#fff9f3;box-shadow:inset 3px 0 #dbac72}.roster-slot-time{display:grid;gap:.35rem;padding-top:.55rem}.roster-slot-time strong{font-size:1.12rem;font-weight:600;letter-spacing:-.025em;color:#355173}.roster-slot-time>span{font-size:.7rem;color:#8c9bb0;line-height:1.5}.roster-slot-assignment{position:relative}.roster-driver-button{display:flex;align-items:center;justify-content:space-between;gap:.7rem;width:100%;min-height:50px;padding:.45rem .7rem .45rem .5rem;border-radius:9px;border-color:#e0e7f1;background:#fff;font-size:.84rem;text-align:left;font-weight:550}.roster-driver-identity{display:flex;align-items:center;gap:.65rem;line-height:1.4}.roster-driver-identity>span:last-child{overflow-wrap:anywhere}.roster-avatar{width:31px;height:31px;flex:none;background:#eaf0fb;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#7d94ba;font-size:.62rem;letter-spacing:.01em}.roster-avatar.is-empty{font-size:1.2rem;background:#f3f5f9;color:#a1aec2;font-weight:400}.roster-chevron{color:#98a8be;flex:none;font-size:1.1rem}.roster-change-note,.roster-conflict-note{display:block;font-size:.71rem;line-height:1.5;margin:.5rem .1rem 0;color:#758bbb;overflow-wrap:anywhere}.roster-conflict-note{color:#a77639}.roster-picker{margin-top:.7rem;background:#fff;border:1px solid #cbd9f0;border-radius:12px;padding:.75rem;box-shadow:0 6px 25px #29476e0e}.roster-picker-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.3rem}.roster-picker-heading strong{font-size:.76rem;color:#6d83a2}.roster-picker-close{font-size:.74rem;padding:.4rem .55rem;border:0;background:transparent}.roster-picker input{font-size:.85rem}.roster-picker-list{display:grid;gap:.2rem;max-height:260px;overflow:auto;overscroll-behavior:contain;margin-top:.6rem;scrollbar-width:thin}.roster-person{display:grid;gap:.2rem;text-align:left;align-content:center;border:1px solid transparent;background:transparent;padding:.7rem .6rem;font-size:.8rem;line-height:1.35;min-height:52px}.roster-person small{font-size:.65rem;color:#94a1b4;font-weight:400}.roster-person[aria-pressed=true]{background:#edf3ff;border-color:#d9e4f8;color:#4268bd}.roster-person-empty{color:#92a0b3;font-weight:400}.roster-picker-empty{font-size:.8rem;color:#8797b0;padding:1rem .5rem;margin:0}.roster-review{position:sticky;top:1.5rem;border:1px solid #dce5f1;border-radius:14px;padding:1.4rem;background:#fff;box-shadow:0 3px 15px #24426905}.roster-review h3{font-size:1.16rem;line-height:1.35;margin:0 0 .8rem;letter-spacing:-.025em;color:#314b6e}.roster-copy{font-size:.82rem;line-height:1.75;color:#8795aa;margin:0 0 1rem}.roster-full-button{width:100%;font-size:.81rem;margin-top:.6rem}.roster-full-button:disabled{cursor:default}.roster-discard{display:block;width:100%;font-size:.72rem;background:transparent;border:0;color:#8c9bb0;margin-top:.4rem}.roster-warning{background:#fff8ec;border:1px solid #efdfc3;color:#97703b;font-size:.8rem;line-height:1.6;border-radius:10px;padding:.9rem 1rem;margin:0 0 .7rem}.roster-warning p{margin:.35rem 0 0;font-size:.75rem}.roster-change-list{list-style:none;margin:1rem 0;padding:0;border-top:1px solid #e9edf4;max-height:380px;overflow:auto;overscroll-behavior:contain}.roster-change-list li{display:grid;gap:.45rem;padding:.9rem 0;border-bottom:1px solid #e9edf4;overflow-wrap:anywhere}.roster-change-list strong{font-size:.7rem;line-height:1.5;font-weight:500;color:#8a9ab1}.roster-before{font-size:.75rem;color:#9e9eac;text-decoration:line-through;text-decoration-color:#c7cbd5}.roster-after{font-size:.85rem;color:#4369a8;font-weight:550}.roster-confirm-copy{font-size:.73rem;color:#7e90aa;line-height:1.65;margin-bottom:.7rem}.roster-rescue{background:#fff;border:1px solid var(--line);border-radius:14px;padding:1.5rem}.roster-rescue-heading{display:flex;align-items:center;justify-content:space-between;gap:1.5rem}.roster-rescue-heading h3{font-size:1.1rem;margin:0 0 .5rem;letter-spacing:-.025em;color:#314b6e}.roster-rescue-heading .roster-copy{margin:0;max-width:580px}.roster-rescue-heading>button{flex:none;font-size:.8rem;background:#f7f9fd}.roster-rescue-form{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid #e9edf4}.roster-rescue-fields{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:.8rem}.roster-rescue-fields label{font-size:.75rem;color:#8795aa}.roster-rescue-fields input,.roster-rescue-fields select{display:block;margin-top:.5rem;font-size:.85rem}.roster-rescue-preview{background:#f5f8fd;border:1px solid #dde6f4;border-radius:10px;padding:1.2rem;margin-top:1rem}.roster-rescue-preview>strong{font-size:1rem;color:#385779}.roster-rescue-preview>p{font-size:.85rem;color:#778ea9;margin:.6rem 0}.roster-rescue-actions{display:flex;gap:.65rem;flex-wrap:wrap;margin-top:1.1rem}.roster-rescue-actions button{font-size:.81rem}.roster-empty{display:grid;justify-items:center;padding:4rem 1.5rem;text-align:center;border:1px dashed #d5dfed;border-radius:14px;background:#ffffff70;color:#8b9bb2}.roster-empty-number{display:flex;align-items:center;justify-content:center;border:1px solid #dae4f4;background:#edf2fb;width:50px;height:50px;border-radius:15px;margin-bottom:1.5rem;font-size:1.1rem;color:#7c96c0;font-weight:600}.roster-empty h3{font-size:1.1rem;margin:0 0 .7rem;color:#56718f;font-weight:550}.roster-empty p{font-size:.86rem;max-width:470px;line-height:1.9;margin:0}.roster-empty-compact{padding:2.5rem 1.25rem}.roster-message{border:1px solid #efcfcc;background:#fff2f0;color:#a5594f;border-radius:10px;padding:1rem 1.2rem;font-size:.86rem;line-height:1.65;overflow-wrap:anywhere}.roster-message.success{border-color:#c5e4d6;background:#edf8f2;color:#3b7d62}
@media(min-width:1450px){.roster-slot{grid-template-columns:minmax(120px,.55fr) minmax(0,1fr)}.roster-layout{grid-template-columns:minmax(0,1fr) 340px}}
@media(max-width:1100px){.roster-layout{grid-template-columns:minmax(0,1fr)}.roster-review{position:static}.roster-hero{padding:1.7rem}.roster-stats{gap:.7rem}.roster-stat{padding:1.1rem}.roster-rescue-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.roster{gap:1rem}.roster-hero{display:grid;gap:1.2rem;padding:1.4rem;border-radius:14px}.roster-hero h2{font-size:1.75rem;max-width:310px}.roster-day{font-size:.8rem;line-height:1.7}.roster-sync{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;width:100%}.roster-refresh{font-size:.76rem;padding:.5rem .8rem}.roster-sync-status{font-size:.68rem}.roster-stats{gap:.5rem}.roster-stat{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;padding:.9rem .75rem;border-radius:11px}.roster-stat>span{font-size:.7rem;line-height:1.5;min-height:2.1rem}.roster-stat>strong{font-size:1.8rem}.roster-stat>small{font-size:.63rem;line-height:1.5}.roster-filters{grid-template-columns:minmax(0,1fr);gap:.7rem}.roster-filters input,.roster-filters select,.roster-picker input,.roster-rescue-fields input,.roster-rescue-fields select{font-size:16px}.roster-group-heading{padding:1rem;gap:.6rem;flex-wrap:wrap}.roster-group-heading h3{font-size:.95rem}.roster-count{font-size:.68rem}.roster-slot{grid-template-columns:minmax(75px,.36fr) minmax(0,1fr);gap:.7rem;padding:1rem}.roster-slot-time strong{font-size:1rem}.roster-slot-time>span{font-size:.66rem}.roster-driver-button{font-size:.81rem;padding:.5rem;min-height:50px}.roster-driver-identity{gap:.5rem}.roster-avatar{width:27px;height:30px;font-size:.58rem}.roster-picker{padding:.6rem;margin-left:calc(-75px - .7rem);width:calc(100% + 75px + .7rem)}.roster-picker-heading strong{font-size:.8rem}.roster-picker-list{max-height:260px}.roster-person{min-height:56px;font-size:.86rem}.roster-person small{font-size:.7rem}.roster-review{padding:1.2rem}.roster-full-button{font-size:.87rem}.roster-copy{font-size:.85rem}.roster-rescue{padding:1.2rem}.roster-rescue-heading{display:grid;gap:1rem}.roster-rescue-heading>button{width:100%}.roster-rescue-fields{grid-template-columns:minmax(0,1fr)}.roster-rescue-fields label{font-size:.8rem}.roster-rescue-form>button{width:100%}.roster-rescue-actions{display:grid;grid-template-columns:minmax(0,1fr)}.roster-rescue-preview{padding:1rem}.roster-empty{padding:2.5rem 1.2rem}.roster-change-list{max-height:none}.roster-message{padding:.9rem 1rem}.roster-warning{font-size:.8rem}}
@media(max-width:360px){.roster-hero{padding:1.2rem}.roster-hero h2{font-size:1.6rem}.roster-stat{padding:.8rem .6rem}.roster-stat>span{font-size:.66rem}.roster-stat>small{font-size:.61rem}.roster-slot{grid-template-columns:minmax(0,1fr);gap:.65rem}.roster-slot-time{display:flex;align-items:center;justify-content:space-between;padding:0;gap:.5rem}.roster-picker{margin-left:0;width:100%}.roster-group-heading{padding:1rem}.roster-driver-button{font-size:.86rem}.roster-avatar{width:31px}.roster-sync{align-items:flex-start}}
@media(prefers-reduced-motion:no-preference){.roster-driver-button,.roster-person{transition:background .15s,border-color .15s}.roster-picker{animation:roster-picker-in .15s ease-out}@keyframes roster-picker-in{from{opacity:.5;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}}

.roster-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 22px}.roster-tabs button{min-height:44px;flex:1;max-width:210px}.roster-requests{padding:24px;background:var(--paper,#fff);border:1px solid var(--line,#dde2eb);border-radius:20px;min-width:0}.roster-request-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.roster-request-heading h2{margin:.2rem 0 .7rem}.roster-request-form{display:grid;grid-template-columns:1fr 1fr auto;gap:16px;align-items:start;padding:20px 0;border-block:1px solid var(--line,#dde2eb);margin:20px 0}.roster-request-form label,.roster-field-label{font-size:13px;font-weight:650;margin:0 0 8px}.roster-request-form input{width:100%;min-width:0;margin-top:8px;min-height:46px}.roster-request-form small{display:block;font-weight:400;margin-top:8px}.roster-request-form>button{margin-top:27px;min-height:46px}.roster-request-list{display:grid;gap:10px;margin:20px 0}.roster-request-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px;background:var(--wash,#f3f5fa);border-radius:12px}.roster-request-row small{display:block;margin-top:6px;overflow-wrap:anywhere}.roster-slack{border-top:1px solid var(--line,#ddd);margin-top:24px;padding-top:12px}.roster-slack textarea{width:100%;font:16px/1.6 ui-monospace,monospace;padding:16px}.roster-slack-actions{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.roster-slack-actions a{padding:12px 16px;border:1px solid var(--line,#ddd);border-radius:10px;text-decoration:none;color:inherit;min-height:44px}.roster-directory{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.roster-driver{display:flex;flex-direction:column;gap:8px;padding:18px;background:var(--wash,#f3f5fa);border-radius:12px;min-width:0}.roster-driver code{overflow-wrap:anywhere}.roster-request-form .dm-driver-options{z-index:10}.roster-request-form .dm-driver-options button{white-space:normal}.roster-requests .error{color:#a62f43}
@media(max-width:680px){.roster-requests{padding:16px;border-radius:16px}.roster-request-heading{display:block}.roster-request-heading .compact-actions{margin-top:16px;display:flex;flex-wrap:wrap}.roster-request-form{grid-template-columns:minmax(0,1fr)}.roster-request-form>button{margin-top:0}.roster-directory{grid-template-columns:minmax(0,1fr)}.roster-tabs button{padding:10px 8px;font-size:13px}.roster-slack-actions>*{flex:1 1 100%;text-align:center}.roster-request-row{align-items:flex-start}.roster-request-row>div{min-width:0;overflow-wrap:anywhere}}

.roster-directory-summary{display:grid;gap:7px;padding:16px 20px;border:1px solid var(--line);border-radius:13px;background:#fff;font-size:.8rem;color:#687f9d}.roster-directory-summary>strong{font-size:.94rem;color:#244365}.roster-directory-summary .compact-actions{margin-top:7px;display:flex;gap:8px;flex-wrap:wrap}.roster-directory-summary .compact-actions button{font-size:.78rem}.roster-route-field{border-top:1px solid #e7ecf4;margin-top:12px;padding-top:12px;display:grid;gap:7px}.roster-route-field label{font-size:.75rem;color:#657d9d;display:grid;gap:6px}.roster-route-field input{font-size:16px;font-family:ui-monospace,monospace;width:100%;min-width:0}.roster-route-field small{font-size:.7rem;line-height:1.5;overflow-wrap:anywhere}.roster-route-field button{font-size:.75rem;padding:9px 11px;justify-self:start}.roster-inline-directory,.roster-inline-message{padding:20px;background:#fff;border:1px solid var(--line);border-radius:14px;min-width:0}.roster-inline-directory>summary{font-weight:650;cursor:pointer;min-height:44px;display:flex;align-items:center;gap:10px}.roster-inline-directory>summary:before{content:'+';font-size:1.25rem;color:#6681ac}.roster-inline-directory[open]>summary:before{content:'−'}.roster-directory-content{padding-top:12px}.roster-inline-message h3{margin:0 0 8px}.roster-inline-message textarea{width:100%;font:16px/1.7 ui-monospace,monospace;margin-top:16px;padding:14px}.roster-operation{padding:18px;border:1px solid #cbdcf3;border-radius:14px;background:#eef5ff;display:grid;gap:12px;scroll-margin-top:110px}.roster-operation strong{font-size:.95rem;color:#244365}.roster-operation small{color:#687f9d;line-height:1.5}.roster-operation progress{width:100%;height:9px;accent-color:#4666d4}.roster-message[hidden]{display:none}
@media(max-width:680px){.roster-route-field button{width:100%;justify-self:stretch}.roster-directory-summary,.roster-inline-directory,.roster-inline-message{padding:16px}.roster-directory-summary .compact-actions button{flex:1}.roster-slot{grid-template-columns:68px minmax(0,1fr);gap:10px;padding:14px}.roster-slot-time>span{overflow-wrap:anywhere}.roster-route-field{margin-top:10px}.roster-inline-message .roster-request-row{align-items:flex-start}.roster-inline-message .roster-request-row>div{overflow-wrap:anywhere;min-width:0}}

.roster-group-side{display:flex;align-items:center;gap:.6rem;flex:none}.roster-clear-group{font-size:.72rem;min-height:36px!important;padding:.3rem .7rem;border-radius:7px;border:1px solid #efcfcc;background:#fff;color:#a5594f}.roster-clear-group:hover:not(:disabled){background:#fff2f0;border-color:#e2b3ad}.roster-clear{border-top:1px solid #e9edf4;margin-top:1.1rem;padding-top:.6rem}.roster-clear-button{border-color:#efcfcc;color:#a5594f;background:#fff}.roster-clear-button:hover:not(:disabled){background:#fff2f0;border-color:#e2b3ad}.roster-clear-note{display:block;font-size:.7rem;line-height:1.55;color:#8c9bb0;margin-top:.5rem}.roster-clear-summary{list-style:none;margin:0 0 .8rem;padding:.2rem .9rem;border:1px solid #efcfcc;background:#fff8f7;border-radius:10px}.roster-clear-summary li{display:flex;justify-content:space-between;gap:.8rem;padding:.55rem 0;font-size:.78rem;color:#7d5a55;border-bottom:1px solid #f3dedb}.roster-clear-summary li:last-child{border-bottom:0}.roster-clear-summary strong{white-space:nowrap;color:#a5594f}
@media(max-width:680px){.roster-group-side{width:100%;justify-content:space-between}.roster-clear-group{min-height:44px!important;font-size:.8rem}}
