/* =============================================================
   BULK CONTRACT SIGN — bulk_contract_sign_v4.css
   Commissioner worksheet layered above the LCR (design pinned by
   docs/mockups/bulk_contract_sign_v2.html).

   Theming: --jt-* tokens from jt_theme_v4.css (auto light-flip).
   Header gradient hardcoded to match the report family (PCR/LCR).

   Ladder slot: 10006 — above the LCR (10003) + its row menu (10004),
   below the dirty-form confirm (10010) / beautify review (10012).
   ============================================================= */

#bulkSignModal {
    position: fixed;
    inset: 0;
    z-index: 10006;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

#bulkSignModal .bsw-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
}

.bsw-modal {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--jt-bg-deep);
    border: 1px solid var(--jt-border-muted);
    border-radius: 12px;
    width: min(1100px, 94vw);
    height: min(860px, 90vh);
    overflow: hidden;
    color: var(--jt-text-primary);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
}

/* ── Header (report-family gradient) ─────────────────────────── */
.bsw-header {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 18px;
    background: var(--jt-report-header-bg, linear-gradient(135deg, #1e3a5f, #0f766e));
    color: var(--jt-report-header-text, #fff);
    flex: none;
}
.bsw-title { font-weight: 700; font-size: 15.5px; }
.bsw-context { font-size: 12px; opacity: 0.85; }
.bsw-progress { margin-left: auto; font-size: 12.5px; opacity: 0.92; white-space: nowrap; }
.bsw-close {
    background: rgba(0, 0, 0, 0.18);
    border: 0;
    border-radius: 7px;
    color: inherit;
    font-size: 14px;
    padding: 5px 10px;
    cursor: pointer;
}
.bsw-close:hover { background: rgba(0, 0, 0, 0.35); }

/* ── Defaults fill bar ───────────────────────────────────────── */
.bsw-defaults {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    padding: 9px 18px;
    background: var(--jt-bg-secondary);
    border-bottom: 1px solid var(--jt-border-primary);
    font-size: 12.5px;
    color: var(--jt-text-secondary);
    flex: none;
}
.bsw-defaults-label { font-weight: 700; color: var(--jt-text-primary); }
.bsw-def-item { display: inline-flex; align-items: center; gap: 6px; }
.bsw-def-years { width: 52px; }
.bsw-defaults-hint { font-size: 11px; color: var(--jt-text-muted); }

.bsw-pill {
    background: var(--jt-bg-tertiary);
    border: 1px solid var(--jt-border-secondary);
    border-radius: 6px;
    padding: 3px 9px;
    color: var(--jt-text-secondary);
    font-size: 12px;
    cursor: pointer;
}
.bsw-pill-on { border-color: var(--jt-accent-teal); color: var(--jt-accent-teal); }

/* ── Buttons ─────────────────────────────────────────────────── */
.bsw-btn {
    border: 1px solid var(--jt-border-secondary);
    border-radius: 7px;
    background: var(--jt-bg-tertiary);
    color: var(--jt-text-primary);
    font-size: 12.5px;
    font-weight: 600;
    padding: 6px 12px;
    cursor: pointer;
}
.bsw-btn:hover { filter: brightness(1.12); }
.bsw-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.bsw-btn-primary {
    background: var(--jt-accent-green);
    border-color: transparent;
    color: #04281c;
}
.bsw-btn-stage {
    background: var(--jt-accent-green);
    border-color: transparent;
    color: #04281c;
    padding: 8px 16px;
}
.bsw-link {
    background: none;
    border: 0;
    color: var(--jt-text-muted);
    font-size: 12px;
    cursor: pointer;
    padding: 2px 4px;
}
.bsw-link:hover { color: var(--jt-accent-teal); text-decoration: underline; }

/* ── Groups ──────────────────────────────────────────────────── */
.bsw-groups { flex: 1; overflow-y: auto; }

.bsw-group { border-bottom: 1px solid var(--jt-border-primary); }
.bsw-group-head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 18px;
    background: var(--jt-bg-primary);
    font-size: 13px;
    cursor: pointer;
    position: sticky;
    top: 0;
    z-index: 2;   /* stays above its own scrolling rows for the live cap math */
}
.bsw-caret { color: var(--jt-text-muted); width: 12px; font-size: 11px; }
.bsw-group-name { font-weight: 700; }
.bsw-group-stats { margin-left: auto; font-size: 12px; color: var(--jt-text-secondary); }
.bsw-group-stats b { color: var(--jt-text-primary); }
.bsw-group-done { color: var(--jt-accent-green); font-weight: 700; }
.bsw-cap-over { color: var(--jt-accent-amber); font-weight: 700; }

.bsw-paste-btn {
    background: none;
    border: 1px dashed var(--jt-accent-teal);
    border-radius: 6px;
    color: var(--jt-accent-teal);
    font-size: 11.5px;
    padding: 2px 8px;
    cursor: pointer;
}
.bsw-paste-btn:hover { background: rgba(6, 182, 212, 0.1); }

/* ── Rows (desktop grid) ─────────────────────────────────────── */
.bsw-row {
    display: grid;
    grid-template-columns: minmax(160px, 1.4fr) 92px 84px 64px auto minmax(90px, 1fr) minmax(110px, auto) 46px;
    align-items: center;
    gap: 10px;
    padding: 6px 18px;
    border-top: 1px solid var(--jt-border-muted);
    font-size: 13px;
}
.bsw-row-skipped > * { opacity: 0.42; }
.bsw-row-skipped .bsw-cell-act { opacity: 1; }
.bsw-row-error { background: rgba(239, 68, 68, 0.07); }

.bsw-pname { font-weight: 600; }
.bsw-pmeta { color: var(--jt-text-muted); font-size: 11.5px; margin-left: 4px; }
.bsw-bid {
    font-size: 11px;
    background: rgba(6, 182, 212, 0.12);
    color: var(--jt-accent-teal);
    border-radius: 5px;
    padding: 1px 7px;
    white-space: nowrap;
}
.bsw-cell-label { display: none; }   /* revealed on mobile cards */

.bsw-input {
    background: var(--jt-bg-tertiary);
    border: 1px solid var(--jt-border-secondary);
    border-radius: 6px;
    color: var(--jt-text-primary);
    font-size: 13px;
    padding: 4px 8px;
    width: 100%;
    text-align: right;
}
.bsw-input:focus {
    outline: none;
    border-color: var(--jt-accent-blue);
    box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25);
}
.bsw-row-error .bsw-input { border-color: var(--jt-accent-red); }
.bsw-row-email .bsw-input { border-color: var(--jt-accent-teal); }

.bsw-seg { display: inline-flex; border: 1px solid var(--jt-border-secondary); border-radius: 6px; overflow: hidden; }
.bsw-seg-btn {
    background: none;
    border: 0;
    padding: 4px 9px;
    font-size: 12px;
    color: var(--jt-text-secondary);
    cursor: pointer;
}
.bsw-seg-btn:disabled { cursor: default; }
.bsw-seg-sel { background: var(--jt-accent-blue); color: #fff; }

.bsw-mono { font-family: 'Courier New', monospace; color: var(--jt-accent-green); font-size: 12.5px; }
.bsw-dim { color: var(--jt-text-muted); }

.bsw-st { font-size: 12px; font-weight: 700; white-space: nowrap; }
.bsw-st-ok     { color: var(--jt-accent-green); }
.bsw-st-edit   { color: var(--jt-accent-teal); }
.bsw-st-email  { color: var(--jt-accent-teal); }
.bsw-st-err    { color: var(--jt-accent-red); font-weight: 600; font-size: 11.5px; }
.bsw-st-skip   { color: var(--jt-text-muted); font-weight: 400; }
.bsw-st-queued { color: var(--jt-accent-purple); }

/* ── Paste panel ─────────────────────────────────────────────── */
.bsw-paste {
    padding: 10px 18px 12px;
    background: var(--jt-bg-secondary);
    border-top: 1px dashed var(--jt-accent-teal);
}
.bsw-paste-text {
    width: 100%;
    box-sizing: border-box;
    background: var(--jt-bg-deep);
    border: 1px solid var(--jt-border-secondary);
    border-radius: 8px;
    color: var(--jt-text-primary);
    font-size: 12.5px;
    padding: 8px 10px;
    resize: vertical;
}
.bsw-parsed { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.bsw-prow {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    background: var(--jt-bg-primary);
    border: 1px solid var(--jt-border-primary);
    border-radius: 8px;
    padding: 6px 12px;
    font-size: 12.5px;
}
.bsw-prow-who { font-weight: 700; min-width: 120px; }
.bsw-prow-conf { font-size: 11px; color: var(--jt-text-muted); }
.bsw-conf-hi  { color: var(--jt-accent-green); }
.bsw-conf-med { color: var(--jt-accent-amber); }
.bsw-prow-src {
    flex-basis: 100%;
    padding-left: 25px;
    color: var(--jt-text-muted);
    font-style: italic;
    font-size: 11.5px;
}
.bsw-ck {
    width: 16px;
    height: 16px;
    border-radius: 4px;
    border: 1px solid var(--jt-border-secondary);
    background: var(--jt-bg-tertiary);
    color: transparent;
    font-size: 11px;
    font-weight: 900;
    line-height: 1;
    cursor: pointer;
    flex: none;
    padding: 0;
}
.bsw-ck-on { background: var(--jt-accent-teal); border-color: var(--jt-accent-teal); color: #04283a; }
.bsw-ck-off { cursor: default; }
.bsw-chip {
    background: var(--jt-bg-tertiary);
    border-radius: 5px;
    padding: 1px 8px;
    font-size: 12px;
    color: var(--jt-text-primary);
}
.bsw-chip-def {
    background: transparent;
    border: 1px dashed var(--jt-border-secondary);
    color: var(--jt-text-muted);
}
.bsw-paste-foot { display: flex; align-items: center; gap: 12px; margin-top: 10px; }
.bsw-paste-hint { font-size: 11.5px; color: var(--jt-text-muted); }

/* ── Footer ──────────────────────────────────────────────────── */
.bsw-footer {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 11px 18px;
    background: var(--jt-bg-secondary);
    border-top: 1px solid var(--jt-border-primary);
    font-size: 13px;
    flex: none;
}
.bsw-foot-sum { color: var(--jt-text-secondary); }
.bsw-foot-sum b { color: var(--jt-text-primary); }
.bsw-foot-spacer { flex: 1; }
.bsw-foot-fine {
    font-size: 11.5px;
    color: var(--jt-text-muted);
    max-width: 340px;
    text-align: right;
}

/* ── LCR header entry button (lives in the LCR's DOM) ────────── */
.lcr-btn-bulksign {
    background: var(--jt-accent-amber);
    color: #3b2604;
    border: none;
    white-space: nowrap;
}

/* ── Mobile: same worksheet, card rows (≤720px, decision #8) ──── */
@media (max-width: 720px) {
    .bsw-modal { width: 100vw; height: 100dvh; border-radius: 0; }
    .bsw-header { flex-wrap: wrap; gap: 8px 14px; }
    .bsw-progress { flex-basis: 100%; margin-left: 0; order: 3; }
    .bsw-defaults { gap: 8px; }
    .bsw-defaults-hint { display: none; }
    .bsw-foot-fine { display: none; }

    .bsw-row {
        grid-template-columns: auto auto 1fr auto;
        grid-template-areas:
            "player player player bid"
            "salary years  type   type"
            "prev   prev   state  act";
        gap: 8px 10px;
        padding: 10px 14px;
    }
    .bsw-cell-player { grid-area: player; }
    .bsw-cell-bid    { grid-area: bid; justify-self: end; }
    .bsw-cell-salary { grid-area: salary; }
    .bsw-cell-years  { grid-area: years; }
    .bsw-cell-type   { grid-area: type; }
    .bsw-cell-preview{ grid-area: prev; }
    .bsw-cell-state  { grid-area: state; justify-self: end; }
    .bsw-cell-act    { grid-area: act; justify-self: end; }

    .bsw-cell-label {
        display: block;
        font-size: 10px;
        letter-spacing: 0.05em;
        text-transform: uppercase;
        color: var(--jt-text-muted);
        margin-bottom: 2px;
    }
    .bsw-cell-salary .bsw-input { width: 72px; }
    .bsw-cell-years .bsw-input { width: 56px; }
    .bsw-prow-who { min-width: 0; }
}
