.table-sm td, .table-sm th { vertical-align: middle; }
.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.row-rest { background: #f0f3f8; }
.row-holiday { background: #fff4e5; }
.row-locked input, .row-locked select { pointer-events: none; background: #f8f9fa; }
.att-grid input[type=time] { min-width: 6.5rem; }
.att-grid input.form-control-sm, .att-grid select.form-select-sm { padding: .15rem .4rem; }
.clock { font-size: 2.5rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.table-responsive { -webkit-overflow-scrolling: touch; }
@media print {
  .no-print { display: none !important; }
  body { background: #fff !important; }
}
.progress-bar { min-width: 2rem; }
.progress-w-0 { width: 0%; }
.progress-w-10 { width: 10%; }
.progress-w-20 { width: 20%; }
.progress-w-30 { width: 30%; }
.progress-w-40 { width: 40%; }
.progress-w-50 { width: 50%; }
.progress-w-60 { width: 60%; }
.progress-w-70 { width: 70%; }
.progress-w-80 { width: 80%; }
.progress-w-90 { width: 90%; }
.progress-w-100 { width: 100%; }
.kpi-bar { height: .5rem; }
.notif-unread { background: #eef4fb; }
.step-list { list-style: none; padding-left: 0; margin: 0; }
.step-list li { position: relative; padding: 0 0 1rem 2.6rem; }
.step-list li::before { content: ""; position: absolute; left: .95rem; top: 1.9rem; bottom: 0; width: 2px; background: #dee2e6; }
.step-list li:last-child::before { display: none; }
.step-no { position: absolute; left: 0; top: 0; width: 2rem; height: 2rem; border-radius: 50%; display: flex; align-items: center;
  justify-content: center; font-weight: 600; background: #e9ecef; color: #495057; }
.step-done .step-no { background: var(--green); color: #fff; }
.step-current .step-no { background: var(--lagoon); color: #fff; box-shadow: 0 0 0 .25rem rgba(11,74,143,.22); }
.step-stopped .step-no { background: #dc3545; color: #fff; }
.step-row .form-control, .step-row .form-select { font-size: .875rem; }


/* ---------- CRM ---------- */
.crm-stage-col { min-width: 220px; }
.crm-stage-col .card-body { max-height: 70vh; overflow-y: auto; }
.quote-form .form-label { margin-bottom: .1rem; font-size: .85rem; }
.quote-result td, .quote-result th { font-size: .85rem; }
.quote-total { font-size: 1.4rem; font-weight: 600; }
.hp-field { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.frp-icon { height: 48px; }
.frp-choice label, .frp-usage label { cursor: pointer; }
@media (min-width: 992px) { .frp-sticky { position: sticky; top: 1rem; } }
.quote-public { max-width: 760px; }
