/* Roles preview additions — uses the app's own variables and components. */
body[data-auth="pending"] header.top, body[data-auth="pending"] #main, body[data-auth="pending"] .mbar,
body[data-auth="login"] header.top, body[data-auth="login"] #main, body[data-auth="login"] .mbar, body[data-auth="login"] .print-wrap { display: none !important; }
body[data-auth="pending"] { visibility: visible; }
.login-wrap { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: linear-gradient(160deg, var(--navy-deep, #061a38), var(--navy, #0B2A55) 60%, var(--blue, #1677D2)); }
.login-card { width: min(420px, 100%); text-align: left; }
.login-logo { display: block; margin: 0 auto 8px; height: auto; }
.login-card .sec-h { text-align: center; }
.login-card .lead { text-align: center; }
.login-card .fld { margin-bottom: 12px; }
.login-card input { width: 100%; }
.preview-note { margin-top: 12px; opacity: .8; }
.userbar { display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-left: 8px; font-size: .88rem; }
.userbar .who { color: #fff; opacity: .92; }
.userbar .sync { font-size: .8rem; padding: 2px 8px; border-radius: 999px; background: rgba(255,255,255,.14); color: #fff; }
.userbar .sync[data-st="err"], .userbar .sync[data-st="offline"] { background: #b3261e; }
#roleDash .card { margin-bottom: 16px; }
details.jobdet { border: 1px solid var(--line, #d7dee8); border-radius: 12px; padding: 10px 14px; margin: 10px 0; background: #fff; }
details.jobdet > summary { cursor: pointer; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.badge { display: inline-block; font-size: .75rem; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: #e8eef7; color: var(--navy, #0B2A55); text-transform: uppercase; letter-spacing: .02em; }
.badge.s-paid, .badge.s-done { background: #dff5ec; color: #0b6b4c; }
.badge.s-inprogress, .badge.s-scheduled { background: #e1f0fd; color: #0d5ea8; }
.photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; }
.photo-grid img { width: 100%; height: 110px; object-fit: cover; border-radius: 8px; background: #eef2f7; }
.checklist li { padding: 4px 0; }
.dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; vertical-align: middle; }
input.narrow { max-width: 90px; }
.import-card { border: 2px dashed var(--cyan, #2EC8F5); }
.terms { max-height: 220px; overflow: auto; padding: 8px; background: #f6f8fb; border-radius: 8px; }
.sigpad { width: 100%; height: 160px; border: 1px dashed #9fb0c6; border-radius: 10px; background: #fff; touch-action: none; }

/* H2: signed-estimate lock + void-signature dialog */
.signed-banner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; background: #eef8fd; border: 1px solid #b6def2; border-left: 4px solid var(--cyan, #2EC8F5); border-radius: 10px; padding: 10px 14px; margin: 0 0 16px; }
.signed-banner[hidden] { display: none; }
.signed-banner-h { margin: 0; font-weight: 700; color: var(--navy, #0B2A55); }
.signed-banner .small { margin: 2px 0 0; }
.price-locked, body.est-signed #calc.price-locked, body.est-signed #lineList.price-locked { position: relative; }
.price-locked input:disabled, .price-locked select:disabled, .price-locked textarea:disabled,
body.est-signed #calc input:disabled, body.est-signed #calc select:disabled, body.est-signed #calc textarea:disabled,
body.est-signed #calc button:disabled, [data-lock-price="1"]:disabled {
  background: #eef1f5; color: #4a5566; cursor: not-allowed; opacity: .78;
}
.price-locked button:disabled, #lineList.price-locked .li-act button:disabled { opacity: .55; }
#voidSigDlg { border: 0; border-radius: 14px; padding: 0; width: min(520px, 94vw); box-shadow: 0 16px 48px rgba(6,23,58,.22); }
#voidSigDlg::backdrop { background: rgba(6,23,58,.45); }
#voidSigReason { width: 100%; }
.locked-note { background: #fff8e6; border: 1px dashed #d9a400; border-radius: 8px; padding: 8px 10px; color: #4a3a00; }

.sent-toggle small { display: block; margin-top: 4px; color: var(--muted, #5b6878); }
.turnstile-box { margin: 12px 0; min-height: 24px; }

.signed-rates-note{margin:.4rem 0 0;color:#8a4b08;font-weight:600}
#c_name:disabled,#c_address:disabled,#e_project:disabled{background:#f3f5f8;cursor:not-allowed}

.needs-resign-banner{margin:.6rem 0;padding:.7rem 1rem;border:1px solid #c47b1a;background:#fff6e8;border-radius:10px;color:#6a3d00}
.needs-resign-banner .signed-banner-h{margin:0 0 .25rem;font-weight:800}
.needs-resign-flag,.badge.needs-resign-flag,.badge.assignment-flag{color:#8a4b08;font-weight:700}
.badge.needs-resign-flag,.badge.assignment-flag{display:inline-block;padding:.1rem .45rem;border-radius:999px;background:#ffe8c2;border:1px solid #e0b15a;font-size:.8rem;margin-right:.25rem}

.pricing-banner { background: #fff8e8; border-color: #f0d9a6; border-left-color: #d48806; }
body.est-pricing-locked #calc.price-locked, body.est-pricing-locked #lineList.price-locked, body.est-pricing-locked #invoiceBox.price-locked { position: relative; }
