/* CAPITAL GRID V37.1.0 — Expense Import parity module */
.cg-import-method-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px!important}
.cg-import-method-grid .cg-scan-method-button{min-height:112px!important;text-align:left!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;gap:7px!important}
.cg-import-method-grid .cg-import-camera{border-color:#8dc7bd!important;background:linear-gradient(145deg,#f2fbf8,#fff)!important}
.cg-import-method-grid .cg-import-upload{border-color:#aac9df!important;background:linear-gradient(145deg,#f5faff,#fff)!important}
.cg-import-method-grid .cg-import-batch{border-color:#b8b0da!important;background:linear-gradient(145deg,#f8f7ff,#fff)!important}
.cg-import-chooser-card{width:min(930px,94vw)!important}.cg-import-chooser-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.cg-import-choice{appearance:none;border:1px solid #cbdbe5;border-radius:16px;background:#fff;padding:18px;text-align:left;cursor:pointer;box-shadow:0 4px 14px rgba(20,55,80,.08);transition:.15s}.cg-import-choice:hover{transform:translateY(-1px);border-color:#70a9c8}.cg-import-choice b{display:block;font-size:17px;color:#123852;margin-bottom:5px}.cg-import-choice small{display:block;color:#60778a;line-height:1.4}.cg-import-choice.qr{border-left:5px solid #0a4d75}.cg-import-choice.camera{border-left:5px solid #0b9d79}.cg-import-choice.upload{border-left:5px solid #4e8bb5}.cg-import-choice.batch{border-left:5px solid #7256b5}.cg-import-qr-card{width:min(620px,94vw)!important}.cg-import-qr-actions{display:grid;grid-template-columns:1fr;gap:9px;margin:14px 0}.cg-import-help{padding:11px 13px;border-radius:10px;background:#f3f8fb;color:#546d7e;font-size:12px;line-height:1.45}.cg-import-tiny{font-size:12px;color:#6a7f8f}.cgbi-actions{display:flex;gap:8px;flex-wrap:wrap}.cgbi-btn{border:1px solid #cdd9e2;border-radius:10px;padding:9px 13px;font:inherit;font-weight:800;cursor:pointer;background:#fff;color:#163a55}.cgbi-btn.primary{background:#0f4668;color:#fff;border-color:#0f4668}.cgbi-btn.light{background:#fff;color:#183b54}.cgbi-btn:disabled{opacity:.55;cursor:not-allowed}

/* Capital Grid V37.1.1 — Employee Expense Portal V1.3.17 batch/crop visual parity */
.cg-batch-backdrop{position:fixed;inset:0;background:rgba(12,31,45,.60);z-index:10050;display:flex;align-items:center;justify-content:center;padding:18px}.cg-batch-backdrop.hidden{display:none}.cg-batch-modal{width:min(1180px,100%);max-height:94vh;background:#fff;border-radius:18px;box-shadow:0 28px 70px rgba(0,0,0,.28);overflow:hidden;display:grid;grid-template-rows:auto 1fr auto}.cg-batch-head,.cg-batch-footer{padding:14px 16px;border-bottom:1px solid var(--border,#dce6ed);display:flex;align-items:center;justify-content:space-between;gap:12px}.cg-batch-footer{border-top:1px solid var(--border,#dce6ed);border-bottom:0}.cg-batch-body{padding:14px;overflow:auto}.cg-batch-stage.hidden{display:none}.cg-batch-filter{padding:11px 12px;border:1px solid #cfe0e7;border-radius:11px;background:#f8fbfc;margin-bottom:12px}.cg-batch-filter-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:800}.cg-batch-filter input[type=range]{width:100%;accent-color:#079b7c}.cg-batch-scale{display:flex;justify-content:space-between;color:#738797;font-size:10px}.cg-batch-intro{display:flex;gap:12px;align-items:flex-start;border:1px solid #dce7ed;background:#f8fbfc;border-radius:13px;padding:13px}.cg-batch-intro-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:#e2f6ef;color:#08775c;font-weight:900;font-size:20px}.cg-batch-upload-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}.cg-batch-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.cg-batch-pages{display:grid;gap:16px}.cg-batch-page-card{border:1px solid var(--border,#dce6ed);border-radius:14px;padding:12px;background:#fbfcfd}.cg-batch-page-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}.cg-batch-page-canvas-wrap{position:relative;display:inline-block;max-width:100%;background:#dfe8ee;border-radius:10px;padding:6px}.cg-batch-page-canvas-wrap canvas{display:block;max-width:100%;height:auto}.cg-batch-overlay-box{position:absolute;border:3px solid #09a27e;background:#08a27e14;box-shadow:0 0 0 1px #fff8 inset;z-index:2;padding:0;cursor:pointer}.cg-batch-overlay-box:hover{background:#08a27e25}.cg-batch-overlay-box span{position:absolute;left:-2px;top:-24px;background:#087a61;color:#fff;font-size:10px;line-height:18px;padding:2px 6px;border-radius:6px 6px 0 0;white-space:nowrap}.cg-batch-region-controls{margin-top:9px;display:grid;gap:6px}.cg-batch-region-row{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px dashed #d7e1e7;padding-top:7px}.cg-batch-region-name{font-weight:800}.cg-batch-row-actions{display:flex;gap:6px;flex-wrap:wrap}.cg-batch-sm{padding:6px 8px!important;font-size:11px!important;border-radius:9px!important}.cg-batch-danger{background:#fff0f0!important;color:#a72d2d!important;border:1px solid #efc7c7!important}.cg-batch-crop-editor{max-width:900px;margin:0 auto}.cg-batch-crop-wrap{position:relative;display:inline-block;max-width:100%;background:#202a32;padding:7px;border-radius:10px}.cg-batch-crop-wrap canvas{display:block;max-width:100%;height:auto}.cg-batch-crop-box{position:absolute;border:3px solid #0bb78e;background:#08a27e18;cursor:move;touch-action:none}.cg-batch-crop-box span{position:absolute;left:-2px;top:-25px;background:#087a61;color:white;font-size:10px;padding:4px 6px;border-radius:5px}.cg-batch-resize-handle{position:absolute;width:18px;height:18px;right:-9px;bottom:-9px;background:#fff;border:3px solid #087a61;border-radius:4px;cursor:nwse-resize}.cg-batch-review-list{display:grid;gap:12px}.cg-batch-review-card{display:grid;grid-template-columns:180px minmax(0,1fr);gap:14px;border:1px solid var(--border,#dce6ed);border-radius:14px;padding:12px;background:#fff}.cg-batch-review-card.off{opacity:.5;background:#f4f6f7}.cg-batch-preview{position:relative;background:#eef3f6;border-radius:10px;min-height:180px;display:grid;place-items:center;overflow:hidden}.cg-batch-preview img{max-width:100%;max-height:240px;object-fit:contain}.cg-batch-preview span{position:absolute;left:7px;top:7px;background:#0d3b59;color:#fff;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:900}.cg-batch-review-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:9px}.cg-batch-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:900;background:#fff4d8;color:#8a6300}.cg-batch-status.ready{background:#e3f7ef;color:#087157}.cg-batch-status.error{background:#fdeaea;color:#a52d2d}.cg-batch-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.cg-batch-grid .field{min-width:0}.cg-batch-grid .field input,.cg-batch-grid .field select{width:100%;box-sizing:border-box}.cg-batch-item-filter{margin-top:9px;padding:8px 10px;border-radius:10px;background:#f8fbfc;border:1px solid #dbe6eb}.cg-batch-progress{height:8px;background:#e8eef2;border-radius:999px;overflow:hidden;margin:8px 0 10px}.cg-batch-progress span{display:block;height:100%;width:0;background:#079b7c;transition:width .15s}.cg-batch-note{padding:9px 11px;border-left:3px solid #09a27e;background:#f3faf7;color:#536b7c;font-size:12px;margin-top:10px}.cg-batch-file{display:none}.cg-batch-empty{padding:18px;text-align:center;color:#6f8392}.cg-batch-message{font-size:12px;color:#637989;margin:7px 0}.cg-batch-footer .cgbi-actions{display:flex;gap:8px;margin-left:auto}.cg-batch-modal .field label{display:block;font-size:11px;font-weight:800;color:#3b566b;margin-bottom:4px}.cg-batch-modal .field input,.cg-batch-modal .field select{padding:8px 9px;border:1px solid #cddae3;border-radius:9px;background:#fff;color:#17374f}
@media(max-width:1050px){.cg-import-method-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:900px){.cg-batch-review-card{grid-template-columns:140px minmax(0,1fr)}.cg-batch-grid{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.cg-import-method-grid,.cg-import-chooser-grid{grid-template-columns:1fr!important}.cg-batch-backdrop{padding:0}.cg-batch-modal{width:100%;height:100dvh;max-height:none;border-radius:0}.cg-batch-review-card{grid-template-columns:1fr}.cg-batch-grid{grid-template-columns:1fr 1fr}.cg-batch-region-row{align-items:flex-start;flex-direction:column}.cg-batch-page-head,.cg-batch-toolbar{align-items:flex-start;flex-direction:column}.cg-batch-overlay-box{border-width:2px}}

/* V37.1.1 parity hardening: keep Employee Portal green detection/crop boxes visible inside the ERP theme. */
#cgBatchModal .cg-batch-page-canvas-wrap{line-height:0!important;overflow:visible!important}
#cgBatchModal .cg-batch-overlay-box{display:block!important;position:absolute!important;border:3px solid #09a27e!important;background:rgba(8,162,126,.08)!important;box-shadow:0 0 0 1px rgba(255,255,255,.53) inset!important;border-radius:0!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;opacity:1!important;appearance:none!important;-webkit-appearance:none!important}
#cgBatchModal .cg-batch-overlay-box span{display:block!important;position:absolute!important;left:-3px!important;top:-25px!important;background:#087a61!important;color:#fff!important;font-size:10px!important;line-height:18px!important;padding:2px 6px!important;border-radius:6px 6px 0 0!important;white-space:nowrap!important;z-index:4!important}
#cgBatchModal .cg-batch-crop-box{display:block!important;border:3px solid #0bb78e!important;background:rgba(8,162,126,.09)!important;opacity:1!important}
#cgBatchModal .cg-batch-resize-handle{display:block!important;background:#fff!important;border:3px solid #087a61!important}

/* V37.1.2 — Batch duplicate-confirmation layer
   Main ERP duplicate protection uses the global Possible Duplicate modal.
   Batch Scan sits at z-index 10050, so the legacy modal (10000) was hidden
   behind the batch window and cgBatchSubmitAll waited forever for a choice. */
body > #expenseDuplicateDecision.modal.show,
#expenseDuplicateDecision.modal.show.cg-batch-duplicate-top{
  z-index:10250!important;
  display:flex!important;
}
body > #expenseDuplicateDecision.modal.show .modal-card,
#expenseDuplicateDecision.modal.show.cg-batch-duplicate-top .modal-card{
  z-index:10251!important;
  position:relative!important;
}
