/* Class review: a visible page is the maximum scope of every bulk action. */
.batch-layout{display:grid;grid-template-columns:248px minmax(0,1fr);gap:22px;align-items:start}
.batch-sidebar{padding:19px 16px;position:sticky;top:18px;max-height:calc(100vh - 36px);display:flex;flex-direction:column;min-height:0}
.batch-sidebar-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.batch-sidebar-heading h2{font-size:16px;margin:4px 0 0}.batch-sidebar-heading>.badge{font-variant-numeric:tabular-nums}
.batch-filters label{font-size:11px;color:#6d848a;margin-bottom:6px}.batch-search-row{display:flex;gap:6px}.batch-search-row input{min-width:0;width:100%;font-size:12px;padding:8px;min-height:36px}.batch-search-row .button{padding:5px 9px;flex-shrink:0}
.batch-filter-pair{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.batch-filter-pair select{width:100%;min-height:35px;padding:7px 22px 7px 8px;font-size:11px}.batch-sidebar-hint{font-size:10px;color:#84999e;line-height:1.8;margin:13px 0}
.batch-class-list{display:flex;flex-direction:column;gap:6px;overflow:auto;overscroll-behavior:contain;min-height:120px;max-height:58vh;padding:2px 3px 3px 1px}.batch-class-list>.muted{font-size:12px;padding:12px 0}
.batch-class-button{width:100%;border:1px solid #e3ebeb;border-radius:8px;background:#fff;padding:11px 10px;text-align:left;display:grid;grid-template-columns:1fr auto;gap:4px 8px;color:#546e76;min-width:0}.batch-class-button:hover{background:#f4f9f7;border-color:#b6d5cb}.batch-class-button.active{background:#eaf6f1;border-color:#74b49f;box-shadow:inset 3px 0 #148271}.batch-class-button strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;color:#285a51;overflow-wrap:anywhere}.batch-class-button .batch-class-name{grid-column:1/-1;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-height:16px}.batch-class-button .batch-class-count{font-size:11px;color:#227b66;font-variant-numeric:tabular-nums}.batch-class-button .batch-class-detail{grid-column:1/-1;color:#849b97;font-size:10px}
.batch-class-pager{display:flex;align-items:center;justify-content:space-between;gap:6px;padding-top:14px;margin-top:10px;border-top:1px solid #e7eeee}.batch-class-pager>span{font-size:10px;color:#7d959c;text-align:center}.batch-class-pager .button{min-width:30px;padding:5px 8px}
.batch-main{min-width:0}.batch-class-header{padding:20px 23px;margin-bottom:17px}.batch-title-row{display:flex;justify-content:space-between;gap:20px;align-items:center}.batch-title-row h2{font-size:27px;color:#196e61;margin:5px 0;letter-spacing:.3px;overflow-wrap:anywhere}.batch-title-row p{font-size:12px;color:#718b92;margin-bottom:0}.batch-title-row .button{font-size:12px;white-space:nowrap}.batch-class-progress{display:flex;flex-wrap:wrap;gap:6px 18px;margin:15px 0 11px;font-size:11px;color:#788f96}.batch-class-progress b{color:#4a7267;font-variant-numeric:tabular-nums}.batch-workflow{font-size:11px;color:#6d8984;margin:0;padding-top:12px;border-top:1px solid #e7efec;line-height:1.8}
.batch-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:17px 0 10px}.batch-selection-tools,.batch-page-tools{display:flex;gap:15px;align-items:center}.batch-select-all{display:flex;align-items:center;gap:8px;font-size:12px;color:#4c7068;cursor:pointer;margin:0}.batch-select-all input{margin:0}.batch-selection-tools .text-button{font-size:11px}.batch-page-tools{gap:8px}.batch-page-tools label{font-size:11px;margin:0;color:#82989e}.batch-page-tools select{font-size:11px;min-height:32px;padding:5px 24px 5px 9px}.batch-page-tools .button{font-size:11px}.batch-page-status{display:flex;justify-content:space-between;gap:15px;margin-bottom:12px;font-size:10px;color:#789197;flex-wrap:wrap}.batch-page-status strong{color:#a65d44;font-weight:500}
.batch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:13px;align-items:start}.batch-card{min-width:0;background:#fff;border:1px solid #dce6e7;border-radius:10px;overflow:hidden;transition:border-color .15s,box-shadow .15s}.batch-card.selected{border-color:#20927b;box-shadow:0 0 0 2px #20927b24}.batch-card.locked{background:#f5f7f8}.batch-card-top{display:flex;align-items:center;justify-content:space-between;padding:9px 10px 8px;gap:5px}.batch-card-select{display:flex;align-items:center;gap:6px;font-size:10px;color:#66818a;margin:0;cursor:pointer;min-width:0}.batch-card-select input{margin:0}.batch-card-select .split-badge{font-size:9px}.batch-card .badge{font-size:9px}
.batch-thumb{position:relative;width:100%;height:176px;display:flex;align-items:center;justify-content:center;background:#f7f9f9;border:0;padding:12px;overflow:hidden;border-radius:0;cursor:zoom-in}.batch-thumb:hover{background:#f0f6f4}.batch-thumb:focus-visible{outline-offset:-3px}.batch-thumb img{display:block;width:100%;height:100%;object-fit:contain}.batch-thumb-label{position:absolute;left:0;right:0;bottom:0;font-size:9px;text-align:center;padding:4px;background:#ffffffd9;color:#748b91;pointer-events:none}.batch-card.loaded .batch-thumb-label{opacity:0}.batch-card.loaded .batch-thumb:hover .batch-thumb-label,.batch-card.loaded .batch-thumb:focus-visible .batch-thumb-label{opacity:1}.batch-card.failed .batch-thumb{background:#fff5ee}.batch-card.failed .batch-thumb-label{color:#a36d50;font-size:11px;top:0;display:flex;align-items:center;justify-content:center;line-height:1.8;padding:15px;white-space:pre-line;background:transparent}.batch-card.failed .batch-thumb img{visibility:hidden}.batch-card.locked .batch-thumb img{opacity:.7}
.batch-card-footer{padding:9px 10px 10px;min-height:56px}.batch-card-filename{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#6e858d;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.batch-card-meta{display:flex;justify-content:space-between;gap:8px;font-size:9px;color:#97a7ad;margin-top:4px;min-height:14px}.batch-card-lock{color:#a17a42;font-size:10px;display:block;margin-top:4px;overflow-wrap:anywhere}
.batch-image-pager{display:flex;align-items:center;justify-content:center;gap:20px;padding:22px 0}.batch-image-pager .button{font-size:12px}.batch-image-pager>span{font-size:11px;color:#7c9499}.batch-empty{text-align:center;padding:45px 20px;background:#fff;border:1px dashed #ccdfda;border-radius:12px;min-height:240px}.batch-empty>span{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:#edf7f1;color:#62a18c;font-size:24px;margin-bottom:12px}.batch-empty h3{font-size:16px;color:#587a70}.batch-empty p{font-size:12px;color:#859a9c}.batch-empty .button{font-size:12px}
.batch-decision-bar{position:sticky;bottom:12px;z-index:8;border:1px solid #c6ded6;background:#fff;border-radius:12px;padding:15px 20px;box-shadow:0 -5px 35px #234f3e14;margin-top:5px}.batch-decision-heading{display:flex;align-items:center;gap:15px;margin-bottom:10px}.batch-decision-heading strong{font-size:14px;color:#246c5d}.batch-decision-heading span{font-variant-numeric:tabular-nums}.batch-decision-heading>span{font-size:10px;color:#829e94}.batch-action-row{display:flex;gap:8px;margin-bottom:11px;flex-wrap:wrap}.batch-action{background:#fff;border:1px solid #dce7e4;border-radius:7px;padding:7px 12px;font-size:11px;color:#68877c;min-height:33px}.batch-action.selected{background:#e7f5ed;border-color:#7ebda7;color:#1f725b}.batch-action[data-batch-action="exclude"].selected{background:#fff1ed;border-color:#ce9a8d;color:#a15043}.batch-action[data-batch-action="uncertain"].selected{background:#fff7e3;border-color:#d2b878;color:#98742c}.batch-submit-row{display:flex;align-items:flex-end;gap:15px}.batch-note-field{flex:1;min-width:0}.batch-note-field label{font-size:11px;color:#618377;margin-bottom:5px}.batch-note-field label>span{font-size:10px;font-weight:400;color:#96a79f;margin-left:5px}.batch-note-field textarea{font-size:11px;min-height:37px;padding:8px 10px;max-height:100px;display:block}.batch-submit-row>.button{font-size:12px;min-height:37px;white-space:nowrap}.batch-submit-hint{font-size:10px;color:#8da299;margin:8px 0 0;line-height:1.6}
.batch-target-fields{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(150px,1fr);gap:10px 16px;padding:12px 0 15px;border-top:1px solid #e8efed}.batch-target-search{position:relative;min-width:0}.batch-target-search label{font-size:11px;color:#65867b;margin-bottom:5px}.batch-target-search input{width:100%;min-height:36px;font-size:12px}.batch-target-search .search-results{top:auto;bottom:100%;margin:0 0 5px;max-height:260px}.batch-chosen-target{background:#f2f8f4;border-radius:8px;padding:9px 12px;align-self:end;font-size:11px;color:#608274;overflow-wrap:anywhere;min-width:0}.batch-chosen-target strong{display:block;font-size:13px;color:#246c5d;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.batch-target-samples{grid-column:1/-1;display:flex;align-items:center;gap:8px;min-height:0;flex-wrap:wrap}.batch-target-samples:empty{display:none}.batch-target-samples>span{font-size:10px;color:#94a59e;line-height:1.6;flex:1;min-width:150px}.batch-target-thumb{padding:4px;border:1px solid #e0e8e4;border-radius:6px;background:#f7faf8;width:56px;height:56px;flex:0 0 56px;cursor:zoom-in}.batch-target-thumb img{width:100%;height:100%;object-fit:contain}.batch-target-thumb img[hidden]{display:none}.batch-target-thumb.failed{font-size:9px;color:#aa7b65}
.batch-image-dialog #batchZoomError{font-size:13px;color:#e7d4be;line-height:1.9;text-align:center;max-width:380px}.batch-image-dialog .dialog-footnote{overflow-wrap:anywhere;text-align:left}.batch-image-dialog .dialog-heading h2{font-size:16px}.batch-image-dialog .dialog-heading p{overflow-wrap:anywhere}#batchError{white-space:pre-line}#batchError .button{display:block}
@media(min-width:1500px){.batch-grid{grid-template-columns:repeat(auto-fill,minmax(185px,1fr))}.batch-thumb{height:196px}}
@media(max-width:1150px){.batch-layout{grid-template-columns:220px minmax(0,1fr);gap:16px}.batch-sidebar{padding:16px 13px}.batch-grid{grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:10px}.batch-thumb{height:158px}.batch-class-header{padding:18px}.batch-decision-bar{padding:14px 16px}.batch-action{padding:7px 9px}.main-nav{gap:18px}.nav-tab{font-size:12px}}
@media(max-width:900px){.batch-layout{grid-template-columns:195px minmax(0,1fr);gap:13px}.batch-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.batch-sidebar{padding:15px 10px}.batch-filter-pair{grid-template-columns:1fr;gap:9px}.batch-sidebar-heading{align-items:flex-start;flex-direction:column;gap:8px}.batch-page-toolbar{align-items:flex-start;flex-direction:column;gap:10px}.batch-page-tools{align-self:flex-end}.batch-submit-row{align-items:stretch;flex-direction:column;gap:10px}.batch-submit-row>.button{align-self:flex-end}.batch-target-fields{grid-template-columns:1fr}.batch-action-row{gap:6px}.batch-action{font-size:10px}.batch-title-row{gap:10px}.batch-title-row .button{font-size:11px;padding:8px 10px}.batch-decision-bar{bottom:6px}.batch-note-field label>span{font-size:9px}.batch-sidebar-hint{font-size:9px}.batch-filter-pair select{font-size:11px}}
@media(max-width:650px){.batch-layout{grid-template-columns:1fr}.batch-sidebar{position:static;max-height:none;padding:16px}.batch-sidebar-heading{flex-direction:row;align-items:center;margin-bottom:12px}.batch-filter-pair{grid-template-columns:1fr 1fr}.batch-class-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-height:218px;min-height:0;gap:7px}.batch-class-button{padding:9px}.batch-class-button strong{font-size:12px}.batch-class-detail{display:none}.batch-class-pager{margin-top:7px;padding-top:9px}.batch-sidebar-hint{margin:10px 0;font-size:10px}.batch-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.batch-page-toolbar{flex-direction:row;flex-wrap:wrap}.batch-page-tools{margin-left:auto}.batch-thumb{height:175px}.batch-decision-bar{position:static;margin-top:3px;padding:15px;box-shadow:var(--shadow)}.batch-submit-row{flex-direction:row;align-items:flex-end}.batch-submit-row>.button{font-size:11px;padding:9px 10px;align-self:auto}.batch-image-pager{gap:14px}.batch-image-pager .button{font-size:11px}.batch-card .badge{font-size:8px}.batch-class-header{padding:17px}.batch-title-row h2{font-size:25px}.batch-card-meta{font-size:8px}.batch-load-status{font-size:9px}.main-nav{gap:20px;overflow-x:auto;white-space:nowrap}.nav-tab{flex-shrink:0}.batch-submit-hint{font-size:10px}.batch-target-fields{grid-template-columns:1fr 1fr}}
@media(max-width:380px){.batch-thumb{height:140px}.batch-card-top{padding:8px 7px}.batch-card-select{gap:4px}.batch-action{font-size:9px;padding:7px 8px}.batch-submit-row{flex-direction:column;align-items:stretch}.batch-target-fields{grid-template-columns:1fr}.batch-page-tools{gap:6px}.batch-page-tools .button{font-size:10px;padding:6px 8px}.batch-class-progress{gap:6px 12px;font-size:10px}}
/* Compact the desktop class workbench so the grid remains the primary surface.
   Single-image, history and admin layouts retain their original spacing. */
@media(min-width:901px){
  .batch-mode .page-content{padding-top:16px}
  .batch-mode .overview{gap:22px;margin-bottom:9px}
  .batch-mode .overview-title>.eyebrow{display:none}
  .batch-mode .overview-title h1{font-size:21px;margin-bottom:5px}
  .batch-mode .overview-title p{font-size:11px}
  .batch-mode .progress-card{padding:9px 14px;width:310px}
  .batch-mode .progress-heading{margin-bottom:6px;font-size:10px}
  .batch-mode .progress-heading strong{font-size:16px}
  .batch-mode .progress-meta{margin-top:5px;font-size:9px}
  .batch-mode .stats-strip{padding:6px 0 10px;margin-bottom:12px;font-size:11px}
  .batch-mode .batch-class-header{padding:12px 16px;margin-bottom:10px}
  .batch-mode .batch-title-row{min-height:34px;gap:15px}
  .batch-mode .batch-title-row>div{min-width:0}
  .batch-mode .batch-title-row .eyebrow{display:none}
  .batch-mode .batch-title-row h2{display:inline-block;font-size:23px;margin:0 12px 0 0;vertical-align:middle}
  .batch-mode .batch-title-row p{display:inline;font-size:11px;vertical-align:middle}
  .batch-mode .batch-title-row>.button{min-height:33px;padding:6px 12px;font-size:11px}
  .batch-mode .batch-class-progress{margin:8px 0 0;font-size:10px;gap:5px 16px}
  .batch-mode .batch-workflow{display:none}
  .batch-mode .batch-page-toolbar{margin:10px 0 6px}
  .batch-mode .batch-page-status{margin-bottom:9px}
  .batch-mode .batch-grid{gap:10px}
  .batch-mode .batch-thumb{height:128px;padding:8px}
  .batch-mode .batch-card-top{padding:7px 9px 6px}
  .batch-mode .batch-card-footer{min-height:44px;padding:7px 9px 8px}
  .batch-mode .batch-card-meta{margin-top:3px;min-height:12px}
}
@media(min-width:1100px){
  .batch-mode .batch-decision-bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:7px 13px;padding:11px 15px;bottom:10px}
  .batch-mode .batch-decision-heading{grid-column:1;grid-row:1;margin:0;align-self:center}
  .batch-mode .batch-decision-heading strong{font-size:13px;white-space:nowrap}
  .batch-mode .batch-decision-heading>span{display:none}
  .batch-mode .batch-action-row{grid-column:2;grid-row:1;margin:0;gap:6px;flex-wrap:nowrap;align-items:center}
  .batch-mode .batch-action{font-size:10px;min-height:31px;padding:6px 9px;white-space:nowrap}
  .batch-mode .batch-submit-row{display:contents}
  .batch-mode .batch-submit-row>.button{grid-column:3;grid-row:1;min-height:33px;font-size:11px;padding:7px 12px;align-self:center}
  .batch-mode .batch-note-field{grid-column:1/-1;grid-row:2;display:flex;align-items:center;gap:10px}
  .batch-mode .batch-note-field label{margin:0;font-size:10px;white-space:nowrap}
  .batch-mode .batch-note-field label>span{font-size:9px;margin-left:3px}
  .batch-mode .batch-note-field textarea{flex:1;min-height:29px;padding:5px 9px;font-size:10px}
  .batch-mode .batch-submit-hint{grid-column:1/-1;grid-row:3;margin:0;font-size:9px;line-height:1.5}
  .batch-mode .batch-target-fields{grid-column:1/-1;grid-row:2;padding:9px 0 8px;gap:7px 12px}
  .batch-mode .has-target .batch-note-field{grid-row:3}
  .batch-mode .has-target .batch-submit-hint{grid-row:4}
  .batch-mode .batch-target-samples .batch-target-thumb{width:45px;height:45px;flex-basis:45px}
}
