/* source block 200: anonymous-style-200; v2.19.18 line 36058 */

/* LOCAL v2.10.3 — Quick Add group row + exact Change Address match */
.quick-products-left-head{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
  flex-wrap:nowrap!important;
}
.quick-products-left-head>div{flex:0 0 auto!important;}
.quick-product-search{
  flex:1 1 auto!important;
  width:auto!important;
  min-width:180px!important;
  max-width:none!important;
}
.quick-group-strip{
  display:flex!important;
  align-items:center!important;
  flex-wrap:wrap!important;
  gap:6px!important;
  width:100%!important;
  overflow:visible!important;
  white-space:normal!important;
  padding:7px 8px!important;
  scrollbar-width:none!important;
}
.quick-group-strip::-webkit-scrollbar{display:none!important;}
.quick-group-chip{
  flex:0 0 auto!important;
  min-height:30px!important;
  white-space:nowrap!important;
}
.console-change-address-btn,
.console-change-address-btn.active{
  min-height:36px!important;
  height:36px!important;
  padding:8px 14px!important;
  border:2px solid #b91c1c!important;
  border-radius:7px!important;
  background:#dc2626!important;
  color:#fff!important;
  font-size:.88rem!important;
  font-weight:900!important;
  line-height:1!important;
  box-shadow:none!important;
}
.console-change-address-btn.active:hover{background:#b91c1c!important;color:#fff!important;}
.console-change-address-btn:disabled{
  background:#6b7280!important;
  border-color:#4b5563!important;
  color:#e5e7eb!important;
  opacity:.55!important;
}

/* source block 201: local-v2-10-9-compact-products-clean-edges; v2.19.18 line 36114 */

/* LOCAL v2.10.9 — compact Quick Add product rows + clean state edges */
/* State colour belongs to the control itself, never a stray parent rail. */
#customerPickerDialog.job-history-mode #consoleAddressField,
#customerPickerDialog.job-history-mode #consoleProductsField,
#customerPickerDialog.job-history-mode #consoleDateField,
#customerPickerDialog.job-history-mode #consoleTimeField,
#customerPickerDialog.job-history-mode #consoleDriverField,
#customerPickerDialog.job-history-mode #consoleTruckField,
#customerPickerDialog.job-history-mode .console-notes-field,
#customerPickerDialog.job-history-mode .console-office-notes-field,
#customerPickerDialog.job-history-mode .console-driver-notes-field{
  box-shadow:none!important;
  border-left:0!important;
  background:#fff!important;
}
#customerPickerDialog.job-history-mode #consoleAddressField.console-state-required,
#customerPickerDialog.job-history-mode #consoleAddressField.console-state-optional,
#customerPickerDialog.job-history-mode #consoleAddressField.console-state-complete,
#customerPickerDialog.job-history-mode #consoleProductsField.console-state-required,
#customerPickerDialog.job-history-mode #consoleProductsField.console-state-optional,
#customerPickerDialog.job-history-mode #consoleProductsField.console-state-complete{
  box-shadow:none!important;
  border-left:0!important;
  background:#fff!important;
}
/* Remove the tiny coloured rail that could appear between dark section headers. */
#customerPickerDialog.job-history-mode .console-address-section::before,
#customerPickerDialog.job-history-mode .console-products-section::before,
#customerPickerDialog.job-history-mode .console-notes-field::before{
  content:none!important;display:none!important;
}
/* Compact, scan-friendly product list. Every row uses the same geometry. */
#customerPickerDialog.job-history-mode .quick-product-list{
  gap:3px!important;padding:4px 6px!important;
}
#customerPickerDialog.job-history-mode .quick-product-row{
  grid-template-columns:minmax(0,1fr) 82px 58px!important;
  min-height:39px!important;height:39px!important;
  padding:3px 6px!important;gap:6px!important;
}
#customerPickerDialog.job-history-mode .quick-product-copy{
  display:grid!important;grid-template-rows:18px 13px!important;align-content:center!important;min-width:0!important;
}
#customerPickerDialog.job-history-mode .quick-product-copy strong{
  display:block!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;
  font-size:.76rem!important;font-weight:650!important;line-height:18px!important;margin:0!important;
}
#customerPickerDialog.job-history-mode .quick-product-copy small{
  display:block!important;height:13px!important;line-height:13px!important;margin:0!important;
  font-size:.64rem!important;font-weight:600!important;color:#64748b!important;white-space:nowrap!important;
}
#customerPickerDialog.job-history-mode .quick-product-price{
  font-size:.66rem!important;font-weight:700!important;white-space:nowrap!important;
}
#customerPickerDialog.job-history-mode .quick-product-add{
  min-height:28px!important;height:28px!important;font-size:.67rem!important;
}
/* Notes keep their meaningful header colours but no coloured side rails. */
#customerPickerDialog.job-history-mode .console-driver-notes-field>label{background:#111827!important;color:#fff!important;}
#customerPickerDialog.job-history-mode .console-office-notes-field>label{background:#7f1d1d!important;color:#fff!important;}

/* LOCAL v2.12.5 — Planner scroll mask + compact-view status cleanup */
/* Freeze the Day time gutter as an opaque mask above scrolling jobs/notes. */
.day-view > .timeline-labels{
  position:sticky!important;
  left:0!important;
  z-index:144!important;
  background:#fbfcfd!important;
  border-right:1px solid var(--line)!important;
  box-shadow:3px 0 6px rgba(15,23,42,.10)!important;
  isolation:isolate!important;
}
.day-view > .timeline-labels .time-label{
  background:#fbfcfd!important;
}
/* Keep frozen corner/header above the frozen time gutter. */
.day-view > .day-corner{z-index:146!important;}
.day-view > .day-driver-head{z-index:145!important;}


/* source block 202: anonymous-style-202; v2.19.18 line 36197 */

/* LOCAL v2.12.6 — customer picker stable search/results layout
   Keep the normal Select Customer picker content-sized. The full-screen
   workspace remains reserved for .job-history-mode after a customer is selected. */
#customerPickerDialog:not(.job-history-mode){
  height:auto!important;
  max-height:calc(100vh - 28px)!important;
}
#customerPickerDialog:not(.job-history-mode)>form{
  height:auto!important;
  max-height:calc(100vh - 28px)!important;
  min-height:0!important;
  overflow:hidden!important;
}
#customerPickerDialog:not(.job-history-mode) .customer-picker-toolbar,
#customerPickerDialog:not(.job-history-mode) .dialog-head,
#customerPickerDialog:not(.job-history-mode) .customer-picker-columns{
  flex:0 0 auto!important;
}
#customerPickerDialog:not(.job-history-mode) .customer-picker-columns{
  min-height:0!important;
}
#customerPickerDialog:not(.job-history-mode) #customerPickerResults{
  flex:0 1 auto!important;
  min-height:0!important;
  height:auto!important;
  max-height:min(460px, calc(100vh - 330px))!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  align-content:start!important;
}
#customerPickerDialog:not(.job-history-mode) #customerPickerResults .customer-picker-row{
  min-height:58px!important;
}

/* LOCAL v2.12.7 — Day Planner compact card cleanup restored */
.time-entry>.planner-job-content{right:9px!important;padding-bottom:8px!important}
.time-entry>.job-resize-handle{left:0!important;right:0!important;bottom:0!important;height:9px!important;background:transparent!important;opacity:1!important}
.time-entry>.job-resize-handle::after{width:30px!important;height:3px!important;margin:4px auto 0!important;opacity:0!important;transition:opacity .12s ease!important}
.time-entry:hover>.job-resize-handle::after,.time-entry>.job-resize-handle:hover::after{opacity:.55!important}


/* LOCAL v2.12.8 — hide note resize grip until hover */
.planner-note>.note-resize-handle::after,
.planner-note>.job-resize-handle::after{
  opacity:0!important;
  transition:opacity .12s ease!important;
}
.planner-note:hover>.note-resize-handle::after,
.planner-note>.note-resize-handle:hover::after,
.planner-note:hover>.job-resize-handle::after,
.planner-note>.job-resize-handle:hover::after{
  opacity:.55!important;
}


/* LOCAL v2.13.0 — Day Planner density trial: more hours + 3 drivers, typography unchanged */
.day-column{min-width:390px!important;}
.day-view>.day-driver-head{min-width:390px!important;}
/* v2.13.2 density target: ~8 visible hours with 3 practical driver columns. */
.time-entry.planner-ticket-v2{min-height:56px!important;}



/* LOCAL v2.13.2 — 8-hour Day view + clearer compact addresses */
.day-column{min-width:390px!important;}
.day-view>.day-driver-head{min-width:390px!important;}
.time-entry.planner-ticket-v2{min-height:56px!important;}
/* Compact 1h cards: smaller chrome, not smaller information. */
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-head{
  height:23px!important;
  gap:4px!important;
  padding-left:7px!important;
}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-status{
  height:23px!important;
  min-width:76px!important;
  padding:0 6px!important;
}
.time-entry.planner-ticket-v2.compact-1h>.planner-ticket-body{
  top:23px!important;
  padding:2px 8px 2px!important;
  gap:0!important;
}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-company{
  font-size:.66rem!important;
  line-height:1.02!important;
}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-address{
  font-size:.61rem!important;
  font-weight:800!important;
  line-height:1.02!important;
  color:#26364c!important;
  margin-top:1px!important;
}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-products{
  margin-top:1px!important;
  padding-top:1px!important;
  gap:0!important;
}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-product{
  font-size:.55rem!important;
  line-height:1.0!important;
}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-more{display:none!important;}



/* LOCAL v2.13.3 — Compact modern Planner chrome + wider working grid */
body:has(#calendarSection.active) .topbar{
  height:70px!important;
  padding:0 18px!important;
}
body:has(#calendarSection.active) main{
  padding:10px 12px 18px!important;
}
#calendarSection{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
}
#calendarSection .calendar-toolbar{
  display:grid!important;
  grid-template-columns:auto auto minmax(220px,1fr) auto auto!important;
  align-items:center!important;
  column-gap:12px!important;
  row-gap:0!important;
  padding:8px 10px!important;
  margin:0 0 8px!important;
  min-height:58px!important;
  border-radius:10px!important;
}
#calendarSection .view-tabs{
  grid-column:1!important;
  padding:2px!important;
  border-radius:8px!important;
}
#calendarSection .view-tab{
  padding:6px 10px!important;
  min-height:32px!important;
}
#calendarSection .date-controls{
  grid-column:2 / 4!important;
  justify-content:flex-start!important;
  gap:10px!important;
}
#calendarSection .date-nav{gap:5px!important}
#calendarSection .date-nav button{
  min-height:32px!important;
  height:32px!important;
  padding:4px 10px!important;
}
#calendarSection .date-controls h3{
  min-width:0!important;
  width:auto!important;
  text-align:left!important;
  font-size:1rem!important;
  white-space:nowrap!important;
}
#calendarSection .calendar-help{
  grid-column:5!important;
  justify-self:end!important;
  white-space:nowrap!important;
  font-size:.72rem!important;
}
#calendarSection .notes-toolbar-action{
  grid-column:4!important;
  grid-row:1!important;
  display:flex!important;
  align-items:center!important;
  gap:6px!important;
}
#calendarSection .notes-toolbar-action #addPlannerJobBtn{
  min-height:34px!important;
  height:34px!important;
  padding:5px 12px!important;
  font-size:.78rem!important;
}
#calendarSection .planner-pinned-notes{
  grid-column:4!important;
  grid-row:1!important;
  justify-self:start!important;
  transform:translateX(108px)!important;
  min-height:34px!important;
  max-width:300px!important;
  overflow:hidden!important;
}
#calendarSection .planner-pinned-notes .staff-note-strip{
  flex-wrap:nowrap!important;
  overflow:hidden!important;
}
#calendarSection .planner-pinned-notes .staff-note-list{
  flex-wrap:nowrap!important;
  overflow:hidden!important;
}
#calendarSection .calendar-wrap{
  margin:0!important;
  width:100%!important;
  border-radius:8px!important;
  max-height:calc(100vh - 154px)!important;
  min-height:calc(100vh - 154px)!important;
}
#calendarSection .day-view{
  width:100%!important;
  min-width:1180px!important;
}
#calendarSection .day-corner,#calendarSection .day-driver-head{
  min-height:54px!important;
  padding:8px 8px!important;
}
@media (min-width:1200px){
  body:has(#calendarSection.active) .app-shell{
    width:calc(100vw - var(--sidebar))!important;
    max-width:none!important;
  }
}



/* LOCAL v2.13.5 — full-hour readable job tickets */
.time-entry.planner-ticket-v2{
  min-height:54px!important;
  border:1px solid #aeb8c5!important;
  border-left:1px solid #aeb8c5!important;
  border-radius:4px!important;
  box-shadow:0 1px 4px rgba(15,23,42,.12)!important;
  background:var(--note-bg,#fff)!important;
}
.time-entry.planner-ticket-v2.dynamic-colour-card{
  border-left:1px solid #aeb8c5!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-head,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-head{
  height:19px!important;
  min-height:19px!important;
  border-radius:3px 3px 0 0!important;
  padding-left:6px!important;
  gap:4px!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-job,
.time-entry.planner-ticket-v2 .planner-ticket-time{
  font-size:.57rem!important;
  line-height:1!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-payment{
  font-size:.50rem!important;
  padding:2px 5px!important;
  border-radius:4px!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-status,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-status{
  height:19px!important;
  min-width:70px!important;
  padding:0 5px!important;
  font-size:.50rem!important;
}
.time-entry.planner-ticket-v2>.planner-ticket-body,
.time-entry.planner-ticket-v2.compact-1h>.planner-ticket-body{
  top:19px!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  padding:2px 7px 2px!important;
  gap:0!important;
  background:var(--note-bg,#fff)!important;
  color:var(--ticket-fg,#101827)!important;
  justify-content:flex-start!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-company,
.time-entry.planner-ticket-v2 .planner-ticket-address,
.time-entry.planner-ticket-v2 .planner-ticket-product,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-company,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-address,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-product{
  font-size:.60rem!important;
  line-height:1.02!important;
  color:var(--ticket-fg,#101827)!important;
  min-height:10px!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-company,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-company{
  font-weight:900!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-address,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-address{
  font-weight:750!important;
  margin-top:0!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-products,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-products{
  margin-top:0!important;
  padding-top:0!important;
  border-top:0!important;
  gap:0!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-product strong,
.time-entry.planner-ticket-v2 .planner-ticket-product span{
  color:var(--ticket-fg,#101827)!important;
}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-products .planner-ticket-product:not(:first-child){display:none!important;}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-more{display:none!important;}



/* LOCAL v2.13.6 — BRUTAL compact square one-hour tickets */
.time-entry.planner-ticket-v2,
.time-entry.planner-ticket-v2.dynamic-colour-card{
  border-radius:0!important;
  border:1px solid #aeb8c5!important;
  border-left:1px solid #aeb8c5!important;
  box-shadow:0 1px 2px rgba(15,23,42,.10)!important;
  background:var(--note-bg,#fff)!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-head,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-head{
  height:16px!important;
  min-height:16px!important;
  padding:0 0 0 6px!important;
  border-radius:0!important;
  gap:4px!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-job,
.time-entry.planner-ticket-v2 .planner-ticket-time{
  font-size:.56rem!important;
  line-height:16px!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-payment{
  font-size:.49rem!important;
  line-height:1!important;
  padding:2px 5px!important;
  border-radius:3px!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-status,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-status{
  height:16px!important;
  min-width:68px!important;
  padding:0 5px!important;
  font-size:.49rem!important;
  line-height:16px!important;
  border-radius:0!important;
}
.time-entry.planner-ticket-v2>.planner-ticket-body,
.time-entry.planner-ticket-v2.compact-1h>.planner-ticket-body{
  top:16px!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  padding:2px 7px 1px!important;
  gap:0!important;
  background:var(--note-bg,#fff)!important;
  color:var(--ticket-fg,#101827)!important;
  justify-content:flex-start!important;
}
/* Deliberately force customer, address and product onto ONE typography scale. */
.time-entry.planner-ticket-v2 .planner-ticket-company,
.time-entry.planner-ticket-v2 .planner-ticket-address,
.time-entry.planner-ticket-v2 .planner-ticket-product,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-company,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-address,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-product{
  font-size:.61rem!important;
  line-height:.98!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  color:var(--ticket-fg,#101827)!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-company,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-company{font-weight:900!important;}
.time-entry.planner-ticket-v2 .planner-ticket-address,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-address{font-weight:800!important;}
.time-entry.planner-ticket-v2 .planner-ticket-products,
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-products{
  margin:0!important;
  padding:0!important;
  border:0!important;
  gap:0!important;
  line-height:.98!important;
}
.time-entry.planner-ticket-v2 .planner-ticket-product strong,
.time-entry.planner-ticket-v2 .planner-ticket-product span{
  font-size:inherit!important;
  line-height:inherit!important;
  color:inherit!important;
}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-products .planner-ticket-product:not(:first-child){display:none!important;}
.time-entry.planner-ticket-v2.compact-1h .planner-ticket-more{display:none!important;}
/* Keep a one-hour job visually inside its hour lane with a tiny breathing gap. */
.time-entry.planner-ticket-v2.compact-1h{min-height:0!important;max-height:66px!important;}
.time-entry.planner-ticket-v2>.job-resize-handle{border-radius:0!important;}

/* LOCAL v2.13.7 — ticket body render/colour bug fix ONLY */
.time-entry.planner-ticket-v2{
  background:var(--note-bg,#eef2f7)!important;
}
.time-entry.planner-ticket-v2>.planner-ticket-body,
.time-entry.planner-ticket-v2.compact-1h>.planner-ticket-body{
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  z-index:10!important;
  background:var(--note-bg,#eef2f7)!important;
  color:var(--ticket-fg,#101827)!important;
}
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-company,
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-address,
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-products,
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-product{
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
}
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-company,
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-address{display:block!important;}
.time-entry.planner-ticket-v2>.planner-ticket-body *{visibility:visible!important;opacity:1!important;}
.time-entry.planner-ticket-v2 .planner-ticket-head{z-index:30!important;}


/* LOCAL v2.13.8 — planner lane alignment + hard ticket body containment */
/* --hour-height is 68px. JS now uses the same 68px value, so a 1-hour job
   starts/ends on the same grid lines as the visible planner hour. */
.time-entry.planner-ticket-v2{
  min-height:0!important;
}
.time-entry.planner-ticket-v2.compact-1h{
  height:66px;
  min-height:66px!important;
  max-height:66px!important;
}
/* Keep the ticket body physically inside the job card even when the header
   contains interactive actions such as PDF. */
.time-entry.planner-ticket-v2>.planner-ticket-body{
  box-sizing:border-box!important;
  pointer-events:none;
}
.time-entry.planner-ticket-v2>.planner-ticket-head{
  box-sizing:border-box!important;
}
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-company,
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-address,
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-product,
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-product strong,
.time-entry.planner-ticket-v2>.planner-ticket-body .planner-ticket-product span{
  position:static!important;
  transform:none!important;
  clip:auto!important;
  clip-path:none!important;
}


/* LOCAL v2.13.9 — definitive planner ticket colour/body fix */
.time-entry.planner-ticket-v2 > .planner-ticket-body,
.time-entry.planner-ticket-v2.compact-1h > .planner-ticket-body{
  background:var(--note-bg,#eef2f7)!important;
  color:var(--ticket-fg,#101827)!important;
}
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-ticket-company,
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-ticket-address,
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-ticket-product,
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-ticket-product strong,
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-ticket-product span{
  color:var(--ticket-fg,#101827)!important;
}


/* LOCAL v2.13.10 — planner typography polish ONLY
   Keep the same information density and card geometry; reduce the over-heavy
   body weights and open the line spacing slightly for a cleaner small-text render. */
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-ticket-company,
.time-entry.planner-ticket-v2.compact-1h > .planner-ticket-body .planner-ticket-company{
  font-weight:800!important;
  line-height:1.10!important;
}
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-ticket-address,
.time-entry.planner-ticket-v2.compact-1h > .planner-ticket-body .planner-ticket-address{
  font-weight:600!important;
  line-height:1.10!important;
}
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-ticket-product,
.time-entry.planner-ticket-v2.compact-1h > .planner-ticket-body .planner-ticket-product{
  line-height:1.10!important;
}
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-product-qty{
  font-weight:750!important;
  line-height:1.10!important;
}
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-product-unit,
.time-entry.planner-ticket-v2 > .planner-ticket-body .planner-product-description{
  font-weight:600!important;
  line-height:1.10!important;
}


/* LOCAL v2.13.11 — final Day View snags ONLY
   1) Pink is already the visual NEW-job indicator, so remove the old pseudo-label
      that was being painted on top of the normal JOB # / time header text.
   2) Remove redundant Planner drag-helper copy; actions remain unchanged. */
.time-entry.new-job-pink::after{
  content:none!important;
  display:none!important;
}
#calendarSection .calendar-help{
  display:none!important;
}

/* source block 203: local-v2-13-14-planner-actions-tight-left; v2.19.18 line 36703 */

/* LOCAL v2.13.14 — keep Planner actions immediately after the date.
   Preserve v2.13.12 containment and v2.13.13 scrolling behaviour. */
#calendarSection .calendar-toolbar{
  display:grid!important;
  grid-template-columns:auto auto auto auto minmax(0,1fr)!important;
  align-items:center!important;
  justify-content:start!important;
  column-gap:12px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
}
#calendarSection .view-tabs{
  grid-column:1!important;
}
#calendarSection .date-controls{
  grid-column:2!important;
  flex:0 0 auto!important;
  width:auto!important;
  min-width:max-content!important;
  overflow:visible!important;
}
#calendarSection .notes-toolbar-action{
  grid-column:3!important;
  grid-row:1!important;
  margin-left:6px!important;
  justify-self:start!important;
  width:auto!important;
  min-width:max-content!important;
}
#calendarSection .planner-pinned-notes{
  grid-column:4!important;
  grid-row:1!important;
  margin-left:0!important;
  transform:none!important;
  justify-self:start!important;
  width:auto!important;
  max-width:180px!important;
}
#calendarSection .calendar-help{display:none!important;}
@media(max-width:1180px){
  #calendarSection .calendar-toolbar{column-gap:8px!important;}
  #calendarSection .notes-toolbar-action{margin-left:2px!important;}
  #calendarSection .planner-pinned-notes{max-width:130px!important;}
}

/* source block 204: local-master-v2-13-30-header-order-fix; v2.19.18 line 36753 */

/* LOCAL v2.13.31 COMPACT UI REVIEW — NOT MASTER — keep planner header CSS as CSS, never visible page text.
   Also activates the intended STATUS | PAYMENT | TIME | PDF ordering/left alignment. */
.planner-ticket-head .planner-ticket-status{order:0!important;align-self:stretch!important;margin-left:-8px!important;}
.planner-ticket-head .planner-ticket-payment{order:1!important;}
.planner-ticket-head .planner-ticket-time{order:2!important;}
.planner-ticket-head .planner-ticket-spacer{order:3!important;}
.planner-ticket-head .planner-ticket-pdf{order:4!important;}

/* source block 205: local-v2-13-67-planner-quarter-grid-edge-to-edge; v2.19.18 line 36764 */

/* LOCAL v2.13.67 — 15-minute planner grid + near edge-to-edge job/note cards. */
#calendarSection .day-column{
  background:
    repeating-linear-gradient(to bottom,
      transparent 0,
      transparent calc(var(--hour-height) - 1px),
      var(--line) calc(var(--hour-height) - 1px),
      var(--line) var(--hour-height)),
    repeating-linear-gradient(to bottom,
      transparent 0,
      transparent calc(var(--hour-height) / 4 - 1px),
      #eef1f4 calc(var(--hour-height) / 4 - 1px),
      #eef1f4 calc(var(--hour-height) / 4));
}
#calendarSection .day-column > .time-entry,
#calendarSection .day-column > .planner-note{
  left:1px!important;
  right:1px!important;
  border-radius:0!important;
}

/* source block 206: local-v2-13-68-wide-driver-lanes-overlap-wrap; v2.19.18 line 36787 */

/* LOCAL v2.13.68 — wider Day View driver lanes + 2-line customer/address on overlapping tickets. */
#calendarSection .day-view{
  min-width:max-content!important;
}
/* When jobs share the same time range, let the two most important location/identity lines wrap
   instead of disappearing behind ellipsis. */
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) > .planner-ticket-head{
  min-height:28px!important;
  height:auto!important;
  align-items:flex-start!important;
  padding-top:2px!important;
  padding-bottom:2px!important;
}
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) .planner-ticket-customer-head{
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:clip!important;
  display:-webkit-box!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:2!important;
  line-clamp:2!important;
  line-height:1.02!important;
  max-height:2.08em!important;
}
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) .planner-ticket-address{
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:clip!important;
  display:-webkit-box!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:2!important;
  line-clamp:2!important;
  line-height:1.02!important;
  max-height:2.08em!important;
}

/* source block 207: local-v2-13-80-soft-pink-new-ticket; v2.19.18 line 36828 */

/* Visual-only NEW job confirmation. Keep the saved Job Card Style intact once
   the temporary new-job-pink state is removed. */
.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-head,
.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-foot{
  background:#f7c6d9!important;
  color:#3f2430!important;
}
.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-head *,
.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-foot *{
  color:inherit;
}
/* Keep operational status/payment controls readable inside the soft footer. */
.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-foot .planner-ticket-status,
.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-foot .planner-ticket-payment,
.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-foot .planner-ticket-method,
.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-foot .planner-ticket-pdf{
  color:initial;
}

/* source block 208: local-v2-13-81-new-ticket-marker; v2.19.18 line 36850 */

.time-entry.planner-ticket-v2.new-job-pink > .planner-ticket-head::before{
  content:"★ NEW ★";
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  padding:1px 6px;
  border-radius:999px;
  background:#fff0f6;
  color:#8a244f!important;
  border:1px solid rgba(138,36,79,.22);
  font:800 11px/1 Arial,sans-serif;
  letter-spacing:.02em;
  white-space:nowrap;
}

/* source block 209: local-v2-13-87-required-select-and-narrow-card-flow; v2.19.18 line 36868 */

/* LOCAL v2.13.87 — clear Required Data selector states + authoritative narrow-card geometry. */
.quick-required-input.quick-required-pending{
  background:#e8f2ff!important;
  border-color:#6f9fd0!important;
  color:#173b63!important;
  font-weight:850!important;
}
.quick-required-input.quick-required-selected{
  background:#e8f7ec!important;
  border-color:#69b67b!important;
  color:#176b35!important;
  font-weight:900!important;
}
.quick-required-input.quick-required-negative{
  background:#f8fafc!important;
  border-color:#cbd5e1!important;
  color:#475569!important;
  font-weight:750!important;
}

/* Narrow / overlapping tickets: the previous rule allowed a two-line customer header
   but left the body at top:18px, so the header physically covered the address.
   Reserve a fixed two-line header zone and start the body below it. */
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) > .planner-ticket-head{
  height:36px!important;
  min-height:36px!important;
  max-height:36px!important;
  box-sizing:border-box!important;
  padding:3px 6px!important;
  align-items:flex-start!important;
  overflow:hidden!important;
}
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) > .planner-ticket-head .planner-ticket-time{
  line-height:1.05!important;
  padding-top:1px!important;
}
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) > .planner-ticket-head .planner-ticket-customer-head{
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:clip!important;
  display:-webkit-box!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:2!important;
  line-clamp:2!important;
  line-height:1.05!important;
  max-height:2.1em!important;
}
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) > .planner-ticket-body{
  top:36px!important;
  bottom:18px!important;
  padding-top:3px!important;
}
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) .planner-ticket-address{
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:clip!important;
  display:-webkit-box!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:2!important;
  line-clamp:2!important;
  line-height:1.05!important;
  max-height:2.1em!important;
  flex:0 0 auto!important;
}
/* Keep body priority readable when width is tight: address first, then product, then meta. */
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) .planner-ticket-products{
  flex:0 1 auto!important;
  min-height:0!important;
  overflow:hidden!important;
}
#calendarSection .time-entry.planner-ticket-v2[data-overlap-count]:not([data-overlap-count="1"]) .planner-ticket-meta{
  flex:0 0 auto!important;
}

/* source block 210: anonymous-style-210; v2.19.18 line 36945 */

/* v2.13.93 — Full Edit product rows: compact single-line layout.
   Keep Product, Qty, Unit, pricing, Extras and Remove on the same grid row. */
#jobDialog #jobLines .job-line{
  display:grid!important;
  grid-template-columns:
    minmax(235px,1.55fr)
    minmax(66px,.48fr)
    minmax(82px,.55fr)
    minmax(125px,.78fr)
    minmax(102px,.66fr)
    minmax(78px,.48fr)
    minmax(110px,.70fr)
    max-content
    34px!important;
  grid-auto-flow:row!important;
  column-gap:7px!important;
  row-gap:3px!important;
  align-items:end!important;
  min-height:0!important;
  padding:7px 8px!important;
}
#jobDialog #jobLines .job-line-product{
  align-self:center!important;
  min-width:0!important;
  padding:0!important;
  margin:0!important;
}
#jobDialog #jobLines .job-line-product strong{
  display:block!important;
  margin:0!important;
  line-height:1.12!important;
}
#jobDialog #jobLines .job-line-product small{
  display:block!important;
  margin:3px 0 0!important;
  line-height:1.1!important;
}
#jobDialog #jobLines .job-line label{
  margin:0!important;
  align-self:end!important;
}
#jobDialog #jobLines .job-line-extras-btn{
  align-self:end!important;
  min-height:30px!important;
  height:30px!important;
  padding:3px 9px!important;
  border-radius:7px!important;
  line-height:1!important;
}
#jobDialog #jobLines .remove-line{
  align-self:end!important;
  justify-self:end!important;
  margin:0!important;
}
#jobDialog #jobLines .job-required-reference{
  min-height:30px!important;
  margin:0 8px 3px 22px!important;
  padding:4px 8px!important;
}
@media(max-width:1100px){
  #jobDialog #jobLines .job-line{
    grid-template-columns:minmax(210px,1.4fr) 72px 86px minmax(112px,.8fr) 96px 76px 102px max-content 32px!important;
  }
}

/* source block 211: local-v2-13-94-clean-job-footer; v2.19.18 line 37011 */

/* LOCAL v2.13.94 — clean fixed Edit Job footer: Invoice PDF | Cancel | Save Job */
#jobDialog #deleteJobBtn,
#jobDialog #jobDirectionsBtn{
  display:none!important;
}
#jobDialog .dialog-actions{
  position:sticky!important;
  bottom:0!important;
  z-index:500!important;
  display:flex!important;
  flex-wrap:nowrap!important;
  align-items:center!important;
  gap:10px!important;
  min-height:58px!important;
  margin:8px -12px 0!important;
  padding:9px 14px calc(9px + env(safe-area-inset-bottom))!important;
  background:rgba(255,255,255,.98)!important;
  border-top:1px solid #d6dee8!important;
  box-shadow:0 -6px 18px rgba(15,23,42,.10)!important;
  backdrop-filter:blur(8px)!important;
}
#jobDialog .dialog-actions .spacer{
  display:block!important;
  flex:1 1 auto!important;
}
#jobDialog .dialog-actions button{
  flex:0 0 auto!important;
  min-height:40px!important;
  padding:8px 16px!important;
  border-radius:8px!important;
  font-weight:900!important;
  white-space:nowrap!important;
}
#jobDialog #jobInvoiceBtn{
  order:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  min-width:150px!important;
  background:#e8f2ff!important;
  border:1px solid #8bb8ef!important;
  color:#174a7e!important;
  box-shadow:0 1px 2px rgba(23,74,126,.08)!important;
}
#jobDialog #jobInvoiceBtn:not(:disabled):hover{
  background:#d9ebff!important;
  border-color:#5f9fe8!important;
  color:#123f6e!important;
}
#jobDialog #jobInvoiceBtn:disabled{
  background:#f1f4f7!important;
  border-color:#d8dee7!important;
  color:#9aa5b1!important;
  opacity:1!important;
}
#jobDialog .dialog-actions .dialog-cancel{
  background:#fff!important;
  border:1px solid #cbd5e1!important;
  color:#334155!important;
}
#jobDialog #saveJobBtn{
  min-width:120px!important;
  background:#4fa55b!important;
  border-color:#3d8d49!important;
  color:#fff!important;
  box-shadow:0 2px 5px rgba(61,141,73,.18)!important;
}
#jobDialog #saveJobBtn:hover{
  background:#438f4e!important;
}
@media(max-width:760px){
  #jobDialog .dialog-actions{
    gap:6px!important;
    padding-left:8px!important;
    padding-right:8px!important;
  }
  #jobDialog .dialog-actions button{
    min-height:38px!important;
    padding:7px 10px!important;
    font-size:.82rem!important;
  }
  #jobDialog #jobInvoiceBtn{min-width:0!important;}
}

/* source block 212: local-v2-13-99-cost-summary-tab-cleanup; v2.19.18 line 37099 */

/* LOCAL v2.13.99 — Cost Summary only belongs on Booking/Costs, never Details/Products/Delivery/Status. */
#jobFormGrid.job-view-details > #quickCostSummaryBar,
#jobFormGrid.job-view-products > #quickCostSummaryBar,
#jobFormGrid.job-view-delivery > #quickCostSummaryBar,
#jobFormGrid.job-view-status > #quickCostSummaryBar,
#jobFormGrid.job-view-details > #jobQuickTotalsMatrix,
#jobFormGrid.job-view-products > #jobQuickTotalsMatrix,
#jobFormGrid.job-view-delivery > #jobQuickTotalsMatrix,
#jobFormGrid.job-view-status > #jobQuickTotalsMatrix{
  display:none!important;
}

/* source block 213: local-v2-14-05-driver-completion-focus-final; v2.19.18 line 37113 */

/* Driver portal: active workflow is blue; genuinely completed jobs remain green and non-actionable. */
.driver-complete-job-btn:not(.is-complete):not(:disabled){
  background:#0969da!important;
  border-color:#0969da!important;
  color:#fff!important;
  box-shadow:0 3px 10px rgba(9,105,218,.22)!important;
}
.driver-complete-job-btn:not(.is-complete):not(:disabled):hover{background:#075bbd!important;border-color:#075bbd!important;}
.driver-job-v3.completed{
  background:#edf9ef!important;
  border:2px solid #78bf85!important;
  opacity:1!important;
}
.driver-job-v3.completed .driver-job-summary{
  background:linear-gradient(90deg,#e3f5e7,#f3fbf5)!important;
}
.driver-job-v3.completed .driver-summary-time strong,
.driver-job-v3.completed .driver-summary-main strong{color:#176b31!important;}
.driver-job-v3.completed .driver-summary-time small,
.driver-job-v3.completed .driver-summary-main span{color:#4f7b5b!important;}
.driver-job-v3.completed .driver-v3-status{background:#dff3e4!important;color:#176b31!important;border:1px solid #a5d8b0!important;}
.driver-job-v3.completed .driver-select-btn{display:none!important;}
/* Only unfinished non-selected jobs recede while another job is selected. */
.driver-jobs-v3:has(.driver-job-v3.selected) .driver-job-v3:not(.selected):not(.completed){
  background:#eef1f4!important;border-color:#d2d9e1!important;
}
.driver-jobs-v3:has(.driver-job-v3.selected) .driver-job-v3:not(.selected):not(.completed) .driver-job-summary{background:#eef1f4!important;}

/* LOCAL v2.14.13 — temporary Project 1 Data Management */
.data-management-card{padding:20px}.data-management-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.data-management-head h3{margin:0 0 5px}.data-management-head p{margin:0;color:var(--muted)}.danger-badge{background:#7f1d1d;color:#fff;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900;white-space:nowrap}.data-warning{margin:16px 0;padding:12px 14px;border:1px solid #fecaca;background:#fff7f7;border-radius:10px;color:#7f1d1d}.data-management-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.data-clear-btn{display:flex!important;flex-direction:column;align-items:flex-start!important;gap:3px!important;min-height:72px!important;padding:12px 14px!important;text-align:left!important;border:1px solid #cbd5e1!important;background:#fff!important;color:#172033!important;border-radius:10px!important}.data-clear-btn:hover{border-color:#ef4444!important;background:#fff7f7!important}.data-clear-btn span{font-weight:850}.data-clear-btn small,.data-management-all small,.data-management-restore small{display:block;color:#64748b;font-weight:500;line-height:1.3}.data-management-all,.data-management-restore{margin-top:16px;padding:14px;border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:18px}.data-management-all{border:2px solid #991b1b;background:#fff7f7}.data-management-restore{border:1px solid #93c5fd;background:#eff6ff}.danger-action{background:#991b1b!important;color:#fff!important;border-color:#991b1b!important;font-weight:900!important}.restore-action{background:#1d4ed8!important;color:#fff!important;border-color:#1d4ed8!important;font-weight:850!important}.data-management-status{margin-top:14px;padding:10px 12px;border-radius:8px;background:#f8fafc;border:1px solid #e2e8f0;color:#475569;font-size:12px}@media(max-width:720px){.data-management-all,.data-management-restore,.data-management-head{align-items:stretch;flex-direction:column}.data-management-all button,.data-management-restore button{width:100%}}

