.roster-wrap{max-width:760px;margin:0 auto;padding:24px 20px 64px}.roster-head h1{margin:0 0 4px}.roster-lede{color:var(--ink-2);margin:0 0 6px;max-width:62ch}.roster-tip{font-size:13px;color:var(--ink-2);background:var(--paper-warm);border:1px solid var(--rule);border-radius:8px;padding:8px 12px;margin:12px 0 0}.roster-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0 8px;flex-wrap:wrap}.roster-count{font-size:14px;color:var(--ink-2)}.roster-count strong{color:var(--ink-1)}.roster-toggle{display:inline-flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.roster-banner-slot{margin:10px 0 0}.roster-banner{border-radius:8px;padding:9px 13px;font-size:14px;border:1px solid transparent}.roster-banner.info{background:var(--info-bg);border-color:var(--info-rule);color:var(--info)}.roster-banner.warn{background:var(--warning-bg);border-color:var(--warning-rule);color:var(--warning)}table.roster{width:100%;border-collapse:collapse;margin-top:14px}table.roster th,table.roster td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--rule);vertical-align:middle}table.roster th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3)}table.roster td.name{font-weight:500;color:var(--ink-1)}.status-chip{font-size:11px;padding:1px 7px;border-radius:999px;background:var(--paper-warm);color:var(--ink-3)}.status-chip.training{background:var(--info-bg);color:var(--info)}.small-cell .small-yes{font-size:12px;font-weight:600;color:var(--success);margin-left:2px}.save-state{font-size:12px;white-space:nowrap;min-width:64px;display:inline-block}.save-state.saving{color:var(--ink-3)}.save-state.saved{color:var(--success)}.save-state.err{color:var(--warning)}table.roster td.row-actions{white-space:nowrap;text-align:right}.row-remove{margin-left:10px;font-size:12px;color:var(--ink-3);background:none;border:none;cursor:pointer;padding:2px 4px;border-radius:5px;text-decoration:underline;text-underline-offset:2px}.row-remove:hover{color:var(--warning);background:var(--warning-bg);text-decoration:none}.row-remove:focus-visible{outline:2px solid var(--orange);outline-offset:1px}.roster-empty{color:var(--ink-3);text-align:center;padding:22px 12px}.roster-addrow{margin-top:18px;padding-top:14px;border-top:1px solid var(--rule)}.roster-addform{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.roster-addform input[data-act=add-id]{font-size:14px;padding:7px 9px;border:1px solid var(--rule);border-radius:7px;background:var(--paper);color:var(--ink-1);box-sizing:border-box;width:220px}.roster-addform input[data-act=add-id]:focus{outline:2px solid var(--orange);outline-offset:0;border-color:transparent}.roster-addform button[disabled]{opacity:.5;cursor:not-allowed}.roster-addnote{font-size:12px;color:var(--ink-3);margin:6px 0 0}.email-err{color:var(--warning);font-size:12px;margin:4px 0 0}.roster-vintools{margin:14px 0 0;padding:12px 14px;background:var(--paper-warm);border:1px solid var(--rule);border-radius:8px}.roster-vinlabel{display:block;font-size:13px;color:var(--ink-2);margin:0 0 6px}.roster-vinlabel code{font-size:12px;background:var(--paper);border:1px solid var(--rule);border-radius:4px;padding:0 4px}textarea[data-act=vin-paste]{width:100%;box-sizing:border-box;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;padding:8px 10px;border:1px solid var(--rule);border-radius:7px;background:var(--paper);color:var(--ink-1);resize:vertical}textarea[data-act=vin-paste]:focus{outline:2px solid var(--orange);outline-offset:0;border-color:transparent}.roster-vinbtns{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0 0}td.vin-cell{min-width:220px}.vin-input{width:200px;max-width:100%;box-sizing:border-box;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em;padding:6px 8px;border:1px solid var(--rule);border-radius:6px;background:var(--paper);color:var(--ink-1);text-transform:uppercase}.vin-input:focus{outline:2px solid var(--orange);outline-offset:0;border-color:transparent}.vin-facts{font-size:12px;color:var(--ink-3);margin:4px 0 0}.vin-suggest{font-size:12px;font-weight:600;margin:3px 0 0}.vin-suggest.ok{color:var(--success)}.vin-suggest.manual{color:var(--ink-2)}.vin-suggest.disagree{color:var(--warning)}.vin-note{font-size:11px;color:var(--ink-3);margin:2px 0 0;font-style:italic}.vin-disagree{display:inline-block;margin:4px 0 0;font-size:12px;font-weight:700;color:var(--warning);background:var(--warning-bg);border:1px solid var(--warning-rule);border-radius:6px;padding:3px 8px}tr.row-review{background:var(--warning-bg)}tr.row-review td{border-bottom-color:var(--warning-rule)}.row-confirm{margin-left:10px;font-size:12px;font-weight:600;color:var(--paper);background:var(--orange);border:1px solid transparent;cursor:pointer;padding:4px 9px;border-radius:6px}.row-confirm:hover{filter:brightness(.94)}.row-confirm:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
