.roster-datebar {display:grid;grid-template-columns:46px minmax(0,1fr) 46px;gap:8px;align-items:center;padding:9px;background:var(--card);border:1px solid var(--line);border-radius:12px;margin:8px 0;}
.roster-arrow {height:42px;border:1px solid var(--line);border-radius:10px;background:var(--soft);font-weight:850;color:var(--accent);font-size:22px;}
.roster-date {text-align:center;font-size:15px;font-weight:850;}
.roster-date small {display:block;color:var(--hint);font-size:10px;margin-top:2px;font-weight:600;}
.roster-status {font-size:12px;color:var(--hint);margin:4px 2px 10px;min-height:20px;}
.roster-sheet-scroll {overflow-x:auto;margin:0 -4px;padding:0 4px 6px;}
.roster-sheet {min-width:505px;border:1px solid #9baaba;border-radius:2px;background:#fff;color:#101820;padding:6px 4px 9px;font-family:"Malgun Gothic","맑은 고딕",sans-serif;box-shadow:0 1px 4px rgba(0,0,0,.08);}
.roster-sheet-head {display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:900;min-height:30px;gap:10px;white-space:nowrap;}
.roster-sheet-head span:last-child {font-size:10px;}
.roster-sheet-cols {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;align-items:start;}
.roster-sect {border:1px solid #adb6bd;margin-bottom:4px;}
.roster-sect-title {background:#5f7d98;color:#fff;display:flex;justify-content:space-between;align-items:center;padding:3px 5px;min-height:22px;font-weight:800;font-size:11px;}
.roster-sect-title button {border:1px solid #dae5ed;color:#fff;background:transparent;padding:0 5px;border-radius:3px;cursor:pointer;}
.roster-colheads,.roster-person {display:grid;grid-template-columns:23px minmax(0,1fr) 61px;align-items:center;font-size:10.5px;line-height:1.2;min-height:22px;}
.roster-colheads {font-weight:800;background:#e4ebf2;text-align:center;}
.roster-colheads > span,.roster-person > span {padding:3px 1px;border-right:1px solid #bfc6c9;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.roster-colheads > span:last-child,.roster-person > span:last-child {border-right:0;}
.roster-person {background:#fff;border-top:1px solid #ccd1d5;text-align:center;}
.roster-person button {border:0;background:transparent;padding:2px;width:100%;font:inherit;color:inherit;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.roster-person[aria-label] {cursor:pointer;}
.roster-person:hover {background:#edf5ff;}
.roster-person.review-issue {background:#fff6df;}
.roster-person.verified {background:#ecf7ed;}
.roster-person.swatch-peach,.roster-person.highlight-peach {background:#fce2d5;}
.roster-person.swatch-yellow {background:#fff0bb;}
.roster-person.swatch-green {background:#daf2d8;}
.roster-person.swatch-blue {background:#dcebf7;}
.roster-col-empty {min-height:20px;border-top:1px solid #ccd1d5;background:#fff;}
.roster-total {margin-top:5px;padding:8px 4px;text-align:center;background:#5f7d98;color:#fff;font-weight:900;}
.roster-total.mismatch {background:#a05c3c;}
.roster-editor {margin-top:11px;border:1px solid var(--accent);padding:12px;border-radius:12px;background:var(--card);}
.roster-editor[hidden] {display:none;}
.roster-editor label {display:block;font-size:11px;color:var(--hint);margin:8px 0 3px;}
.roster-editor input {width:100%;height:40px;border-radius:9px;border:1px solid var(--line);background:var(--card);color:var(--text);padding:0 9px;font:inherit;}
.roster-editor .actions {display:flex;gap:6px;margin-top:12px;}
.roster-editor .actions button {flex:1;height:42px;border:0;border-radius:9px;background:var(--soft);color:var(--accent);font-weight:800;}
.roster-editor .actions button.save {background:var(--accent);color:var(--accentText);}
.roster-editor-warning {font-size:11px;color:var(--hint);margin-top:8px;}
@media (max-width:390px) {.roster-sheet {min-width:505px;} .roster-date {font-size:13px;} .roster-status {font-size:11px;}}

/* Source name-cell tint is independent of OCR review status. */
.roster-person.highlight-peach > span:nth-child(2) { background:#fce2d5; color:#92483c; }
.roster-person.highlight-yellow > span:nth-child(2) { background:#fff2b3; color:#665300; }
.roster-person.highlight-green > span:nth-child(2) { background:#d7edcf; color:#285d36; }
.roster-person.highlight-blue > span:nth-child(2) { background:#d5eaf9; color:#254d7a; }

.roster-draft {display:inline-block;font-size:8px;margin-left:3px;padding:1px 2px;border:1px solid #b4842e;border-radius:2px;color:#725014;background:#fff6df;}

.roster-sheet.roster-photo-sheet{min-width:0;padding:0;border:0;background:transparent;box-shadow:none;}
.roster-photo-open{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in;}
.roster-original{display:block;width:100%;height:auto;border-radius:8px;}
.roster-photo-viewer{width:96vw;max-width:1100px;max-height:94vh;padding:48px 8px 8px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--text);}
.roster-photo-viewer::backdrop{background:#000b;}
.roster-photo-viewer>button{position:absolute;right:8px;top:5px;width:36px;height:36px;border:0;border-radius:50%;font-size:26px;background:var(--soft);color:var(--text);}
.roster-photo-viewer>div{overflow:auto;max-height:calc(94vh - 65px);}
.roster-photo-viewer img{display:block;width:max(100%,960px);max-width:none;height:auto;}

.roster-status:empty{display:none}
