/* Shared list controls used by Jobs, Quotes, Invoices and the remaining
   operations screens.  The component owns no business data: each screen
   supplies rows, validation and action callbacks. */
.dlp{--dlp-border:#e2e5e9;--dlp-muted:#69707d;display:grid;gap:12px}
.dlp-status{display:flex;gap:4px;overflow:auto;padding:3px;border:1px solid var(--dlp-border);border-radius:12px;background:#fff}
.dlp-status button{border:0;background:transparent;border-radius:9px;padding:9px 12px;white-space:nowrap;font:inherit;font-size:12px;font-weight:750;color:var(--dlp-muted);cursor:pointer}
.dlp-status button[aria-selected=true]{background:#111;color:#fff}
.dlp-status b{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:5px;padding:0 5px;border-radius:999px;background:rgba(100,110,125,.12);font-size:10px}
.dlp-status button[aria-selected=true] b{background:rgba(255,255,255,.18)}
.dlp-tools,.dlp-filters,.dlp-bulk{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dlp-search{flex:1 1 230px;position:relative}
.dlp-search input,.dlp-filters select{width:100%;min-height:42px;border:1px solid var(--dlp-border);border-radius:10px;background:#fff;padding:0 12px;font:inherit;font-size:13px;color:#111}
.dlp-filters select{width:auto;min-width:145px}
.dlp-btn{min-height:42px;border:1px solid var(--dlp-border);border-radius:10px;background:#fff;padding:0 12px;font:inherit;font-size:12px;font-weight:750;cursor:pointer}
.dlp-btn:hover,.dlp-btn:focus-visible{border-color:#111}
.dlp-btn.primary{background:#e91e2b;border-color:#e91e2b;color:#fff}
.dlp-btn.danger{color:#b31320}
.dlp-bulk{justify-content:flex-end;min-height:44px;padding:7px 9px;border-radius:10px;background:#f3f5f7}
.dlp-bulk strong{margin-right:auto;font-size:12px}
.dlp-bulk button:disabled{opacity:.42;cursor:not-allowed}
.dlp-table-wrap{overflow:auto;border:1px solid var(--dlp-border);border-radius:12px;background:#fff}
.dlp-table{width:100%;border-collapse:collapse;min-width:680px}
.dlp-table th,.dlp-table td{text-align:left;padding:12px;border-bottom:1px solid var(--dlp-border);font-size:12.5px;vertical-align:middle}
.dlp-table th{background:#f8f9fa;color:#4e5561;font-size:11px;text-transform:uppercase;letter-spacing:.035em}
.dlp-table tr:last-child td{border-bottom:0}
.dlp-sort{border:0;background:transparent;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}
.dlp-sort[aria-sort=ascending]::after{content:"  ↑"}
.dlp-sort[aria-sort=descending]::after{content:"  ↓"}
.dlp-check{width:17px;height:17px;accent-color:#111}
.dlp-empty{text-align:center;padding:44px 18px;color:var(--dlp-muted)}
.dlp-empty b{display:block;margin-bottom:5px;color:#111;font-size:16px}
.dlp-menu{position:relative}
.dlp-pop{position:absolute;z-index:70;right:0;top:calc(100% + 6px);width:230px;padding:7px;border:1px solid var(--dlp-border);border-radius:11px;background:#fff;box-shadow:0 14px 40px rgba(0,0,0,.14)}
.dlp-pop[hidden]{display:none}
.dlp-pop button{display:block;width:100%;border:0;border-radius:7px;background:transparent;padding:9px;text-align:left;font:inherit;font-size:12.5px;cursor:pointer}
.dlp-pop button:hover{background:#f3f5f7}
.dlp-cols label{display:grid;grid-template-columns:auto 1fr 62px;gap:8px;align-items:center;padding:7px;font-size:12px}
.dlp-cols input[type=number]{width:62px;border:1px solid var(--dlp-border);border-radius:6px;padding:5px}
.dlp-fab{position:fixed;z-index:60;right:24px;bottom:24px}
.dlp-fab>button{width:56px;height:56px;border:0;border-radius:50%;background:#111;color:#fff;font-size:28px;line-height:1;box-shadow:0 9px 25px rgba(0,0,0,.25);cursor:pointer}
.dlp-fab .dlp-pop{bottom:66px;top:auto;width:210px}
.dlp-dialog{position:fixed;z-index:120;inset:0;display:grid;place-items:center;padding:18px;background:rgba(10,12,15,.58)}
.dlp-dialog[hidden]{display:none}
.dlp-dialog-card{width:min(760px,100%);max-height:85vh;overflow:auto;border-radius:16px;background:#fff;box-shadow:0 24px 80px rgba(0,0,0,.3)}
.dlp-dialog-head,.dlp-dialog-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px;border-bottom:1px solid var(--dlp-border)}
.dlp-dialog-foot{justify-content:flex-end;border-top:1px solid var(--dlp-border);border-bottom:0}
.dlp-dialog-body{padding:16px}
.dlp-errors{color:#b31320;font-size:12px}
.nav-tree{margin-bottom:4px}
.nav-tree>summary{list-style:none;cursor:pointer}
.nav-tree>summary::-webkit-details-marker{display:none}
.nav-tree>summary::after{content:"›";margin-left:auto;transition:transform .15s}
.nav-tree[open]>summary::after{transform:rotate(90deg)}
/* The 38px used to hit every .nav-link inside the tree, INCLUDING the parent
   summary itself, so Enquiries sat indented from its own siblings and its
   children sat a full gutter right of everything — the owner read the whole
   sidebar as misaligned. Parents line up flush with ordinary tabs; only the
   CHILDREN step in, and only a little. */
.nav-tree>summary.nav-link{padding-left:12px}
.nav-tree>.nav-link,.nav-tree>.nav-with-action .nav-link{padding-left:30px}
@media(max-width:720px){
  .dlp-filters{display:grid;grid-template-columns:1fr 1fr}
  .dlp-search{grid-column:1/-1}
  .dlp-filters select{width:100%;min-width:0}
  .dlp-fab{right:18px;bottom:88px}
  .dlp-bulk{justify-content:flex-start}
  .dlp-bulk strong{width:100%}
}
@media(prefers-reduced-motion:reduce){.nav-tree>summary::after{transition:none}}
