/* 명단 가져오기 — 시안(2026-09-28). 악보 배포 흐름(score-workflow)의 부품을 그대로 쓰고, 새로 필요한 것만 더한다.
   색은 시안 3 토큰(--navy · --ink · --line · --paper · --reading-muted)과 배포 흐름의 값만 쓴다. */
.roster-import .roster-source{margin:2px 0 16px}
.roster-import .roster-source button{min-height:36px;padding:0 16px}
.roster-import .roster-samples-head{display:flex;align-items:center;gap:7px;margin:20px 0 10px;font-size:12px;color:var(--reading-muted)}
.roster-import .roster-samples{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.roster-import .roster-sample{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;padding:13px 14px;border:1px solid #d7d6ce;border-radius:2px;background:#fff;color:var(--ink);font:inherit;cursor:pointer;transition:border-color .2s,background .2s}
.roster-import .roster-sample:hover{border-color:var(--navy);background:#fffefa}
.roster-import .roster-sample:focus-visible{outline:2px solid #8b9dbb;outline-offset:2px}
.roster-import .roster-sample-kind{font-size:11px;color:#9b864f;letter-spacing:.02em}
.roster-import .roster-sample strong{font-size:14px;font-weight:600;color:#263752}
.roster-import .roster-sample small{font-size:12px;line-height:1.7;color:var(--reading-muted)}
.roster-demo-switch{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-8px 0 18px;font-size:12px;color:var(--reading-muted)}
.roster-demo-switch .segmented button{min-height:32px;padding:0 12px;font-size:12px}
.roster-import .roster-manual{display:grid;gap:8px}
.roster-import .roster-manual-head,.roster-import .roster-manual-row{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr) minmax(0,1fr);gap:8px}
.roster-import .roster-manual-head span{font-size:12px;color:var(--reading-muted)}
.roster-raw-wrap{border:1px solid #e1e4e9;border-radius:2px;overflow:auto;margin:6px 0 4px;background:#fff}
.roster-raw-table{border-collapse:collapse;font-size:12px;min-width:100%;white-space:nowrap}
.roster-raw-table th{background:#f5f6f9;color:#738298;font-weight:500;padding:8px 12px;text-align:left;border-bottom:1px solid #e1e4e9}
.roster-raw-table th span{display:inline-grid;place-items:center;min-width:18px;height:18px;margin-right:6px;border-radius:50%;background:#e9ecf2;color:#526581;font-size:11px;font-variant-numeric:tabular-nums}
.roster-raw-table td{padding:8px 12px;border-bottom:1px solid #eef0f3;color:#455976}
.roster-raw-table th,.roster-raw-table td{height:auto}
.roster-raw-table tr:last-child td{border-bottom:0}
.roster-raw-table td.is-empty{color:#b3bac6}
.roster-raw-table tr.is-section td{background:#f7f4ea;color:#7a6734;font-weight:550}
.roster-raw-table tr.is-section small{margin-left:8px;font-weight:400;color:#9b864f}
.roster-col{display:flex;flex-direction:column;gap:4px;min-width:0}
.roster-col strong{font-size:14px;font-weight:550;color:#263752;overflow-wrap:anywhere}
.roster-col small{font-size:12px;line-height:1.6;color:var(--reading-muted);overflow-wrap:anywhere}
.roster-basis{font-size:12px;line-height:1.5;color:var(--reading-muted)}
.roster-basis.is-memory{color:#496d58}
.roster-part-pick{display:flex;gap:8px;min-width:0}
.roster-part-pick>label{min-width:0;flex:1}
.roster-part-pick>label:first-child{flex:1.5}
.score-assignment-row.is-attention{background:#fcf9f0}
.roster-remember{display:flex;align-items:flex-start;gap:9px;margin:4px 0 6px;font-size:13px;line-height:1.75;color:var(--secondary)}
.roster-remember input{margin-top:5px;flex-shrink:0}
.roster-seat{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;margin:14px 0 12px;padding:11px 13px;border:1px solid #e1e4e9;border-radius:2px;background:#f7f8fa;font-size:13px;color:#435778}
.roster-seat strong{font-weight:600;color:#263752;font-variant-numeric:tabular-nums}
.roster-import .roster-filter{display:flex;flex-wrap:wrap;margin:4px 0 12px}
.roster-import .roster-filter button{min-height:34px;padding:0 12px;font-size:12px;font-variant-numeric:tabular-nums}
.roster-preview-table td small{display:block;margin-top:3px;font-size:12px;line-height:1.6;color:var(--reading-muted)}
.roster-preview-table td .badge+small{margin-top:6px}
.roster-person{display:flex;flex-direction:column;gap:2px;min-width:0}
.roster-person strong{font-weight:550;color:#263752}
.roster-muted{color:var(--reading-muted)}
.roster-preview-table tr.is-excluded td{background:#fafaf8;color:#8b93a1}
.roster-preview-table tr.is-excluded .roster-person strong{color:#6f7888}
.roster-preview-table tr.is-attention td{background:#fcf9f0}
.roster-import .roster-expiry{margin-top:18px;max-width:260px}
@media(max-width:700px){
 /* 구성원 머리 단추가 셋(그룹 · 명단 가져오기 · 초대)이 되며 390 폭에서 밖으로 밀리던 것 — 그 머리만 줄을 넘긴다(넓은 화면은 그대로) */
 .page-heading:has([data-action="roster-import"]) .heading-actions{flex-wrap:wrap}
 .roster-import .roster-samples{grid-template-columns:1fr}
 .roster-import .roster-manual-head{display:none}
 .roster-import .roster-manual-row{grid-template-columns:1fr;padding-bottom:10px;border-bottom:1px solid var(--line)}
 .roster-part-pick{flex-direction:column}
 .roster-import .roster-expiry{max-width:none}
 .roster-import .score-review-table.roster-preview-table td:first-child:before{content:'구성원';content:'구성원' / ''}
 .roster-import .score-review-table.roster-preview-table td:nth-child(2):before{content:'파트';content:'파트' / ''}
 .roster-import .score-review-table.roster-preview-table td:last-child:before{content:'결과';content:'결과' / ''}
}
