:root {
  --bg: #f4f6f8;
  --card: #ffffff;
  --text: #17202a;
  --muted: #6b7280;

  --primary: #1f4e78;
  --primary-dark: #163a5c;
  --primary-light: #e8f0f7;

  --border: #dfe3e8;

  --danger: #c0392b;
  --danger-light: #fdecea;

  --success: #198754;
  --success-light: #e8f5ee;

  --warning: #b7791f;

  --shadow: 0 8px 25px rgba(0, 0, 0, 0.06);
  --radius: 12px;
}


/* ==========================================
   GLOBAL
========================================== */

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;

  font-family:
    Inter,
    Arial,
    Helvetica,
    sans-serif;

  background: var(--bg);
  color: var(--text);
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  -webkit-tap-highlight-color: transparent;
}

[hidden] {
  display: none !important;
}


/* ==========================================
   HEADER
========================================== */

.app-header {
  background: #101820;
  color: white;

  padding: 32px 20px;
}

.header-content {
  max-width: 1250px;

  margin: auto;

  display: flex;
  align-items: center;
  justify-content: space-between;

  gap: 30px;
}

.eyebrow {
  margin: 0 0 6px;

  font-size: 12px;
  letter-spacing: 2px;
  font-weight: 700;

  opacity: 0.7;
}

.app-header h1 {
  margin: 0;

  font-size: 30px;
}

.subtitle {
  margin: 8px 0 0;

  color: #c8d0d8;
}

.header-actions {
  display: flex;

  gap: 10px;

  flex-shrink: 0;
}


/* ==========================================
   MAIN CONTAINER
========================================== */

.container {
  max-width: 1250px;

  margin: 30px auto;

  padding: 0 20px;
}


/* ==========================================
   CARDS
========================================== */

.card {
  background: var(--card);

  border: 1px solid var(--border);
  border-radius: var(--radius);

  padding: 24px;

  margin-bottom: 20px;

  box-shadow: var(--shadow);
}


/* ==========================================
   SECTION HEADINGS
========================================== */

.section-heading {
  display: flex;

  justify-content: space-between;
  align-items: center;

  margin-bottom: 22px;
}

.section-heading > div {
  display: flex;

  align-items: center;

  gap: 12px;
}

.section-heading h2,
.totals-card h2 {
  margin: 0;

  font-size: 19px;
}

.step {
  width: 34px;
  height: 34px;

  border-radius: 8px;

  display: inline-flex;

  align-items: center;
  justify-content: center;

  background: var(--primary-light);

  color: var(--primary);

  font-size: 12px;
  font-weight: 800;
}


/* ==========================================
   FORM
========================================== */

.form-grid {
  display: grid;

  grid-template-columns:
    repeat(3, 1fr);

  gap: 18px;
}

.form-group {
  display: flex;

  flex-direction: column;

  gap: 7px;
}

.form-group.full-width {
  grid-column: 1 / -1;
}

label {
  font-size: 13px;
  font-weight: 700;

  color: #374151;
}

input,
select,
textarea {
  width: 100%;

  border: 1px solid #cfd5dc;
  border-radius: 8px;

  padding: 11px 12px;

  background: white;

  color: var(--text);

  outline: none;

  transition:
    border-color 0.2s,
    box-shadow 0.2s;
}

input:focus,
select:focus,
textarea:focus {
  border-color: var(--primary);

  box-shadow:
    0 0 0 3px
    rgba(31, 78, 120, 0.1);
}

textarea {
  resize: vertical;

  line-height: 1.5;
}


/* ==========================================
   BUTTONS
========================================== */

.btn {
  border: 0;

  border-radius: 8px;

  padding: 11px 17px;

  font-weight: 700;

  cursor: pointer;

  transition:
    background 0.2s,
    transform 0.2s,
    opacity 0.2s;
}

.btn:hover {
  transform: translateY(-1px);
}

.btn:active {
  transform: translateY(0);
}

.btn:disabled {
  cursor: not-allowed;

  opacity: 0.6;

  transform: none;
}

.btn-primary {
  background: var(--primary);

  color: white;
}

.btn-primary:hover {
  background: var(--primary-dark);
}

.btn-secondary {
  background: #edf1f5;

  color: #24313d;
}

.btn-secondary:hover {
  background: #dfe6ec;
}

.app-header .btn-secondary {
  background: #26333f;

  color: white;
}

.app-header .btn-secondary:hover {
  background: #344553;
}


/* ==========================================
   ESTIMATE ITEMS TABLE
========================================== */

.table-wrapper {
  width: 100%;

  overflow-x: auto;
}

table {
  width: 100%;

  border-collapse: collapse;

  min-width: 900px;
}

th {
  text-align: left;

  padding: 10px 8px;

  font-size: 12px;

  color: var(--muted);

  text-transform: uppercase;

  letter-spacing: 0.4px;

  border-bottom:
    1px solid var(--border);
}

td {
  padding: 10px 8px;

  border-bottom:
    1px solid #edf0f2;
}

td input,
td select {
  min-width: 80px;
}

.item-description {
  min-width: 220px;
}

.item-total {
  font-weight: 800;

  white-space: nowrap;
}

.remove-item {
  width: 34px;
  height: 34px;

  border: 0;

  border-radius: 7px;

  background: var(--danger-light);

  color: var(--danger);

  font-size: 22px;

  cursor: pointer;
}

.remove-item:hover {
  background: #f8d5d1;
}


/* ==========================================
   PRICING
========================================== */

.pricing-layout {
  display: grid;

  grid-template-columns:
    1.4fr 0.8fr;

  gap: 20px;
}

.pricing-layout .card {
  margin-bottom: 20px;
}

.totals-card {
  padding: 26px;
}

.totals-card h2 {
  padding-bottom: 17px;

  border-bottom:
    1px solid var(--border);

  margin-bottom: 8px;
}

.summary-row,
.summary-input-row {
  min-height: 49px;

  display: flex;

  align-items: center;
  justify-content: space-between;

  gap: 15px;

  border-bottom:
    1px solid #edf0f2;
}

.summary-row span,
.summary-input-row label {
  font-size: 14px;

  color: #4b5563;
}

.summary-row strong {
  font-size: 14px;
}


/* ==========================================
   MONEY / PERCENT INPUTS
========================================== */

.money-input,
.percent-input {
  display: flex;

  align-items: center;

  border:
    1px solid #cfd5dc;

  border-radius: 7px;

  background: white;

  overflow: hidden;

  width: 125px;
}

.money-input span,
.percent-input span {
  padding: 0 9px;

  color: var(--muted);
}

.money-input input,
.percent-input input {
  border: 0;

  box-shadow: none;

  border-radius: 0;

  padding: 8px;

  text-align: right;
}

.money-input input:focus,
.percent-input input:focus {
  box-shadow: none;
}


/* ==========================================
   GRAND TOTAL
========================================== */

.grand-total {
  margin-top: 20px;

  background: #101820;

  color: white;

  border-radius: 10px;

  padding: 20px;

  display: flex;

  align-items: center;
  justify-content: space-between;
}

.grand-total span {
  font-size: 12px;

  font-weight: 800;

  letter-spacing: 1px;
}

.grand-total strong {
  font-size: 25px;
}


/* ==========================================
   PAYMENT TERMS
========================================== */

.standalone-input {
  width: 160px;
}

.calculated-value {
  min-height: 44px;

  padding: 11px 13px;

  background: #f6f8fa;

  border:
    1px solid var(--border);

  border-radius: 8px;

  font-weight: 800;
}


/* ==========================================
   BOTTOM ACTIONS
========================================== */

.bottom-actions {
  display: flex;

  justify-content: flex-end;

  gap: 12px;

  margin: 10px 0 35px;
}


/* ==========================================
   SAVED ESTIMATES VIEW
========================================== */

.saved-estimates-view {
  animation:
    savedViewFade 0.2s ease;
}

@keyframes savedViewFade {
  from {
    opacity: 0;
    transform: translateY(4px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}


/* ==========================================
   SAVED PAGE HEADER
========================================== */

.saved-page-header {
  display: flex;

  justify-content: space-between;
  align-items: center;

  gap: 25px;

  margin-bottom: 22px;
}

.saved-page-header h2 {
  margin:
    4px 0 7px;

  font-size: 28px;
}

.saved-page-header p {
  margin: 0;

  color: var(--muted);
}

.saved-eyebrow {
  color: var(--primary);

  opacity: 1;
}


/* ==========================================
   SAVED ESTIMATE STATS
========================================== */

.estimate-stats {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 18px;

  margin-bottom: 20px;
}

.stat-card {
  background: white;

  border:
    1px solid var(--border);

  border-radius: var(--radius);

  padding: 22px 24px;

  box-shadow: var(--shadow);

  display: flex;

  flex-direction: column;

  gap: 9px;
}

.stat-card span {
  color: var(--muted);

  font-size: 13px;

  font-weight: 700;
}

.stat-card strong {
  font-size: 27px;

  color: var(--text);
}


/* ==========================================
   SAVED ESTIMATE CARD
========================================== */

.saved-estimates-card {
  padding: 0;

  overflow: hidden;
}


/* ==========================================
   SAVED TOOLBAR
========================================== */

.saved-toolbar {
  padding: 20px;

  display: flex;

  align-items: center;

  justify-content: space-between;

  gap: 15px;

  border-bottom:
    1px solid var(--border);
}

.estimate-search {
  flex: 1;

  max-width: 650px;
}

.estimate-search input {
  background: #f8fafb;

  padding: 12px 14px;
}


/* ==========================================
   SAVED ESTIMATES TABLE
========================================== */

.saved-estimates-table {
  min-width: 950px;
}

.saved-estimates-table th {
  background: #f8fafb;

  padding: 14px 16px;
}

.saved-estimates-table td {
  padding: 15px 16px;

  vertical-align: middle;
}

.saved-estimates-table tbody tr {
  transition:
    background 0.15s;
}

.saved-estimates-table tbody tr:hover {
  background: #f9fbfc;
}


/* ==========================================
   SAVED ESTIMATE INFORMATION
========================================== */

.estimate-number-link {
  color: var(--primary);

  font-weight: 800;

  cursor: pointer;
}

.estimate-number-link:hover {
  text-decoration: underline;
}

.saved-customer {
  display: flex;

  flex-direction: column;

  gap: 3px;
}

.saved-customer strong {
  font-size: 14px;
}

.saved-customer span {
  color: var(--muted);

  font-size: 12px;
}

.saved-project {
  display: flex;

  flex-direction: column;

  gap: 3px;
}

.saved-project strong {
  font-size: 14px;
}

.saved-project span {
  color: var(--muted);

  font-size: 12px;
}

.saved-total {
  font-weight: 800;

  white-space: nowrap;
}


/* ==========================================
   SAVED ESTIMATE ACTION BUTTONS
========================================== */

.saved-actions {
  display: flex;

  align-items: center;

  gap: 6px;

  white-space: nowrap;
}

.action-btn {
  border: 0;

  border-radius: 7px;

  padding: 8px 10px;

  font-size: 12px;

  font-weight: 700;

  cursor: pointer;

  transition:
    background 0.15s,
    transform 0.15s;
}

.action-btn:hover {
  transform: translateY(-1px);
}

.action-open {
  background: var(--primary-light);

  color: var(--primary);
}

.action-open:hover {
  background: #d8e7f3;
}

.action-duplicate {
  background: var(--success-light);

  color: var(--success);
}

.action-duplicate:hover {
  background: #d8eee2;
}

.action-delete {
  background: var(--danger-light);

  color: var(--danger);
}

.action-delete:hover {
  background: #f8d5d1;
}


/* ==========================================
   EMPTY STATE
========================================== */

.saved-empty {
  text-align: center;

  padding: 65px 20px;
}

.saved-empty h3 {
  margin:
    0 0 8px;

  font-size: 20px;
}

.saved-empty p {
  margin: 0;

  color: var(--muted);
}


/* ==========================================
   LOADING ROW
========================================== */

.saved-loading {
  text-align: center;

  padding: 40px !important;

  color: var(--muted);
}


/* ==========================================
   ERROR MESSAGE
========================================== */

.saved-error {
  margin: 20px;

  padding: 14px 16px;

  border:
    1px solid #f1c7c2;

  border-radius: 8px;

  background: #fff3f1;

  color: #9e3024;

  font-size: 14px;
}


/* ==========================================
   FOOTER
========================================== */

.app-footer {
  text-align: center;

  color: var(--muted);

  padding:
    10px 20px 35px;

  font-size: 13px;
}




/* ==========================================
   INVOICE SYSTEM
========================================== */

.invoice-stats {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.invoice-table {
  min-width: 1450px;
}

.action-pdf {
  background: #eef2ff;
  color: #4338ca;
}

.action-pdf:hover {
  background: #e0e7ff;
}

.action-invoice {
  background: #fff7e6;
  color: #9a6700;
}

.action-invoice:hover {
  background: #ffedc2;
}

.action-payment {
  background: var(--success-light);
  color: var(--success);
}

.action-payment:hover {
  background: #d8eee2;
}

.invoice-status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 92px;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}

.status-draft {
  background: #eef1f4;
  color: #4b5563;
}

.status-sent {
  background: var(--primary-light);
  color: var(--primary);
}

.status-deposit-paid,
.status-partially-paid {
  background: #fff7e6;
  color: #9a6700;
}

.status-paid {
  background: var(--success-light);
  color: var(--success);
}

.status-overdue {
  background: var(--danger-light);
  color: var(--danger);
}

.status-cancelled {
  background: #f1f1f1;
  color: #6b7280;
  text-decoration: line-through;
}

.invoice-detail-header {
  margin-bottom: 22px;
}

.invoice-information {
  display: flex;
  flex-direction: column;
  gap: 7px;
  line-height: 1.5;
}

.invoice-information strong {
  font-size: 18px;
}

.invoice-information span,
.invoice-information p {
  color: var(--muted);
  margin: 0;
}

.invoice-notes {
  min-height: 80px;
  padding: 16px;
  background: #f8fafb;
  border: 1px solid var(--border);
  border-radius: 8px;
  white-space: pre-wrap;
  line-height: 1.6;
}

.payment-history {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 18px;
}

.payment-empty {
  margin: 0;
  padding: 18px;
  border: 1px dashed var(--border);
  border-radius: 8px;
  color: var(--muted);
  text-align: center;
  background: #fafbfc;
}

.payment-record {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px 20px;
  padding: 14px 16px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: #fafbfc;
}

.payment-record strong {
  font-size: 15px;
}

.payment-record .payment-amount {
  font-size: 16px;
  color: var(--success);
  white-space: nowrap;
}

.payment-record small {
  color: var(--muted);
}

.payment-record .payment-note {
  grid-column: 1 / -1;
  color: #4b5563;
  font-size: 13px;
}

#invoiceAmountPaid {
  color: var(--success);
}

#invoiceBalanceDue {
  font-size: 25px;
}


/* ==========================================
   MODAL
========================================== */

.modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

.modal[hidden] {
  display: none !important;
}

.modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(16, 24, 32, 0.65);
  backdrop-filter: blur(2px);
}

.modal-dialog {
  position: relative;
  z-index: 1;
  width: min(100%, 520px);
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  background: white;
  border-radius: 14px;
  padding: 24px;
  box-shadow: 0 25px 70px rgba(0, 0, 0, 0.25);
}

.modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 22px;
}

.modal-header h2 {
  margin: 4px 0 0;
  font-size: 22px;
}

.modal-header .eyebrow {
  color: var(--primary);
  opacity: 1;
}

.modal-close {
  width: 38px;
  height: 38px;
  border: 0;
  border-radius: 8px;
  background: #edf1f5;
  color: #24313d;
  font-size: 25px;
  line-height: 1;
  cursor: pointer;
}

.modal-close:hover {
  background: #dfe6ec;
}

.modal-dialog .form-group {
  margin-bottom: 17px;
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 22px;
}


/* ==========================================
   INVOICE RESPONSIVE
========================================== */

@media (max-width: 1050px) {
  .invoice-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  .invoice-stats {
    grid-template-columns: 1fr;
  }

  .payment-record {
    grid-template-columns: 1fr;
  }

  .payment-record .payment-note {
    grid-column: auto;
  }

  .modal {
    padding: 10px;
  }

  .modal-dialog {
    padding: 20px;
  }

  .modal-actions {
    flex-direction: column-reverse;
  }

  .modal-actions .btn {
    width: 100%;
  }
}


/* ==========================================
   INVOICE PRINT
========================================== */

@media print {
  #savedEstimatesView,
  #invoicesView,
  #paymentModal {
    display: none !important;
  }

  body.printing-invoice #estimatorView {
    display: none !important;
  }

  body.printing-invoice #invoiceDetailView {
    display: block !important;
  }

  body:not(.printing-invoice) #invoiceDetailView {
    display: none !important;
  }

  body.printing-invoice #invoiceDetailView .saved-page-header .header-actions,
  body.printing-invoice #recordPaymentBtn,
  body.printing-invoice #saveInvoiceBtn,
  body.printing-invoice #invoicePrintBtn {
    display: none !important;
  }

  body.printing-invoice .invoice-detail-header {
    display: block;
  }

  body.printing-invoice .invoice-detail-header .eyebrow {
    display: block !important;
    color: #333;
  }
}


/* ==========================================
   TABLET
========================================== */

@media (max-width: 900px) {

  .header-content {
    flex-direction: column;

    align-items: flex-start;
  }

  .header-actions {
    flex-wrap: wrap;
  }

  .form-grid {
    grid-template-columns:
      1fr 1fr;
  }

  .pricing-layout {
    grid-template-columns: 1fr;
  }

  .saved-page-header {
    align-items: flex-start;
  }

}


/* ==========================================
   MOBILE
========================================== */

@media (max-width: 600px) {

  .container {
    padding: 0 12px;

    margin-top: 15px;
  }

  .card {
    padding: 18px;
  }

  .app-header {
    padding: 24px 16px;
  }

  .app-header h1 {
    font-size: 24px;
  }

  .form-grid {
    grid-template-columns: 1fr;
  }

  .form-group.full-width {
    grid-column: auto;
  }

  .header-actions {
    width: 100%;

    display: grid;

    grid-template-columns:
      1fr 1fr;
  }

  .header-actions .btn {
    width: 100%;
  }

  #printEstimateBtn {
    grid-column: 1 / -1;
  }

  #newEstimateBtn {
    grid-column: 1 / -1;
  }

  .bottom-actions {
    width: 100%;
  }

  .bottom-actions .btn {
    flex: 1;
  }

  .line-item-heading {
    align-items: flex-start;

    gap: 15px;
  }

  .saved-page-header {
    flex-direction: column;

    align-items: stretch;
  }

  .saved-page-header .btn {
    width: 100%;
  }

  .estimate-stats {
    grid-template-columns: 1fr;
  }

  .saved-toolbar {
    flex-direction: column;

    align-items: stretch;
  }

  .estimate-search {
    max-width: none;
  }

  .saved-toolbar .btn {
    width: 100%;
  }

}


/* ==========================================
   PRINT / PDF
========================================== */

@media print {

  body {
    background: white;
  }

  .app-header {
    background: white;

    color: black;

    padding:
      10px 0 20px;
  }

  .app-header .subtitle,
  .eyebrow,
  .header-actions,
  .bottom-actions,
  .remove-item,
  #addItemBtn,
  .app-footer,
  #savedEstimatesView,
  #invoicesView,
  #paymentModal {
    display: none !important;
  }

  #estimatorView {
    display: block !important;
  }

  .container {
    max-width: none;

    margin: 0;

    padding: 0;
  }

  .card {
    box-shadow: none;

    border:
      1px solid #ddd;

    break-inside: avoid;
  }

  input,
  select,
  textarea {
    border: none;

    padding-left: 0;

    box-shadow: none;
  }

  .step {
    display: none;
  }

  .pricing-layout {
    grid-template-columns:
      1fr 1fr;
  }

  .grand-total {
    background: #eee;

    color: black;
  }

}

/* ==========================================
   CUSTOMER SYSTEM
========================================== */

.customer-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
  margin-bottom: 20px;
}

.customer-table {
  min-width: 1350px;
}

.customer-name-link {
  color: var(--primary);
  font-weight: 800;
  cursor: pointer;
}

.customer-name-link:hover {
  text-decoration: underline;
}

.customer-contact {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.customer-contact span {
  color: var(--muted);
  font-size: 12px;
}

.customer-project-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  padding: 6px 10px;
  border-radius: 999px;
  background: var(--primary-light);
  color: var(--primary);
  font-size: 12px;
  font-weight: 800;
}

.customer-profile-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.customer-profile-info {
  display: grid;
  gap: 14px;
}

.customer-profile-info > div {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding-bottom: 13px;
  border-bottom: 1px solid #edf0f2;
}

.customer-profile-info > div:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}

.customer-profile-info span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}

.customer-profile-info strong {
  font-size: 15px;
}

.customer-address-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.customer-address {
  padding: 13px 15px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #f8fafb;
  line-height: 1.45;
}

.customer-address-empty {
  color: var(--muted);
  padding: 15px 0;
}

.customer-history-card {
  padding: 0;
  overflow: hidden;
}

.customer-history-heading {
  padding: 20px;
  border-bottom: 1px solid var(--border);
}

.customer-history-heading h2 {
  margin: 4px 0 0;
  font-size: 19px;
}

@media (max-width: 1050px) {
  .customer-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .customer-profile-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 600px) {
  .customer-stats {
    grid-template-columns: 1fr;
  }
}

@media print {
  #customersView,
  #customerDetailView {
    display: none !important;
  }
}


/* ==================================================
   JOB MANAGEMENT
================================================== */
.job-table th, .job-table td { vertical-align: middle; }
.job-status { display:inline-flex; align-items:center; padding:6px 10px; border-radius:999px; font-size:.78rem; font-weight:800; background:rgba(59,130,246,.10); border:1px solid rgba(59,130,246,.22); white-space:nowrap; }
.job-status.status-completed { background:rgba(34,197,94,.10); border-color:rgba(34,197,94,.25); }
.job-status.status-in-progress { background:rgba(245,185,66,.12); border-color:rgba(245,185,66,.30); }
.job-status.status-on-hold, .job-status.status-cancelled { background:rgba(229,9,20,.08); border-color:rgba(229,9,20,.20); }
.job-form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.action-job { border-color:rgba(34,197,94,.35); }
@media (max-width:760px){ .job-form-grid { grid-template-columns:1fr; } }
@media print { #jobsView, #jobDetailView { display:none !important; } }


/* ==================================================
   JOB EXPENSES & PROFIT
================================================== */
.job-profit-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:18px; }
.job-expense-table input, .job-expense-table select { min-width:120px; width:100%; }
.job-expense-table .job-expense-vendor { min-width:180px; }
.job-expense-table .job-expense-description { min-width:220px; }
.job-expense-table .job-expense-amount { min-width:110px; text-align:right; }
.job-expense-empty { padding:18px 0 2px; }
.job-expense-empty p { margin:0; }
@media (max-width:950px){ .job-profit-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:600px){ .job-profit-grid { grid-template-columns:1fr; } }

/* JOB SCHEDULING, WORKERS & LABOR */
.job-labor-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:18px; }
.job-worker-table input, .job-worker-table select { width:100%; min-width:105px; }
.job-worker-table .job-worker-name { min-width:155px; }
.job-worker-table .job-worker-role { min-width:135px; }
.job-worker-table .job-worker-contact { min-width:180px; }
.job-worker-table .job-worker-notes { min-width:180px; }
.job-worker-cost { font-weight:800; white-space:nowrap; }
.job-help-text { color:var(--muted); margin:14px 0 0; font-size:.88rem; }
@media (max-width:950px){ .job-labor-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:600px){ .job-labor-grid { grid-template-columns:1fr; } }

/* BUSINESS DASHBOARD */
.dashboard-kpi-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:20px; }
.dashboard-kpi small { display:block; margin-top:6px; color:var(--muted); font-size:.78rem; font-weight:600; }
.dashboard-grid-two { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-bottom:18px; }
.dashboard-panel { min-width:0; }
.dashboard-metric-list { display:grid; gap:2px; }
.dashboard-metric-list > div { display:flex; justify-content:space-between; gap:18px; padding:13px 0; border-bottom:1px solid var(--border); }
.dashboard-metric-list > div:last-child { border-bottom:0; }
.dashboard-metric-list span { color:var(--muted); }
.dashboard-metric-list strong { white-space:nowrap; }
.dashboard-note { margin:14px 0 0; color:var(--muted); font-size:.82rem; line-height:1.5; }
.dashboard-status-list { display:grid; gap:10px; }
.dashboard-status-row { display:grid; grid-template-columns:minmax(110px,1fr) 2fr 42px; gap:12px; align-items:center; }
.dashboard-status-track { height:10px; background:rgba(127,127,127,.16); border-radius:999px; overflow:hidden; }
.dashboard-status-fill { height:100%; background:currentColor; border-radius:999px; }
.dashboard-status-row strong { text-align:right; }
.dashboard-activity { display:grid; gap:10px; }
.dashboard-activity-item { display:flex; justify-content:space-between; gap:20px; padding:13px 0; border-bottom:1px solid var(--border); }
.dashboard-activity-item:last-child { border-bottom:0; }
.dashboard-activity-item span { color:var(--muted); font-size:.85rem; }
.dashboard-link { border:0; padding:0; background:transparent; color:inherit; font:inherit; font-weight:800; cursor:pointer; text-decoration:underline; text-underline-offset:3px; }
@media (max-width:1050px){ .dashboard-kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .dashboard-grid-two { grid-template-columns:1fr; } }
@media (max-width:600px){ .dashboard-kpi-grid { grid-template-columns:1fr; } .dashboard-status-row { grid-template-columns:1fr 1.5fr 32px; } }

/* ==========================================================
   RL HOME FIX — PROFESSIONAL UI REFRESH
   Visual-only layer. Existing application behavior unchanged.
========================================================== */
:root{
  --bg:#f5f7fb;
  --card:#ffffff;
  --text:#142033;
  --muted:#687386;
  --primary:#173f67;
  --primary-dark:#0f2e4d;
  --primary-light:#eaf2f9;
  --accent:#d89a2b;
  --accent-soft:#fff6e5;
  --border:#e2e8f0;
  --success:#16835f;
  --success-light:#e8f7f1;
  --danger:#c5453a;
  --danger-light:#fff0ee;
  --warning:#a96c0b;
  --shadow:0 10px 30px rgba(15,46,77,.07);
  --shadow-hover:0 18px 42px rgba(15,46,77,.12);
  --radius:16px;
}

body{
  background:
    radial-gradient(circle at 8% 0%, rgba(23,63,103,.055), transparent 28rem),
    linear-gradient(180deg,#f8fafc 0,#f4f7fb 100%);
  color:var(--text);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}

.app-header{
  position:relative;
  overflow:hidden;
  padding:24px 24px;
  background:linear-gradient(125deg,#0c263e 0%,#123b61 55%,#1c527f 100%);
  border-bottom:1px solid rgba(255,255,255,.12);
  box-shadow:0 12px 34px rgba(8,31,51,.18);
}
.app-header::after{
  content:"";
  position:absolute;
  width:430px;height:430px;
  right:-140px;top:-300px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:50%;
  box-shadow:0 0 0 55px rgba(255,255,255,.025),0 0 0 110px rgba(255,255,255,.018);
  pointer-events:none;
}
.header-content{max-width:1380px;position:relative;z-index:1;align-items:flex-start;}
.header-content>div:first-child{position:relative;padding-left:58px;min-width:290px;}
.header-content>div:first-child::before{
  content:"RL";position:absolute;left:0;top:1px;width:44px;height:44px;
  display:grid;place-items:center;border-radius:12px;
  background:linear-gradient(145deg,#f0b74e,#cf8b19);color:#102d49;
  font-weight:900;font-size:16px;letter-spacing:-.5px;
  box-shadow:0 7px 18px rgba(0,0,0,.18),inset 0 1px rgba(255,255,255,.45);
}
.eyebrow{color:#f3c76f;opacity:1;font-size:10px;letter-spacing:2.1px;margin-bottom:4px;}
.app-header h1{font-size:25px;letter-spacing:-.55px;font-weight:800;}
.subtitle{font-size:13px;color:#c8d7e5;margin-top:5px;}
.header-actions{flex-wrap:wrap;justify-content:flex-end;max-width:820px;gap:8px;}
.app-header .btn{min-height:40px;padding:9px 13px;border-radius:10px;font-size:12.5px;box-shadow:none;}
.app-header .btn-secondary{background:rgba(255,255,255,.075);color:#f7fbff;border-color:rgba(255,255,255,.16);backdrop-filter:blur(8px);}
.app-header .btn-secondary:hover{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.27);transform:translateY(-1px);}
.app-header .btn-primary{background:#f0b74e;color:#17324d;border-color:#f0b74e;font-weight:800;}
.app-header .btn-primary:hover{background:#f5c66e;border-color:#f5c66e;transform:translateY(-1px);}

.container{max-width:1380px;margin:26px auto 46px;padding:0 24px;}
.card{
  border:1px solid rgba(211,220,230,.92);
  border-radius:18px;padding:24px;margin-bottom:20px;
  box-shadow:var(--shadow);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;
}
.card:hover{border-color:#d5dee8;box-shadow:0 13px 34px rgba(15,46,77,.085);}
.section-heading{padding-bottom:15px;margin-bottom:20px;border-bottom:1px solid #edf1f5;}
.section-heading h2,.totals-card h2{font-size:18px;letter-spacing:-.25px;font-weight:800;}
.step{width:32px;height:32px;border-radius:9px;background:linear-gradient(145deg,#edf5fb,#e4eef7);box-shadow:inset 0 0 0 1px #d8e6f2;color:#17466f;}

label{font-size:12px;font-weight:750;color:#4b5a6c;letter-spacing:.01em;}
input,select,textarea{
  border:1px solid #d7e0e9!important;border-radius:10px!important;
  background:#fbfcfe;color:var(--text);transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
input:hover,select:hover,textarea:hover{border-color:#bdcad7!important;background:#fff;}
input:focus,select:focus,textarea:focus{outline:none;border-color:#3e719e!important;background:#fff;box-shadow:0 0 0 3px rgba(46,105,156,.12)!important;}
textarea{line-height:1.55;}

.btn{border-radius:10px;font-weight:750;letter-spacing:.005em;transition:all .18s ease;box-shadow:0 2px 5px rgba(15,46,77,.05);}
.btn:hover{transform:translateY(-1px);box-shadow:0 7px 16px rgba(15,46,77,.11);}
.btn:active{transform:translateY(0);}
.btn-primary{background:linear-gradient(145deg,#1b527f,#173f67);border-color:#173f67;color:#fff;}
.btn-primary:hover{background:linear-gradient(145deg,#22628f,#153b60);}
.btn-secondary{background:#fff;color:#24415e;border-color:#d4dee8;}
.btn-secondary:hover{background:#f6f9fc;border-color:#b9c8d7;}

.table-wrapper{border:1px solid #e1e7ee;border-radius:13px;overflow:auto;background:#fff;}
.saved-estimates-table,.invoice-table,.customer-table,.job-table{border-collapse:separate;border-spacing:0;}
.saved-estimates-table th,.invoice-table th,.customer-table th,.job-table th{
  background:#f5f8fb;color:#506074;font-size:10.5px;text-transform:uppercase;letter-spacing:.065em;font-weight:800;
  border-bottom:1px solid #dfe7ef!important;padding-top:12px!important;padding-bottom:12px!important;
}
.saved-estimates-table td,.invoice-table td,.customer-table td,.job-table td{border-bottom-color:#edf1f5!important;}
.saved-estimates-table tbody tr,.invoice-table tbody tr,.customer-table tbody tr,.job-table tbody tr{transition:background .15s ease;}
.saved-estimates-table tbody tr:hover,.invoice-table tbody tr:hover,.customer-table tbody tr:hover,.job-table tbody tr:hover{background:#f8fbfd;}

.stat-card,.dashboard-kpi{
  position:relative;overflow:hidden;background:linear-gradient(145deg,#fff,#fbfdff);
  border:1px solid #dfe7ef!important;border-radius:15px!important;box-shadow:0 6px 18px rgba(15,46,77,.055)!important;
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.stat-card::before,.dashboard-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(#1d5a8d,#e3a43a);opacity:.85;}
.stat-card:hover,.dashboard-kpi:hover{transform:translateY(-2px);box-shadow:0 12px 25px rgba(15,46,77,.09)!important;border-color:#cfdae5!important;}
.stat-card span,.dashboard-kpi span{font-size:10.5px!important;text-transform:uppercase;letter-spacing:.055em;font-weight:800!important;color:#718095!important;}
.stat-card strong,.dashboard-kpi strong{font-size:22px!important;letter-spacing:-.55px;color:#17334f;}
.dashboard-kpi small{color:#8390a0!important;}
.dashboard-grid-two{gap:20px;}
.dashboard-panel{border-top:3px solid #dfeaf3;}
.dashboard-metric-list>div{padding:12px 2px;}
.dashboard-status-track{height:8px;background:#edf1f5;}
.dashboard-status-fill{background:linear-gradient(90deg,#245f90,#d9a23d);}
.dashboard-activity-item{padding:12px 2px;}
.dashboard-link{color:#185483;text-decoration-color:#9bbbd4;}
.dashboard-link:hover{color:#0f3556;text-decoration-color:#0f3556;}

.invoice-status,.job-status{font-size:10.5px!important;letter-spacing:.025em;padding:5px 9px!important;border-radius:999px!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);}
.status-paid,.job-status.status-completed{color:#126448!important;background:#e8f7f1!important;border-color:#bce5d5!important;}
.status-overdue,.status-cancelled,.job-status.status-on-hold,.job-status.status-cancelled{color:#a93c33!important;background:#fff0ee!important;border-color:#f1c9c5!important;}
.status-sent,.status-deposit-paid,.status-partially-paid,.job-status.status-in-progress{color:#8a5a0b!important;background:#fff7e8!important;border-color:#efd59e!important;}

.totals-card{background:linear-gradient(145deg,#f8fbfd,#f2f7fb);border:1px solid #d9e5ef;border-radius:15px;padding:20px;}
.customer-profile-info,.customer-address,.customer-history-card{border-radius:13px!important;border-color:#e1e8ef!important;background:#fcfdff!important;}
.customer-name-link{color:#185483;font-weight:800;}

.modal-backdrop{background:rgba(8,25,41,.58);backdrop-filter:blur(3px);}
.modal-dialog{border-radius:18px!important;border:1px solid rgba(255,255,255,.65);box-shadow:0 28px 70px rgba(7,27,44,.25)!important;}
.modal-header{border-bottom:1px solid #e8edf2;padding-bottom:15px;}
.modal-close{border-radius:9px;background:#f3f6f9;color:#536275;}
.modal-close:hover{background:#e8eef4;color:#243b53;}

.saved-empty{border:1px dashed #d4dee8;border-radius:13px;background:#fafcfe;color:#748194;}
.remove-item{border-radius:8px!important;transition:all .15s ease;}

footer,.footer{color:#7a8796;}

@media(max-width:1050px){
  .header-content{flex-direction:column;align-items:stretch;}
  .header-actions{justify-content:flex-start;max-width:none;}
}
@media(max-width:720px){
  .app-header{padding:20px 16px;}
  .header-content>div:first-child{padding-left:52px;}
  .app-header h1{font-size:21px;}
  .subtitle{font-size:12px;}
  .header-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;}
  .app-header .btn{width:100%;}
  .container{padding:0 14px;margin-top:18px;}
  .card{padding:18px;border-radius:15px;}
  .section-heading{align-items:flex-start;gap:12px;}
}

@media print{
  body{background:#fff!important;}
  .app-header{background:#fff!important;color:#111!important;box-shadow:none!important;border:0!important;}
  .app-header::after,.header-content>div:first-child::before{display:none!important;}
  .header-content>div:first-child{padding-left:0!important;}
  .eyebrow,.subtitle{color:#444!important;}
  .card{box-shadow:none!important;border-color:#ddd!important;}
}


/* ==================================================
   CALENDAR & SCHEDULING
================================================== */
.calendar-page-header{align-items:center}.calendar-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.calendar-card{overflow:hidden}.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.calendar-nav{display:flex;align-items:center;gap:10px}.calendar-nav h2{margin:0;min-width:220px;font-size:1.25rem}.calendar-arrow{min-width:44px;padding:10px 12px}.calendar-view-switch{display:flex;padding:4px;background:#eef2f6;border:1px solid #dfe5ec;border-radius:12px}.calendar-switch{border:0;background:transparent;padding:9px 16px;border-radius:9px;font-weight:800;color:#596579;cursor:pointer}.calendar-switch.active{background:#fff;color:#10233f;box-shadow:0 2px 8px rgba(16,35,63,.12)}.calendar-legend{display:flex;flex-wrap:wrap;gap:18px;margin:0 0 15px;color:#667085;font-size:.84rem;font-weight:700}.calendar-legend span{display:flex;align-items:center;gap:7px}.calendar-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.calendar-dot-start{background:#0f766e}.calendar-dot-work{background:#1d4ed8}.calendar-dot-target{background:#b7791f}.calendar-dot-overdue{background:#b42318}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid #e3e8ef;border-left:1px solid #e3e8ef;background:#fff}.calendar-weekday{padding:10px;text-align:center;text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:900;color:#667085;background:#f7f9fc;border-right:1px solid #e3e8ef;border-bottom:1px solid #e3e8ef}.calendar-day{min-height:132px;padding:9px;border-right:1px solid #e3e8ef;border-bottom:1px solid #e3e8ef;background:#fff;overflow:hidden}.calendar-day.other-month{background:#fafbfc}.calendar-day.today{box-shadow:inset 0 0 0 2px #c59b48}.calendar-day-number{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;font-weight:900;color:#344054;margin-bottom:7px}.calendar-day.other-month .calendar-day-number{color:#a8b0bd}.calendar-today-label{font-size:.62rem;color:#8a641c;text-transform:uppercase;letter-spacing:.05em}.calendar-event{display:block;width:100%;border:0;text-align:left;margin:0 0 5px;padding:6px 7px;border-radius:7px;font:inherit;font-size:.7rem;font-weight:800;line-height:1.2;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .15s ease,box-shadow .15s ease}.calendar-event:hover{transform:translateY(-1px);box-shadow:0 3px 8px rgba(16,35,63,.14)}.calendar-event small{display:block;font-size:.62rem;font-weight:650;opacity:.78;overflow:hidden;text-overflow:ellipsis}.calendar-event.start{background:#e8f6f3;color:#0b625b;border-left:3px solid #0f766e}.calendar-event.work{background:#eaf1ff;color:#1949a3;border-left:3px solid #1d4ed8}.calendar-event.target{background:#fff5dc;color:#8a641c;border-left:3px solid #b7791f}.calendar-event.overdue{background:#fff0ee;color:#9d261d;border-left:3px solid #b42318}.calendar-grid.week-view .calendar-day{min-height:390px}.calendar-agenda-card{margin-top:18px}.calendar-agenda{display:grid;gap:10px}.calendar-agenda-item{display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:14px;padding:12px 14px;border:1px solid #e3e8ef;border-radius:12px;background:#fff}.calendar-agenda-date{font-weight:900;color:#10233f}.calendar-agenda-main strong{display:block;color:#172b4d}.calendar-agenda-main span{display:block;color:#667085;font-size:.83rem;margin-top:2px}.calendar-agenda-item button{white-space:nowrap}.calendar-crew{font-size:.72rem!important;color:#7b8798!important}.calendar-overdue-text{color:#b42318!important;font-weight:800}.calendar-no-events{color:#98a2b3;font-size:.72rem;padding-top:4px}@media(max-width:900px){.calendar-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-day{min-height:110px;padding:6px}.calendar-event{font-size:.64rem;padding:5px}.calendar-event small{display:none}}@media(max-width:650px){.calendar-toolbar{align-items:flex-start;flex-direction:column}.calendar-nav h2{min-width:0;font-size:1.05rem}.calendar-grid{overflow-x:auto;min-width:700px}.calendar-card{overflow-x:auto}.calendar-summary-grid{grid-template-columns:1fr 1fr}.calendar-agenda-item{grid-template-columns:1fr}.calendar-agenda-item .btn{justify-self:start}}

/* =========================================================
   REPORTS & ANALYTICS
========================================================= */
.reports-view { max-width: 1500px; margin: 0 auto; padding: 28px 22px 54px; }
.reports-hero { display:flex; justify-content:space-between; align-items:center; gap:24px; padding:26px 28px; margin-bottom:18px; }
.reports-hero h1 { margin:4px 0 6px; font-size:clamp(1.7rem,3vw,2.45rem); }
.reports-hero p { margin:0; color:var(--muted); max-width:760px; }
.eyebrow { text-transform:uppercase; letter-spacing:.14em; font-weight:800; font-size:.72rem; color:var(--primary, #17324d); }
.reports-actions { display:flex; gap:10px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.reports-actions select { min-width:150px; padding:11px 12px; border:1px solid var(--border); border-radius:10px; background:#fff; }
.reports-kpi-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:14px; margin-bottom:18px; }
.report-kpi { background:linear-gradient(180deg,#fff,#fbfcfe); border:1px solid var(--border); border-radius:16px; padding:18px; box-shadow:0 8px 24px rgba(15,35,55,.06); }
.report-kpi span { display:block; color:var(--muted); font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.report-kpi strong { display:block; font-size:1.45rem; margin:8px 0 4px; color:var(--text); }
.report-kpi small { color:var(--muted); line-height:1.35; }
.reports-grid { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(320px,.75fr); gap:18px; margin-bottom:18px; }
.report-panel { margin-bottom:18px; }
.report-chart { min-height:260px; display:flex; align-items:flex-end; gap:10px; padding:18px 8px 6px; overflow-x:auto; }
.report-month { min-width:72px; flex:1; display:flex; flex-direction:column; align-items:center; gap:8px; }
.report-bars { height:190px; width:100%; display:flex; align-items:flex-end; justify-content:center; gap:4px; border-bottom:1px solid var(--border); }
.report-bar { width:22%; min-width:8px; border-radius:5px 5px 2px 2px; background:var(--primary,#17324d); opacity:.9; }
.report-bar.collected { background:#2d7a57; }
.report-bar.costs { background:#b58a3a; }
.report-month-label { font-size:.75rem; color:var(--muted); font-weight:700; white-space:nowrap; }
.report-legend { display:flex; gap:18px; justify-content:center; color:var(--muted); font-size:.8rem; font-weight:700; padding:8px 0 4px; }
.report-legend span::before { content:""; display:inline-block; width:9px; height:9px; border-radius:3px; background:var(--primary,#17324d); margin-right:6px; }
.report-legend span:nth-child(2)::before { background:#2d7a57; }
.report-legend span:nth-child(3)::before { background:#b58a3a; }
.report-snapshot { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
.report-snapshot > div { border:1px solid var(--border); border-radius:12px; padding:15px; background:#fbfcfe; }
.report-snapshot span { display:block; color:var(--muted); font-size:.8rem; font-weight:700; }
.report-snapshot strong { display:block; font-size:1.35rem; margin-top:4px; }
.report-status-list { display:grid; gap:10px; }
.report-status-row { display:grid; grid-template-columns:minmax(90px,1fr) 3fr auto; gap:10px; align-items:center; }
.report-status-name { font-weight:700; }
.report-status-track { height:10px; border-radius:99px; background:#eef1f4; overflow:hidden; }
.report-status-fill { height:100%; background:var(--primary,#17324d); border-radius:inherit; }
.report-status-count { font-weight:800; min-width:28px; text-align:right; }
.report-positive { color:#21724e !important; }
.report-negative { color:#a53a3a !important; }
.report-footnote { max-width:1100px; color:var(--muted); font-size:.82rem; line-height:1.5; margin:6px auto 0; text-align:center; }
@media (max-width:1200px){ .reports-kpi-grid{grid-template-columns:repeat(3,1fr)} }
@media (max-width:850px){ .reports-hero{align-items:flex-start;flex-direction:column}.reports-actions{justify-content:flex-start}.reports-grid{grid-template-columns:1fr}.reports-kpi-grid{grid-template-columns:repeat(2,1fr)} }
@media (max-width:520px){ .reports-kpi-grid{grid-template-columns:1fr}.report-snapshot{grid-template-columns:1fr}.reports-view{padding-left:12px;padding-right:12px} }
@media print {
  header, nav, .reports-actions, footer { display:none !important; }
  body { background:#fff !important; }
  .app-view { display:none !important; }
  #reportsView { display:block !important; padding:0 !important; }
  .card,.report-kpi { box-shadow:none !important; break-inside:avoid; }
  .reports-kpi-grid { grid-template-columns:repeat(3,1fr); }
}


/* =========================================================
   WORKERS & SUBCONTRACTORS MANAGEMENT
========================================================= */
.worker-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:20px}.worker-table{min-width:1280px}.worker-filter{width:auto;min-width:145px}.worker-profile-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:20px}.worker-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.worker-modal-dialog{width:min(100%,760px)}.worker-contact{display:flex;flex-direction:column;gap:3px}.worker-contact small{color:var(--muted)}.worker-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800}.worker-status.active{background:var(--success-light);color:var(--success)}.worker-status.inactive{background:#eef1f4;color:#6b7280}.worker-name-link{border:0;background:transparent;padding:0;color:var(--primary);font:inherit;font-weight:800;cursor:pointer;text-align:left}.worker-name-link:hover{text-decoration:underline}.worker-type-badge{display:inline-flex;padding:5px 8px;border-radius:8px;background:var(--primary-light);color:var(--primary);font-size:11px;font-weight:800}.worker-rate{font-weight:800;white-space:nowrap}@media(max-width:1100px){.worker-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:800px){.worker-profile-grid{grid-template-columns:1fr}.worker-form-grid{grid-template-columns:1fr}}@media(max-width:600px){.worker-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.worker-filter{width:100%}}@media print{#workersView,#workerDetailView,#workerModal{display:none!important}}


/* ==========================================================
   DOCUMENTS & RECEIPTS MANAGEMENT
========================================================== */
.document-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.document-toolbar{gap:12px}.document-filter{width:auto;min-width:165px}.document-table{min-width:1180px}.document-name{display:flex;flex-direction:column;gap:3px;max-width:260px}.document-name strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.document-name small,.document-job-sub{display:block;color:var(--muted);font-size:.72rem;margin-top:3px}.document-category{display:inline-flex;padding:5px 9px;border-radius:999px;background:var(--primary-light);color:var(--primary);font-size:.72rem;font-weight:800;white-space:nowrap}.document-job-link{border:0;background:transparent;padding:0;color:#185483;font:inherit;font-weight:850;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.document-amount{font-weight:800;white-space:nowrap}.document-expense-link{max-width:230px;color:var(--muted);font-size:.78rem}.document-modal-dialog{width:min(100%,760px)}.document-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.document-help{color:var(--muted);font-size:.75rem;margin-top:4px}.document-upload-progress{margin-top:14px;padding:11px 13px;border-radius:10px;background:#eef5fb;color:#17466f;font-weight:800;text-align:center}.documents-view .saved-empty{margin:18px}.documents-view .action-pdf{background:#eef2ff;color:#4338ca}@media(max-width:950px){.document-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.document-toolbar{align-items:stretch;flex-wrap:wrap}.document-filter{min-width:0;flex:1}}@media(max-width:600px){.document-stats{grid-template-columns:1fr}.document-form-grid{grid-template-columns:1fr}.document-filter{width:100%;flex:auto}.document-toolbar{flex-direction:column}}
@media print{#documentsView,#documentModal{display:none!important}}


/* =========================================================
   COMPANY SETTINGS
========================================================= */
.settings-view{animation:savedViewFade .2s ease}.settings-profile-grid{display:grid;grid-template-columns:220px 1fr;gap:28px;align-items:start}.settings-logo-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px;border:1px solid var(--border);border-radius:15px;background:#f8fbfd}.settings-logo-preview{width:128px;height:128px;border-radius:20px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(145deg,#f0b74e,#cf8b19);color:#102d49;font-size:36px;font-weight:900;box-shadow:0 10px 24px rgba(15,46,77,.14)}.settings-logo-preview img{width:100%;height:100%;object-fit:contain;background:#fff}.settings-logo-button{cursor:pointer;text-align:center}.settings-logo-card small{color:var(--muted);text-align:center}.settings-view .bottom-actions{margin-top:0}@media(max-width:800px){.settings-profile-grid{grid-template-columns:1fr}.settings-logo-card{max-width:280px}}@media print{#settingsView{display:none!important}}

/* =========================================================
   BACKUP & RESTORE
========================================================= */
.backup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:20px}.backup-card{margin-bottom:0}.backup-description{color:var(--muted);margin:-2px 0 18px;line-height:1.65}.backup-includes{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px}.backup-includes span{display:inline-flex;padding:7px 10px;border-radius:999px;background:var(--primary-light);color:var(--primary);font-size:.75rem;font-weight:800;border:1px solid #d8e6f2}.backup-help{margin:14px 0 0;color:var(--muted);font-size:.82rem;line-height:1.55}.backup-warning{padding:14px 16px;margin:0 0 18px;border:1px solid #efd59e;border-radius:11px;background:#fff8e9;color:#78520d;font-size:.86rem;line-height:1.55}.backup-file-info{margin:12px 0 16px;padding:11px 13px;border:1px solid var(--border);border-radius:10px;background:#f8fafc;color:var(--muted);font-size:.83rem}.backup-routine{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.backup-routine>div{padding:16px;border:1px solid var(--border);border-radius:12px;background:#fbfdff}.backup-routine strong{display:block;color:#17334f;margin-bottom:5px}.backup-routine span{display:block;color:var(--muted);font-size:.83rem;line-height:1.5}@media(max-width:850px){.backup-grid,.backup-routine{grid-template-columns:1fr}}


/* =========================================================
   LOGIN & SECURITY
========================================================= */
.auth-gate{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;padding:22px;background:linear-gradient(135deg,#0b253d 0%,#123b61 58%,#1c527f 100%)}
.auth-gate[hidden]{display:none!important}.auth-panel{width:min(100%,430px);background:#fff;border:1px solid rgba(255,255,255,.5);border-radius:22px;padding:30px;box-shadow:0 30px 80px rgba(3,20,34,.35)}
.auth-brand{display:flex;align-items:center;gap:14px;margin-bottom:20px}.auth-logo{width:52px;height:52px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(145deg,#f0b74e,#cf8b19);color:#102d49;font-weight:900;box-shadow:0 8px 20px rgba(15,46,77,.18)}
.auth-brand .eyebrow{margin:0 0 2px;color:#a66e13}.auth-brand h1{margin:0;font-size:24px;color:#17324d}.auth-intro{color:#687386;margin:0 0 22px}.auth-panel .form-group{margin-bottom:15px}.auth-submit{width:100%;min-height:46px;margin-top:4px}.auth-error{margin:14px 0 0;padding:10px 12px;border-radius:9px;background:#fff0ee;color:#a93c33;font-size:13px;font-weight:700}.auth-security-note{margin:18px 0 0;color:#7a8796;font-size:11.5px;line-height:1.5;text-align:center}
@media(max-width:520px){.auth-panel{padding:23px;border-radius:18px}}

/* Company logo in main application header */
.header-brand-wrap{display:flex;align-items:flex-start;gap:16px;min-width:0}
.header-brand-copy{min-width:0}
.header-company-logo{width:62px;height:62px;flex:0 0 62px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(145deg,#f0b74e,#cf8b19);color:#102d49;font-weight:900;font-size:22px;overflow:hidden;box-shadow:0 8px 24px rgba(0,0,0,.16)}
.header-company-logo img{width:100%;height:100%;object-fit:contain;background:#fff}
@media(max-width:760px){.header-brand-wrap{align-items:center}.header-company-logo{width:52px;height:52px;flex-basis:52px;border-radius:14px}}
@media print{.header-company-logo{box-shadow:none;border:1px solid #ddd}}


/* Standalone invoice creator */
.invoice-create-modal{width:min(1100px,94vw);max-height:92vh;display:flex;flex-direction:column;}
.invoice-create-scroll{overflow:auto;padding-right:4px;}
.invoice-create-heading{margin-top:22px;}
.invoice-create-pricing{margin-top:18px;}
#newInvItems input{min-width:90px;width:100%;padding:9px 10px;border:1px solid var(--border,#d9e0e7);border-radius:8px;}
#newInvItems .new-inv-desc{min-width:220px;}
.new-inv-remove{border:0;background:transparent;font-size:20px;cursor:pointer;color:#a33;padding:5px 8px;}
@media(max-width:700px){.invoice-create-modal{width:96vw}.invoice-create-modal .form-grid{grid-template-columns:1fr}.invoice-create-scroll{overflow-x:hidden}}

/* ==================================================
   FIX4 — DOCUMENT-ONLY PRINTING
   Estimate/Invoice print actions must never include the dashboard,
   reports, calendar, lists, or application navigation.
================================================== */
@media print {
  body.printing-estimate .app-header,
  body.printing-invoice .app-header,
  body.printing-estimate .app-footer,
  body.printing-invoice .app-footer,
  body.printing-estimate #dashboardView,
  body.printing-estimate #savedEstimatesView,
  body.printing-estimate #customersView,
  body.printing-estimate #customerDetailView,
  body.printing-estimate #jobsView,
  body.printing-estimate #jobDetailView,
  body.printing-estimate #calendarView,
  body.printing-estimate #workersView,
  body.printing-estimate #workerDetailView,
  body.printing-estimate #documentsView,
  body.printing-estimate #settingsView,
  body.printing-estimate #backupView,
  body.printing-estimate #reportsView,
  body.printing-estimate #invoicesView,
  body.printing-estimate #invoiceDetailView,
  body.printing-invoice #dashboardView,
  body.printing-invoice #savedEstimatesView,
  body.printing-invoice #customersView,
  body.printing-invoice #customerDetailView,
  body.printing-invoice #jobsView,
  body.printing-invoice #jobDetailView,
  body.printing-invoice #calendarView,
  body.printing-invoice #workersView,
  body.printing-invoice #workerDetailView,
  body.printing-invoice #documentsView,
  body.printing-invoice #settingsView,
  body.printing-invoice #backupView,
  body.printing-invoice #reportsView,
  body.printing-invoice #invoicesView,
  body.printing-invoice #estimatorView,
  body.printing-estimate .modal,
  body.printing-invoice .modal {
    display: none !important;
  }
  body.printing-estimate #estimatorView { display:block !important; }
  body.printing-invoice #invoiceDetailView { display:block !important; }
  body.printing-estimate #estimatorView .header-actions,
  body.printing-estimate #estimatorView .bottom-actions,
  body.printing-estimate #addItemBtn,
  body.printing-estimate .remove-item,
  body.printing-invoice #invoiceDetailView .header-actions,
  body.printing-invoice #recordPaymentBtn,
  body.printing-invoice #saveInvoiceBtn,
  body.printing-invoice #invoicePrintBtn { display:none !important; }
}

/* ==================================================
   FIX4 — YEAR CALENDAR
================================================== */
.calendar-year-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.calendar-year-month{border:1px solid #e3e8ef;border-radius:14px;background:#fff;padding:14px;min-width:0}.calendar-year-month h3{margin:0 0 10px;color:#172b4d;font-size:.95rem}.calendar-mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.calendar-mini-weekday{text-align:center;font-size:.62rem;font-weight:900;color:#98a2b3;padding:3px 0}.calendar-mini-day{position:relative;min-width:0;aspect-ratio:1;border:0;border-radius:6px;background:transparent;color:#475467;font:inherit;font-size:.68rem;font-weight:750;cursor:pointer}.calendar-mini-day:hover{background:#eef4fb}.calendar-mini-day.blank{pointer-events:none}.calendar-mini-day.today{box-shadow:inset 0 0 0 2px #c59b48;color:#10233f}.calendar-mini-day.has-events{background:#eaf1ff;color:#1949a3;font-weight:900}.calendar-mini-day.has-events::after{content:"";position:absolute;width:4px;height:4px;border-radius:50%;background:#1d4ed8;bottom:2px;left:50%;transform:translateX(-50%)}@media(max-width:1000px){.calendar-year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.calendar-year-grid{grid-template-columns:1fr}}

/* =========================================================
   FIX5 — STANDALONE INVOICE CREATOR MODAL
   Keep the invoice editor isolated from the Invoice Center.
========================================================= */
#newInvoiceModal{
  position:fixed;
  inset:0;
  z-index:50000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:rgba(7,25,42,.68);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
  overflow:hidden;
}
#newInvoiceModal[hidden]{display:none!important;}
#newInvoiceModal .invoice-create-modal{
  position:relative;
  z-index:50001;
  width:min(1180px,96vw);
  height:min(900px,92vh);
  max-height:92vh;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:#fff;
  border:1px solid rgba(255,255,255,.75);
  border-radius:20px;
  box-shadow:0 34px 90px rgba(3,20,34,.38);
}
#newInvoiceModal .modal-header{
  flex:0 0 auto;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:20px;
  padding:22px 26px 18px;
  margin:0;
  background:linear-gradient(135deg,#0e3557,#175989);
  border:0;
  color:#fff;
}
#newInvoiceModal .modal-header .eyebrow{color:#f4bf59;margin:0 0 4px;}
#newInvoiceModal .modal-header h2{color:#fff;margin:0 0 4px;font-size:25px;}
#newInvoiceModal .modal-header p:last-child{margin:0;color:rgba(255,255,255,.78);}
#newInvoiceModal .modal-close{
  flex:0 0 auto;
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid rgba(255,255,255,.22);
  border-radius:11px;
  background:rgba(255,255,255,.12);
  color:#fff;
  font-size:27px;
  line-height:1;
}
#newInvoiceModal .modal-close:hover{background:rgba(255,255,255,.22);color:#fff;}
#newInvoiceModal .invoice-create-scroll{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  padding:24px 26px;
  background:#f7f9fc;
}
#newInvoiceModal .invoice-create-scroll>.form-grid,
#newInvoiceModal .invoice-create-scroll>.form-group,
#newInvoiceModal .invoice-create-scroll>.table-wrapper,
#newInvoiceModal .invoice-create-scroll>.invoice-create-pricing{
  background:#fff;
  border:1px solid #e1e8ef;
  border-radius:14px;
}
#newInvoiceModal .invoice-create-scroll>.form-grid{padding:18px;gap:16px;}
#newInvoiceModal .invoice-create-scroll>.form-group{padding:18px;margin-top:16px;}
#newInvoiceModal .invoice-create-heading{margin:18px 0 10px;}
#newInvoiceModal .table-wrapper{overflow-x:auto;padding:0;margin:0;}
#newInvoiceModal .saved-estimates-table{margin:0;min-width:850px;}
#newInvoiceModal .invoice-create-pricing{padding:18px;margin-top:16px;}
#newInvoiceModal .modal-actions{
  flex:0 0 auto;
  display:flex;
  justify-content:flex-end;
  gap:10px;
  margin:0;
  padding:16px 26px;
  background:#fff;
  border-top:1px solid #e1e8ef;
  box-shadow:0 -8px 24px rgba(16,50,77,.06);
}
#newInvoiceModal .modal-actions .btn{min-width:120px;}
body.invoice-modal-open{overflow:hidden;}
@media(max-width:760px){
  #newInvoiceModal{padding:10px;align-items:stretch;}
  #newInvoiceModal .invoice-create-modal{width:100%;height:calc(100vh - 20px);max-height:none;border-radius:15px;}
  #newInvoiceModal .modal-header{padding:17px 18px;}
  #newInvoiceModal .invoice-create-scroll{padding:16px;}
  #newInvoiceModal .invoice-create-scroll>.form-grid{grid-template-columns:1fr;padding:14px;}
  #newInvoiceModal .modal-actions{padding:12px 16px;}
}
@media print{#newInvoiceModal{display:none!important;}}

/* ==================================================
   FIX6 — CONSISTENT DOCUMENT BRANDING
================================================== */
.print-company-brand{display:none}
@media print{
  .print-company-brand{display:flex!important;align-items:center;gap:14px;padding:0 0 16px;margin:0 0 18px;border-bottom:2px solid #173b5f;break-inside:avoid}
  .print-company-brand img{display:block;width:auto;max-width:92px;height:auto;max-height:72px;object-fit:contain}
  .print-company-brand div{display:flex;flex-direction:column;gap:3px}
  .print-company-brand strong{font-size:18px;color:#173b5f}
  .print-company-brand span{font-size:10px;color:#526273}
}

/* ==================================================
   FIX10 — ESTIMATE APPROVAL & E-SIGNATURE
================================================== */
.approval-modal-dialog{width:min(760px,calc(100vw - 28px));max-height:calc(100vh - 40px);overflow:hidden;display:flex;flex-direction:column;background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(8,30,48,.28)}
.approval-modal-body{padding:22px 24px;overflow:auto;background:#f7f9fc}
.approval-status-card{padding:14px 16px;margin-bottom:16px;border:1px solid #dbe5ee;border-radius:12px;background:#fff;font-weight:700;color:#173b5f}
.approval-consent{display:flex;gap:10px;align-items:flex-start;padding:14px 16px;margin-top:16px;border:1px solid #dbe5ee;border-radius:12px;background:#fff;font-size:13px;line-height:1.5;color:#425466}
.approval-consent input{margin-top:3px;flex:0 0 auto}
.approval-lock-note{margin-top:14px;padding:12px 14px;border-radius:10px;background:#fff7e6;border:1px solid #f0d08a;color:#6d5316;font-size:12.5px;line-height:1.45}
.approval-actions{display:flex;justify-content:flex-end;gap:10px;padding:15px 24px;border-top:1px solid #e1e8ef;background:#fff}
.approval-badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}
.approval-badge.status-accepted{background:#e8f7ee;color:#176b3a}
.approval-badge.status-declined{background:#fdecec;color:#a12b2b}
.approval-badge.status-sent{background:#eaf2ff;color:#285d9c}
.approval-badge.status-draft{background:#eef2f6;color:#526273}
.action-approval{border-color:#c8d8e7!important;background:#f7fbff!important;color:#174d78!important}
@media(max-width:680px){.approval-actions{flex-wrap:wrap}.approval-actions .btn{flex:1 1 45%}.approval-modal-body{padding:16px}}
@media print{#estimateApprovalModal{display:none!important}}

/* ==================================================
   FIX10A — CUSTOMER APPROVAL MODAL LAYOUT REPAIR
   Keeps the approval form contained, readable and responsive.
================================================== */
#estimateApprovalModal{
  position:fixed!important;
  inset:0!important;
  z-index:5000!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:24px!important;
  overflow:hidden!important;
}
#estimateApprovalModal[hidden]{display:none!important}
#estimateApprovalModal .modal-backdrop{
  position:absolute!important;
  inset:0!important;
  background:rgba(7,27,44,.64)!important;
  backdrop-filter:blur(4px)!important;
}
#estimateApprovalModal .approval-modal-dialog{
  position:relative!important;
  z-index:1!important;
  width:min(900px,calc(100vw - 48px))!important;
  max-width:900px!important;
  height:auto!important;
  max-height:calc(100vh - 48px)!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:column!important;
  background:#fff!important;
  border:1px solid rgba(255,255,255,.72)!important;
  border-radius:20px!important;
  box-shadow:0 30px 90px rgba(5,24,40,.34)!important;
}
#estimateApprovalModal .modal-header{
  flex:0 0 auto!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:space-between!important;
  gap:20px!important;
  margin:0!important;
  padding:22px 24px!important;
  border-bottom:1px solid #dfe7ef!important;
  background:linear-gradient(135deg,#0d3a5e,#155f91)!important;
}
#estimateApprovalModal .modal-header .eyebrow{
  margin:0 0 4px!important;
  color:#f2bb4e!important;
  font-size:11px!important;
  letter-spacing:.14em!important;
}
#estimateApprovalModal .modal-header h2{
  margin:0 0 5px!important;
  color:#fff!important;
  font-size:24px!important;
  line-height:1.2!important;
}
#estimateApprovalModal #approvalEstimateLabel{
  margin:0!important;
  color:rgba(255,255,255,.82)!important;
  font-size:13px!important;
  line-height:1.45!important;
  overflow-wrap:anywhere!important;
}
#estimateApprovalModal .modal-close{
  flex:0 0 38px!important;
  width:38px!important;
  height:38px!important;
  padding:0!important;
  display:grid!important;
  place-items:center!important;
  border:1px solid rgba(255,255,255,.18)!important;
  background:rgba(255,255,255,.12)!important;
  color:#fff!important;
}
#estimateApprovalModal .approval-modal-body{
  flex:1 1 auto!important;
  min-height:0!important;
  width:100%!important;
  padding:22px 24px!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  background:#f6f9fc!important;
}
#estimateApprovalModal .approval-status-card{
  width:100%!important;
  box-sizing:border-box!important;
  padding:13px 15px!important;
  margin:0 0 18px!important;
  border:1px solid #d8e3ed!important;
  border-radius:12px!important;
  background:#fff!important;
  color:#173b5f!important;
  line-height:1.5!important;
  overflow-wrap:anywhere!important;
}
#estimateApprovalModal .form-grid{
  width:100%!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:16px!important;
  align-items:start!important;
}
#estimateApprovalModal .form-group{
  min-width:0!important;
  width:100%!important;
  margin:0 0 16px!important;
}
#estimateApprovalModal .form-group label{
  display:block!important;
  margin:0 0 7px!important;
  color:#34495e!important;
  font-size:13px!important;
  font-weight:800!important;
}
#estimateApprovalModal input[type="text"],
#estimateApprovalModal input:not([type]),
#estimateApprovalModal textarea{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  border:1px solid #cbd9e6!important;
  border-radius:11px!important;
  background:#fff!important;
  color:#172b3f!important;
  font:inherit!important;
}
#estimateApprovalModal input[type="text"],
#estimateApprovalModal input:not([type]){
  min-height:46px!important;
  padding:10px 12px!important;
}
#estimateApprovalModal textarea{
  min-height:92px!important;
  padding:11px 12px!important;
  resize:vertical!important;
}
#estimateApprovalModal .approval-consent{
  width:100%!important;
  box-sizing:border-box!important;
  display:grid!important;
  grid-template-columns:22px minmax(0,1fr)!important;
  gap:11px!important;
  align-items:start!important;
  margin:2px 0 0!important;
  padding:14px 15px!important;
  border:1px solid #cfe0ee!important;
  border-radius:12px!important;
  background:#fff!important;
  color:#425466!important;
  font-size:13px!important;
  line-height:1.55!important;
}
#estimateApprovalModal .approval-consent input[type="checkbox"]{
  appearance:auto!important;
  -webkit-appearance:checkbox!important;
  width:18px!important;
  height:18px!important;
  min-width:18px!important;
  margin:2px 0 0!important;
  padding:0!important;
}
#estimateApprovalModal .approval-consent span{
  display:block!important;
  min-width:0!important;
  width:auto!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}
#estimateApprovalModal .approval-lock-note{
  width:100%!important;
  box-sizing:border-box!important;
  margin:14px 0 0!important;
  padding:13px 15px!important;
  border-radius:11px!important;
  background:#fff7e6!important;
  border:1px solid #efd08b!important;
  color:#6d5316!important;
  font-size:13px!important;
  line-height:1.5!important;
  overflow-wrap:anywhere!important;
}
#estimateApprovalModal .approval-actions{
  flex:0 0 auto!important;
  width:100%!important;
  box-sizing:border-box!important;
  display:flex!important;
  justify-content:flex-end!important;
  align-items:center!important;
  gap:10px!important;
  margin:0!important;
  padding:16px 24px!important;
  border-top:1px solid #dfe7ef!important;
  background:#fff!important;
}
#estimateApprovalModal .approval-actions .btn{
  min-height:44px!important;
  padding:10px 18px!important;
  white-space:nowrap!important;
}
@media(max-width:720px){
  #estimateApprovalModal{padding:10px!important;align-items:stretch!important}
  #estimateApprovalModal .approval-modal-dialog{width:100%!important;max-width:none!important;max-height:calc(100vh - 20px)!important;margin:auto!important;border-radius:15px!important}
  #estimateApprovalModal .modal-header{padding:17px 18px!important}
  #estimateApprovalModal .modal-header h2{font-size:20px!important}
  #estimateApprovalModal .approval-modal-body{padding:16px!important}
  #estimateApprovalModal .form-grid{grid-template-columns:1fr!important;gap:0!important}
  #estimateApprovalModal .approval-actions{padding:12px 16px!important;flex-wrap:wrap!important}
  #estimateApprovalModal .approval-actions .btn{flex:1 1 145px!important}
}
@media print{#estimateApprovalModal{display:none!important}}

/* FIX11 Contracts + Change Orders */
.contract-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:16px 0}.contract-panel{padding:18px;border:1px solid var(--border);border-radius:16px;background:#f8fbff;margin:14px 0}.contract-actions{justify-content:flex-end;margin-top:12px}.change-order-heading{margin-top:24px}.co-action{white-space:nowrap}.co-status{font-weight:800}.co-approved{color:#087443}.co-draft{color:#8a5a00}.co-declined{color:#a52a2a}@media(max-width:900px){.contract-summary-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.contract-summary-grid{grid-template-columns:1fr}}

/* FIX13 — Customer Communication Center */
.communication-local-badge{font-size:.78rem;font-weight:800;letter-spacing:.03em;color:var(--muted);background:#f5f7fa;border:1px solid var(--border);border-radius:999px;padding:7px 11px}.communication-compose{padding-top:4px}.communication-actions{margin-top:14px;flex-wrap:wrap}.communication-history-heading{margin-top:28px;padding-top:22px;border-top:1px solid var(--border)}.communication-history-heading h3{margin:0}.communication-status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:.75rem;font-weight:800;background:#eaf7ef;color:#19633a}.communication-card textarea{resize:vertical;min-height:150px}@media(max-width:720px){.communication-local-badge{display:none}.communication-actions .btn{width:100%}}
/* FIX14 — Live Gmail sending */
#gmailStatus{display:inline-flex;align-items:center;min-height:40px;font-weight:700}
#gmailAppPassword{letter-spacing:.08em}
.communication-local-badge{white-space:nowrap}
@media (max-width:720px){#gmailStatus{width:100%}.communication-local-badge{white-space:normal}}

.customer-estimate-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.customer-estimate-actions .action-btn{white-space:nowrap}
@media (max-width:760px){.customer-estimate-actions{min-width:220px}}

.estimate-communication-card{margin-top:28px}
.estimate-communication-help{margin:0 0 18px;color:var(--muted,#64748b)}
.estimate-communication-card .communication-compose{padding-top:8px}
.estimate-communication-card .communication-actions{justify-content:center;margin-top:14px}

.clean-estimate-email-modal[hidden]{display:none!important}
.clean-estimate-email-modal{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;padding:24px}
.clean-email-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.62);backdrop-filter:blur(3px)}
.clean-email-dialog{position:relative;z-index:1;width:min(820px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;background:#fff;border:1px solid #dbe4ee;border-radius:20px;box-shadow:0 30px 90px rgba(15,23,42,.38);padding:28px}
.clean-email-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:18px;border-bottom:1px solid #e5eaf0}
.clean-email-header h2{margin:3px 0 5px;font-size:28px;line-height:1.15;color:#0f172a}
.clean-email-header p{margin:0;color:#64748b}
.clean-email-kicker{font-size:12px;font-weight:800;letter-spacing:.13em;color:#1d5d8f}
.clean-email-close{width:42px;height:42px;border:1px solid #d7e0e9;border-radius:11px;background:#f8fafc;font-size:26px;cursor:pointer}
.clean-email-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0;padding:15px;background:#f7faff;border:1px solid #dce8f5;border-radius:13px}
.clean-email-summary span{display:block;font-size:12px;color:#64748b;margin-bottom:4px}
.clean-email-summary strong{display:block;color:#0f172a;overflow:hidden;text-overflow:ellipsis}
.clean-email-fields{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.clean-email-fields label{display:flex;flex-direction:column;gap:7px;font-weight:700;color:#334155}
.clean-email-fields input,.clean-email-fields textarea{width:100%;padding:12px 14px;border:1px solid #cfd9e5;border-radius:11px;background:#fff;color:#0f172a;font:inherit;outline:none}
.clean-email-fields input:focus,.clean-email-fields textarea:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.clean-email-message{grid-column:1/-1}
.clean-email-included{margin-top:15px;padding:12px 14px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:11px;color:#475569}
.clean-email-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:18px;border-top:1px solid #e5eaf0}
body.estimate-email-open{overflow:hidden}
@media(max-width:720px){.clean-estimate-email-modal{padding:10px}.clean-email-dialog{padding:18px;width:100%;max-height:calc(100vh - 20px)}.clean-email-summary{grid-template-columns:1fr 1fr}.clean-email-fields{grid-template-columns:1fr}.clean-email-message{grid-column:auto}}


/* AI Estimate Builder V1 */
.ai-estimate-card{border:1px solid #cfe0f2;background:linear-gradient(180deg,#fbfdff 0%,#f5f9fd 100%)}
.ai-estimate-badge{display:inline-flex;align-items:center;padding:7px 11px;border-radius:999px;background:#eaf4ff;color:#174f7a;font-size:.78rem;font-weight:800;letter-spacing:.03em}
.ai-estimate-help{margin:0 0 16px;color:var(--muted,#64748b)}
.ai-estimate-card textarea{width:100%;resize:vertical;min-height:120px}
.ai-estimate-options{display:flex;gap:18px;flex-wrap:wrap;margin:14px 0;color:#334155;font-weight:650}
.ai-estimate-options label{display:flex;align-items:center;gap:7px}
.ai-estimate-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.ai-estimate-status{margin-top:14px;padding:11px 13px;border:1px solid #dce8f5;border-radius:10px;background:#fff;color:#526274;font-size:.9rem}
.ai-estimate-status.is-success{border-color:#b8dfc9;background:#f0fbf5;color:#17633a}
.ai-estimate-status.is-error{border-color:#f0c6c6;background:#fff5f5;color:#9a2929}
@media(max-width:720px){.ai-estimate-actions .btn{width:100%}.ai-estimate-options{display:grid;gap:10px}}

/* AI Estimate Builder V2 */
.ai-question-panel,.ai-pricing-panel{margin-top:18px;padding:18px;border:1px solid #d9e4ef;border-radius:14px;background:#f8fbfe}.ai-question-panel[hidden],.ai-pricing-panel[hidden]{display:none}.ai-question-head,.ai-panel-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.ai-question-head span,.ai-panel-title span,.ai-price-note{font-size:13px;color:#64748b}.ai-question-grid,.ai-pricing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ai-question-grid label,.ai-pricing-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:#334155}.ai-question-grid input,.ai-question-grid select,.ai-pricing-grid input,.ai-pricing-grid select{width:100%;min-height:44px;padding:9px 11px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;color:#0f172a}.ai-question-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.ai-price-note{margin-top:12px;line-height:1.45}.ai-source-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.ai-source-links a{font-size:12px;font-weight:700;text-decoration:none;padding:6px 9px;border:1px solid #cbd5e1;border-radius:8px;background:white;color:#1e3a5f}@media(max-width:760px){.ai-question-grid,.ai-pricing-grid{grid-template-columns:1fr}.ai-question-head,.ai-panel-title{align-items:flex-start;flex-direction:column}}

/* AI Estimate Builder V3 — verified material pricing */
.ai-live-price-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}.ai-provider-status{font-size:12px;color:#64748b}.ai-live-pricing-results{margin-top:14px;display:grid;gap:12px}.ai-live-pricing-results[hidden]{display:none}.ai-price-group{border:1px solid #dbe5ef;border-radius:12px;background:#fff;padding:12px}.ai-price-group h4{margin:0 0 10px;font-size:14px}.ai-product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.ai-product-card{border:1px solid #dbe5ef;border-radius:10px;padding:10px;background:#fbfdff;display:flex;flex-direction:column;gap:7px}.ai-product-title{font-size:12px;font-weight:800;line-height:1.35}.ai-product-meta{font-size:11px;color:#64748b}.ai-product-price{font-size:16px;font-weight:900}.ai-product-card button{margin-top:auto}.ai-locked-price{font-size:11px;font-weight:800;color:#17633a}.ai-price-error{padding:10px;border-radius:9px;background:#fff5f5;color:#9a2929;font-size:12px}@media(max-width:900px){.ai-product-grid{grid-template-columns:1fr}}

/* =========================================================
   UNIVERSAL EMAIL CONNECTION V6A
   ========================================================= */
.email-connection-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;border:1px solid #d9e4ef;border-radius:16px;background:#f8fbfe;margin:16px 0 18px}.email-connection-label{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#708197}.email-connection-identity{font-size:20px;font-weight:800;color:#152238;margin-top:3px}.email-connection-badge{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:800;background:#eef2f6;color:#5f6f82}.email-connection-badge.connected{background:#eaf8ef;color:#176b3a}.email-provider-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:12px 0 18px}.email-provider-card{appearance:none;border:1px solid #d5e1ec;background:#fff;border-radius:16px;padding:18px;text-align:left;cursor:pointer;box-shadow:0 4px 14px rgba(32,57,83,.05);transition:.15s ease;color:#16263c}.email-provider-card:hover{transform:translateY(-1px);border-color:#87acd0;box-shadow:0 8px 20px rgba(32,57,83,.09)}.email-provider-card strong,.email-provider-card span,.email-provider-card small{display:block}.email-provider-card strong{font-size:17px;margin-bottom:5px}.email-provider-card span{font-size:13px;font-weight:700;color:#435a73}.email-provider-card small{font-size:12px;color:#7b8ca0;margin-top:8px}.email-provider-card[disabled]{cursor:not-allowed;opacity:.58;transform:none}.email-smtp-panel{border:1px solid #dbe5ee;border-radius:16px;padding:18px;background:#fbfdff;margin:12px 0 18px}.compact-heading{margin-bottom:8px}.email-test-grid{align-items:end}.email-legacy-details{margin-top:12px;border-top:1px solid #e4ebf2;padding-top:12px}.email-legacy-details summary{cursor:pointer;font-weight:800;color:#38536f}@media(max-width:850px){.email-provider-grid{grid-template-columns:1fr}.email-connection-summary{align-items:flex-start;flex-direction:column}}
.email-auto-connect-actions{margin:12px 0 4px;align-items:center;flex-wrap:wrap}.email-auto-connect-actions .job-help-text{max-width:760px}

/* AI ESTIMATE WORKSPACE V6 — cleaner review-first workflow */
.ai-workspace-summary{margin-top:18px;border:1px solid #d9e4ef;border-radius:18px;background:#fff;padding:20px;box-shadow:0 10px 30px rgba(15,23,42,.05)}
.ai-workspace-summary[hidden]{display:none}
.ai-workspace-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;padding-bottom:18px;border-bottom:1px solid #e7edf4}
.ai-kicker{display:block;font-size:11px;font-weight:850;letter-spacing:.12em;color:#64748b;margin-bottom:5px}
.ai-workspace-summary h3{margin:0;font-size:1.3rem;color:#0f172a}.ai-workspace-summary p{margin:6px 0 0;color:#64748b;font-size:.9rem}
.ai-summary-total{text-align:right}.ai-summary-total span,.ai-summary-metrics span{display:block;color:#64748b;font-size:.78rem;font-weight:700;margin-bottom:5px}.ai-summary-total strong{font-size:1.8rem;color:#0f172a}
.ai-summary-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:16px 0}.ai-summary-metrics>div{padding:13px 14px;border-radius:12px;background:#f7f9fc;border:1px solid #e7edf4}.ai-summary-metrics strong{font-size:1.05rem;color:#0f172a}
.ai-summary-actions{display:flex;gap:10px;flex-wrap:wrap}
.estimate-items-card .table-wrapper{border:1px solid #e5eaf0;border-radius:14px;overflow:auto}.estimate-items-card #estimateTable{font-size:.92rem}.estimate-items-card #estimateTable th{font-size:.73rem;letter-spacing:.04em;color:#64748b;background:#f8fafc}.estimate-items-card #estimateTable input,.estimate-items-card #estimateTable select{min-height:40px;padding:8px 10px;border-radius:9px}.estimate-items-card .item-material,.estimate-items-card .item-labor{font-variant-numeric:tabular-nums}
@media(max-width:760px){.ai-workspace-summary-head{flex-direction:column}.ai-summary-total{text-align:left}.ai-summary-metrics{grid-template-columns:1fr}.ai-summary-actions .btn{width:100%}}

/* AI ESTIMATE V6.1 — one-question-at-a-time popup interview */
.ai-question-modal{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:20px}.ai-question-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(4px)}.ai-question-dialog{position:relative;z-index:1;width:min(620px,calc(100vw - 28px));background:#fff;border:1px solid #dbe4ee;border-radius:22px;box-shadow:0 30px 90px rgba(15,23,42,.35);padding:28px}.ai-popup-progress{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:12px;font-weight:850;letter-spacing:.08em;color:#64748b}.ai-popup-progressbar{height:6px;background:#e8eef5;border-radius:999px;overflow:hidden;margin:12px 0 26px}.ai-popup-progressbar i{display:block;height:100%;background:#2563eb;border-radius:999px;transition:width .2s ease}.ai-question-dialog h2{margin:0;color:#0f172a;font-size:1.55rem;line-height:1.25}.ai-question-dialog>p{margin:9px 0 20px;color:#64748b}.ai-popup-options{display:grid;gap:10px}.ai-popup-choice{width:100%;text-align:left;padding:14px 16px;border:1px solid #d7e1ec;border-radius:13px;background:#fff;color:#1e293b;font:inherit;font-weight:700;cursor:pointer;transition:.12s ease}.ai-popup-choice:hover{border-color:#8ab4dd;background:#f7fbff}.ai-popup-choice.selected{border-color:#2563eb;background:#eff6ff;box-shadow:0 0 0 3px rgba(37,99,235,.10)}.ai-popup-input{width:100%;min-height:52px;padding:12px 14px;border:1px solid #cbd5e1;border-radius:13px;background:#fff;color:#0f172a;font:inherit;font-size:1rem}.ai-popup-input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}.ai-popup-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:26px;padding-top:18px;border-top:1px solid #e8edf3}body.ai-question-modal-open{overflow:hidden}@media(max-width:640px){.ai-question-modal{padding:10px}.ai-question-dialog{padding:20px;border-radius:18px}.ai-popup-actions{display:grid;grid-template-columns:1fr 1fr}.ai-popup-actions .btn{width:100%}.ai-popup-actions #aiPopupNext{grid-column:1/-1;grid-row:1}}

/* ========================================
   AI ESTIMATE RESULTS WORKSPACE V6.5
======================================== */
.ai-results-grid{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(360px,1.2fr);gap:16px;margin-top:18px}
.ai-results-panel{border:1px solid #e2e8f0;border-radius:16px;background:#f8fafc;padding:16px}
.ai-results-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.ai-results-title h4{margin:0;font-size:1rem;color:#0f172a}.ai-text-btn{border:0;background:transparent;color:#1d4ed8;font-weight:700;cursor:pointer;padding:6px 4px}.ai-text-btn:hover{text-decoration:underline}
.ai-cost-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #e2e8f0;color:#475569}.ai-cost-row strong{color:#0f172a}.ai-cost-total{border-bottom:0;padding-top:14px;font-size:1.05rem}.ai-cost-total strong{font-size:1.15rem}
.ai-project-breakdown{display:grid;gap:9px}.ai-breakdown-item{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:12px 14px}.ai-breakdown-item strong{display:block;color:#0f172a;margin-bottom:4px}.ai-breakdown-item span{color:#64748b;font-size:.88rem;line-height:1.45}
.ai-edit-modal{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:20px}.ai-edit-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.58);backdrop-filter:blur(2px)}.ai-edit-dialog{position:relative;width:min(620px,100%);background:#fff;border-radius:20px;padding:22px;box-shadow:0 28px 80px rgba(15,23,42,.3)}.ai-edit-dialog h2{margin:0 0 6px;color:#0f172a}.ai-edit-dialog p{margin:0 0 14px;color:#64748b}.ai-edit-dialog textarea{width:100%;min-height:120px;resize:vertical;border:1px solid #cbd5e1;border-radius:12px;padding:12px;font:inherit}.ai-edit-examples{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.ai-edit-chip{border:1px solid #dbeafe;background:#eff6ff;color:#1e40af;border-radius:999px;padding:7px 10px;font-size:.8rem;cursor:pointer}.ai-edit-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}.ai-edit-feedback{min-height:20px;margin-top:10px;color:#475569;font-size:.88rem}.ai-edit-feedback.is-error{color:#b91c1c}.ai-edit-feedback.is-success{color:#166534}
@media(max-width:820px){.ai-results-grid{grid-template-columns:1fr}.ai-edit-dialog{padding:18px}}

/* AI Estimate V6.6 — photos/plans + conditional interview */
.ai-reference-block{margin:14px 0 4px;padding:16px;border:1px solid #d9e4ef;border-radius:14px;background:#fff}
.ai-reference-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.ai-reference-head>div{display:flex;flex-direction:column;gap:3px}.ai-reference-head strong{color:#0f172a}.ai-reference-head span,.ai-reference-note{font-size:12px;color:#64748b}.ai-reference-dropzone{padding:18px;border:1.5px dashed #b9c9d9;border-radius:12px;background:#f8fbfe;text-align:center;color:#64748b;font-size:13px;cursor:pointer}.ai-reference-dropzone.dragover{border-color:#2563eb;background:#eff6ff;color:#1d4ed8}.ai-reference-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin-top:12px}.ai-reference-list[hidden]{display:none}.ai-reference-item{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #e2e8f0;border-radius:11px;background:#fff;min-width:0}.ai-reference-thumb{width:42px;height:42px;border-radius:8px;object-fit:cover;background:#eef2f7;display:grid;place-items:center;font-size:20px;flex:0 0 42px}.ai-reference-meta{min-width:0;flex:1}.ai-reference-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:750;color:#1e293b}.ai-reference-size{font-size:11px;color:#64748b}.ai-reference-remove{border:0;background:transparent;color:#94a3b8;font-size:18px;cursor:pointer}.ai-reference-note{margin:9px 0 0;line-height:1.4}@media(max-width:640px){.ai-reference-head{align-items:stretch;flex-direction:column}.ai-reference-head .btn{width:100%}}


/* V6.7 — AI builder is an onboarding step, not permanent page chrome */
.ai-estimate-card.ai-has-draft > .section-heading,
.ai-estimate-card.ai-has-draft > .ai-estimate-help,
.ai-estimate-card.ai-has-draft > .form-group,
.ai-estimate-card.ai-has-draft > .ai-reference-block,
.ai-estimate-card.ai-has-draft > .ai-estimate-options,
.ai-estimate-card.ai-has-draft > .ai-estimate-actions,
.ai-estimate-card.ai-has-draft > #aiEstimateQuestions,
.ai-estimate-card.ai-has-draft > #aiPricingPanel,
.ai-estimate-card.ai-has-draft > #aiEstimateStatus { display:none !important; }
.ai-estimate-card.ai-has-draft { padding-top: 24px; }
.action-ai-edit { white-space: nowrap; }


/* V6.9 Contractor Cost Engine */
.ai-cost-engine-dialog{max-width:860px;max-height:88vh;overflow:auto}.ai-cost-engine-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0}.ai-cost-engine-grid label{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:.85rem}.ai-cost-engine-grid input{width:100%;padding:10px 11px;border:1px solid var(--border,#d9dee7);border-radius:9px;background:var(--panel,#fff);color:inherit}.ai-confidence-panel{margin-top:16px;padding:18px;border:1px solid var(--border,#d9dee7);border-radius:14px;background:rgba(255,255,255,.02)}.ai-confidence-row{display:flex;justify-content:space-between;gap:18px;padding:10px 0;border-bottom:1px solid rgba(128,128,128,.18)}.ai-confidence-row:last-child{border-bottom:0}.ai-confidence-row strong{font-size:.85rem;text-align:right}.ai-confidence-row.is-warning strong{font-weight:600}@media(max-width:760px){.ai-cost-engine-grid{grid-template-columns:1fr}.ai-confidence-row{flex-direction:column;gap:4px}.ai-confidence-row strong{text-align:left}}

/* V7.0 U.S. Local Market Cost Engine */
.ai-market-rate-panel{margin-top:14px;border:1px solid var(--border,#d9dee7);border-radius:14px;padding:14px;background:var(--panel,#fff)}
.ai-market-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:12px}.ai-market-head>div{display:flex;flex-direction:column;gap:3px}.ai-market-head span,.ai-market-row small,.ai-market-note{color:var(--muted,#667085);font-size:12px}.ai-market-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px}.ai-market-row{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:9px 10px;border:1px solid var(--border,#e5e7eb);border-radius:10px}.ai-market-row small{grid-column:1/-1}.ai-market-note{margin:10px 0 0;line-height:1.45}
@media(max-width:700px){.ai-market-head{flex-direction:column}}

/* V7.0.7 — make generated takeoff costs unmistakably visible/editable */
.estimate-items-card #estimateTable .item-description{color:#0f172a!important;background:#fff!important;font-weight:700;min-width:260px}
.estimate-items-card #estimateTable .item-quantity,.estimate-items-card #estimateTable .item-material,.estimate-items-card #estimateTable .item-labor,.estimate-items-card #estimateTable .item-unit{color:#0f172a!important;background:#fff!important}
.estimate-items-card .item-cost-cell{min-width:150px;vertical-align:top}
.estimate-items-card .item-cost-caption{margin-top:4px;font-size:10px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:#64748b}
.estimate-items-card .item-component-total{margin-top:3px;font-size:11px;font-weight:800;color:#334155;white-space:nowrap}
.estimate-items-card .item-total{font-size:.95rem;color:#0f172a}


/* V7.0.9 — grouped contractor cost estimator workspace */
.sw-estimator-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px;padding:12px 0}.sw-estimator-toolbar h4,.sw-section-title h4{margin:0;font-size:1.05rem;color:#111827}
.sw-cost-head{display:grid;grid-template-columns:minmax(260px,1fr) 90px 130px 120px 120px;gap:12px;padding:10px 16px;color:#667085;font-size:12px;font-weight:800;border-bottom:1px solid #e5e7eb}
.sw-cost-table{display:grid;gap:16px;margin-top:10px}.sw-cost-group{border:1px solid #e3e7ed;border-radius:14px;background:#fff;overflow:hidden}.sw-group-head{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px;background:#f8fafc;border-bottom:1px solid #e5e7eb}.sw-group-head>div{display:flex;flex-direction:column;gap:3px}.sw-group-head small{color:#667085}.sw-group-items{display:grid}.sw-cost-item{display:grid;grid-template-columns:minmax(260px,1fr) 90px 130px 120px 120px;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid #eef1f4}.sw-item-name{font-weight:700;color:#1f2937}.sw-cost-item input,.sw-cost-item select{width:100%;min-height:38px;border:1px solid #d0d5dd;border-radius:8px;padding:7px 9px;background:#fff}.sw-price-wrap{display:flex;align-items:center;gap:5px}.sw-price-wrap span{color:#667085}.sw-line-total{text-align:right}.sw-unit-label{grid-column:2/3;font-size:11px;color:#667085;margin-top:-10px}.sw-ai-suggestions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 16px 14px}.sw-ai-suggestions span{font-size:11px;font-weight:800;color:#667085;margin-right:4px}.sw-ai-suggestions button{border:0;background:#eef2f6;border-radius:999px;padding:6px 10px;font-size:11px;color:#475467;cursor:pointer}.sw-ai-suggestions button:hover{background:#e0e7ef}.sw-grand-total{display:flex;justify-content:flex-end;align-items:center;gap:22px;padding:20px 4px;font-size:1.15rem}.sw-grand-total strong{font-size:1.5rem}.sw-project-section{margin-top:24px;border-top:1px solid #e5e7eb;padding-top:20px}.sw-section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.sw-breakdown .ai-breakdown-item{border:0;border-bottom:1px solid #eef1f4;border-radius:0;padding:14px 0}.sw-notes{width:100%;border:1px solid #d0d5dd;border-radius:10px;padding:12px;font:inherit;resize:vertical}.sw-empty{padding:18px;color:#667085;text-align:center}
@media(max-width:900px){.sw-cost-head{display:none}.sw-cost-item{grid-template-columns:1fr 80px 120px}.sw-item-name{grid-column:1/-1}.sw-cost-item .sw-type{grid-column:1/2}.sw-line-total{grid-column:3/4}.sw-unit-label{grid-column:2/3}.sw-group-head{align-items:flex-start}}


/* V7.1.0 — trade-by-trade Project Breakdown inspired by the supplied workflow */
.sw-breakdown{display:grid;gap:14px!important}.sw-breakdown-card{border:1px solid #d9dee7;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 1px 2px rgba(16,24,40,.03)}.sw-breakdown-head{min-height:64px;display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #e6e9ef;background:#fff}.sw-breakdown-head>strong{font-size:15px;color:#101828;flex:1}.sw-breakdown-toggle{border:0;background:transparent;color:#667085;font-size:20px;line-height:1;cursor:pointer;padding:4px 6px}.sw-breakdown-actions{display:flex;align-items:center;gap:10px}.sw-breakdown-edit{border:1px solid #d0d5dd;background:#fff;border-radius:9px;padding:8px 13px;font-weight:700;color:#344054;cursor:pointer}.sw-breakdown-edit:hover{background:#f8fafc}.sw-breakdown-delete{border:0;background:transparent;color:#d92d20;font-size:15px;cursor:pointer;padding:7px}.sw-breakdown-body{padding:13px 22px 17px}.sw-breakdown-body ul{margin:0;padding-left:21px;display:grid;gap:12px}.sw-breakdown-body li{color:#25324b;line-height:1.55;padding-left:3px}.sw-breakdown-body li::marker{color:#087fc5;font-size:1.15em}.sw-breakdown-empty{border:1px dashed #d0d5dd;border-radius:12px;padding:24px;color:#667085;text-align:center}.sw-section-title h4{font-size:20px;margin:0}.sw-section-title{align-items:flex-start}.sw-section-title::after{content:'Here’s what your project will include by trade';display:block;position:absolute;margin-top:30px;color:#667085;font-size:13px}.sw-project-section{position:relative;padding-top:26px}.sw-project-section .sw-breakdown{margin-top:30px}
@media(max-width:760px){.sw-breakdown-head{align-items:flex-start}.sw-breakdown-actions{gap:4px}.sw-breakdown-delete{display:none}.sw-breakdown-body{padding:12px 16px 16px}.sw-breakdown-body ul{padding-left:18px}}


/* V7.1.1 — RL Home Fix original estimator interface.
   Uses common multi-step estimating patterns without reproducing another product's visual identity. */
.rl-estimate-flow{display:grid;grid-template-columns:auto 1fr auto 1fr auto 1fr auto 1fr auto;align-items:center;gap:10px;margin:4px 0 22px;padding:16px 18px;border:1px solid #dbe6ee;border-radius:16px;background:linear-gradient(135deg,#f8fbfd 0%,#fff 70%)}
.rl-flow-step{min-width:104px;display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto;column-gap:9px;align-items:center;color:#667085}
.rl-flow-step>span{grid-row:1/3;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:#edf2f6;color:#475467;font-weight:800;border:1px solid #d8e0e8}
.rl-flow-step strong{font-size:13px;line-height:1.1;color:#475467}.rl-flow-step small{font-size:10px;line-height:1.2;margin-top:3px;color:#98a2b3}
.rl-flow-step.is-active>span{background:#123b53;color:#fff;border-color:#123b53;box-shadow:0 0 0 4px rgba(18,59,83,.09)}
.rl-flow-step.is-active strong{color:#123b53}.rl-flow-step.is-complete>span{background:#e6f4ef;color:#18794e;border-color:#b7dfcf}.rl-flow-step.is-complete>span::after{content:'✓';font-size:14px}.rl-flow-step.is-complete>span{font-size:0}
.rl-flow-connector{height:3px;min-width:18px;border-radius:99px;background:#e5eaf0}.rl-flow-connector.is-complete{background:#82c8ac}
.ai-workspace-summary{border-top:5px solid #123b53!important}.sw-estimator-toolbar{padding:4px 0 12px}.sw-estimator-toolbar h4{font-size:20px!important;letter-spacing:-.01em}
.sw-cost-group{border-radius:16px!important;border-color:#dfe7ed!important}.sw-group-head{background:#f7fafb!important;border-left:5px solid #2a7f86;padding-left:14px!important}.sw-group-head>div strong{color:#123b53}.sw-ai-suggestions button{background:#edf6f5!important;color:#226b70!important}.sw-ai-suggestions button:hover{background:#dcefed!important}
.sw-project-section{border-top:0!important;background:#f8fafb;border:1px solid #e0e7ec;border-radius:18px;padding:20px!important;margin-top:26px!important}.sw-project-section .sw-breakdown{margin-top:28px!important}.sw-section-title::after{content:'Work plan organized by trade'!important}
.sw-breakdown-card{border-radius:16px!important;border-left:5px solid #2a7f86!important}.sw-breakdown-head{background:#fbfcfd!important}.sw-breakdown-head>strong{font-size:16px!important;color:#123b53!important}.sw-breakdown-edit{color:#176f76!important;border-color:#b9d7d9!important}.sw-breakdown-edit:hover{background:#edf7f7!important}.sw-breakdown-body li::marker{color:#2a7f86!important}
@media(max-width:980px){.rl-estimate-flow{grid-template-columns:1fr;gap:7px}.rl-flow-connector{width:3px;height:14px;margin-left:16px}.rl-flow-step{min-width:0}}

/* =========================================================
   V8.0.5 — RL HOME FIX LEFT SIDEBAR NAVIGATION
   UI-only redesign. Existing navigation IDs and application
   logic are preserved.
========================================================= */
:root{--sidebar-width:270px;--sidebar-bg:#123d61;--sidebar-bg-2:#0d2f4c;--sidebar-line:rgba(255,255,255,.10);--sidebar-text:#eef6fc;--sidebar-muted:#9fb5c8;--sidebar-active:#f2b84b;}
body{padding-left:var(--sidebar-width);min-height:100vh;}
.app-header.app-sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--sidebar-width);height:100vh;padding:0;background:linear-gradient(180deg,var(--sidebar-bg) 0%,var(--sidebar-bg-2) 100%);z-index:1000;overflow-y:auto;overflow-x:hidden;box-shadow:8px 0 28px rgba(15,35,55,.12);}
.app-sidebar::after{display:none!important;}
.app-sidebar .sidebar-content{max-width:none;margin:0;min-height:100%;padding:24px 18px 18px;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;}
.app-sidebar .sidebar-brand{display:flex;align-items:center;gap:12px;padding:2px 6px 22px;margin-bottom:12px;border-bottom:1px solid var(--sidebar-line);}
.app-sidebar .header-brand-copy{min-width:0;}
.app-sidebar .header-company-logo{width:48px;height:48px;flex:0 0 48px;border-radius:13px;font-size:17px;box-shadow:none;}
.app-sidebar .eyebrow{margin:0 0 3px;font-size:9px;letter-spacing:1.35px;color:#bed0df;opacity:1;white-space:nowrap;}
.app-sidebar h1{font-size:18px;line-height:1.15;margin:0;color:#fff;letter-spacing:-.2px;}
.app-sidebar .subtitle{font-size:11px;margin:4px 0 0;color:var(--sidebar-muted);}
.sidebar-nav{display:flex;flex-direction:column;gap:5px;flex:1;}
.sidebar-group{padding:8px 0 10px;border-bottom:1px solid rgba(255,255,255,.065);}
.sidebar-group:last-child{border-bottom:0;}
.sidebar-group-title{margin:0 10px 7px;color:#82a2ba;font-size:10px;font-weight:900;letter-spacing:1.25px;text-transform:uppercase;}
.sidebar-link{width:100%;min-height:42px;display:flex;align-items:center;gap:11px;padding:9px 11px;margin:2px 0;border:0;border-radius:10px;background:transparent;color:var(--sidebar-text);font:inherit;font-size:13.5px;font-weight:750;text-decoration:none;text-align:left;cursor:pointer;transition:background .16s ease,color .16s ease,transform .16s ease;}
.sidebar-link:hover{background:rgba(255,255,255,.09);color:#fff;transform:translateX(2px);}
.sidebar-link.active{background:rgba(255,255,255,.12);color:#fff;}
.sidebar-link-accent{background:var(--sidebar-active);color:#143754;font-weight:900;box-shadow:0 6px 18px rgba(0,0,0,.12);}
.sidebar-link-accent:hover{background:#f6c660;color:#143754;}
.sidebar-icon{width:22px;height:22px;display:inline-grid;place-items:center;flex:0 0 22px;font-size:16px;line-height:1;}
.sidebar-footer{padding-top:10px;margin-top:auto;border-top:1px solid var(--sidebar-line);}
.sidebar-logout{color:#d7e4ee;}
.sidebar-context-print{display:none!important;}
body.printing-estimate{padding-left:0!important;}
.container{max-width:1500px;margin:28px auto;padding:0 32px;}

/* Keep the selected navigation item visually synchronized with app views. */
body:has(#dashboardView:not([hidden])) #dashboardBtn,
body:has(#savedEstimatesView:not([hidden])) #savedEstimatesBtn,
body:has(#customersView:not([hidden])) #customersBtn,
body:has(#jobsView:not([hidden])) #jobsBtn,
body:has(#calendarView:not([hidden])) #calendarBtn,
body:has(#workersView:not([hidden])) #workersBtn,
body:has(#documentsView:not([hidden])) #documentsBtn,
body:has(#settingsView:not([hidden])) #settingsBtn,
body:has(#reportsView:not([hidden])) #reportsBtn,
body:has(#invoicesView:not([hidden])) #invoicesBtn{background:rgba(255,255,255,.14);color:#fff;}

@media(max-width:900px){
  :root{--sidebar-width:84px;}
  .app-sidebar .sidebar-content{padding:18px 10px;}
  .app-sidebar .sidebar-brand{justify-content:center;padding:0 0 18px;}
  .app-sidebar .header-brand-copy,.sidebar-group-title,.sidebar-link span:not(.sidebar-icon){display:none;}
  .app-sidebar .header-company-logo{width:46px;height:46px;flex-basis:46px;}
  .sidebar-link{justify-content:center;padding:10px;}
  .sidebar-icon{width:28px;height:28px;flex-basis:28px;font-size:18px;}
  .container{padding:0 20px;}
}
@media(max-width:620px){
  body{padding-left:0;padding-bottom:76px;}
  .app-header.app-sidebar{top:auto;right:0;bottom:0;width:100%;height:70px;overflow:visible;background:#123d61;box-shadow:0 -5px 22px rgba(15,35,55,.16);}
  .app-sidebar .sidebar-content{padding:7px 8px;min-height:70px;display:block;}
  .app-sidebar .sidebar-brand,.sidebar-group-title,.sidebar-footer,.sidebar-group:nth-of-type(n+3){display:none;}
  .sidebar-nav{height:56px;display:grid;grid-template-columns:repeat(5,1fr);gap:4px;}
  .sidebar-group{display:contents;border:0;padding:0;}
  .sidebar-link{min-height:54px;margin:0;padding:5px 2px;justify-content:center;flex-direction:column;gap:2px;border-radius:9px;font-size:9px;}
  .sidebar-link span:not(.sidebar-icon){display:block;white-space:nowrap;}
  .sidebar-icon{width:20px;height:20px;flex-basis:20px;font-size:16px;}
  #customersBtn,#invoicesBtn,#savedEstimatesBtn{display:none;}
  .container{margin:18px auto;padding:0 12px;}
}
@media print{
  body{padding-left:0!important;}
  .app-header.app-sidebar{display:none!important;}
}


/* ==========================================
   V8.0.7 — SAVED ESTIMATE MORE ACTIONS MENU
========================================== */
.saved-actions {
  position: relative;
  gap: 8px;
  overflow: visible;
}

.estimate-more-menu {
  position: relative;
  display: inline-block;
}

.estimate-more-menu > summary {
  list-style: none;
}

.estimate-more-menu > summary::-webkit-details-marker {
  display: none;
}

.action-more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-width: 82px;
  background: #f1f5f4;
  color: #173d32;
  border: 1px solid #d8e3df;
}

.action-more:hover,
.estimate-more-menu[open] .action-more {
  background: #e4efeb;
  border-color: #bdd2ca;
}

.more-dots {
  letter-spacing: 2px;
  font-size: 14px;
  line-height: 1;
}

.estimate-more-popover {
  position: absolute;
  z-index: 1200;
  top: calc(100% + 9px);
  right: 0;
  width: 310px;
  padding: 10px;
  background: #fff;
  border: 1px solid #dfe7e4;
  border-radius: 14px;
  box-shadow: 0 18px 48px rgba(20, 46, 38, .18);
  white-space: normal;
}

.estimate-menu-heading {
  padding: 8px 10px 5px;
  color: #788780;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.estimate-menu-item {
  width: 100%;
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: 10px;
  align-items: center;
  padding: 10px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: #17231f;
  text-align: left;
  cursor: pointer;
}

.estimate-menu-item:hover {
  background: #f3f8f6;
}

.estimate-menu-item strong,
.estimate-menu-item small {
  display: block;
}

.estimate-menu-item strong {
  font-size: 13px;
  line-height: 1.25;
}

.estimate-menu-item small {
  margin-top: 2px;
  color: #718079;
  font-size: 10px;
  line-height: 1.3;
}

.estimate-menu-icon {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: #edf5f1;
  color: #1f755d;
  font-weight: 900;
}

.estimate-menu-divider {
  height: 1px;
  margin: 7px 6px;
  background: #edf1ef;
}

.estimate-menu-danger {
  color: #b9362e;
}

.estimate-menu-danger:hover {
  background: #fff2f1;
}

.estimate-menu-danger .estimate-menu-icon {
  background: #fff0ee;
  color: #c53e34;
}

.saved-estimates-table td:last-child {
  overflow: visible;
}

@media (max-width: 900px) {
  .estimate-more-popover {
    right: auto;
    left: 0;
    width: min(310px, calc(100vw - 40px));
  }
}


/* V8.0.9 — company-uploaded logo only */
.header-company-logo.no-company-logo{display:none!important;}
.app-sidebar .header-company-logo{background:transparent!important;color:transparent!important;box-shadow:none!important;}
.app-sidebar .header-company-logo img{width:100%;height:100%;object-fit:contain;background:#fff;border-radius:12px;}
.settings-logo-empty{font-size:12px;line-height:1.25;text-align:center;color:#667788;font-weight:700;padding:10px;}

/* V8.0.10 — remove legacy hard-coded RL badge from sidebar branding */
.app-sidebar .header-content > div:first-child::before{
  content:none!important;
  display:none!important;
}
.app-sidebar .header-content > div:first-child{
  padding-left:0!important;
}


/* =========================================================
   V8.1.0 — PROJECT PIPELINE DASHBOARD
   UI-only layer. Keeps V8.0.x estimate/pricing/save logic intact.
   ========================================================= */
.dashboard-pipeline-card{
  margin:0 0 22px;
  padding:22px;
  border:1px solid #d8e3ec;
  border-radius:20px;
  background:linear-gradient(145deg,#ffffff 0%,#f8fbfd 100%);
  box-shadow:0 10px 30px rgba(20,55,85,.06);
}
.dashboard-pipeline-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px;}
.dashboard-pipeline-head h3{margin:2px 0 5px;color:#142d45;font-size:1.35rem;letter-spacing:-.025em;}
.dashboard-pipeline-head p{margin:0;color:#738196;}
.dashboard-new-estimate{white-space:nowrap;text-decoration:none;}
.dashboard-pipeline{display:grid;grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr) 26px minmax(0,1fr) 26px minmax(0,1fr) 26px minmax(0,1fr);align-items:center;gap:8px;}
.pipeline-stage{
  position:relative;min-height:126px;padding:16px;text-align:left;border:1px solid #d7e2eb;border-radius:16px;background:#fff;color:#17334f;cursor:pointer;
  box-shadow:0 4px 12px rgba(20,55,85,.035);transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;
}
.pipeline-stage:hover{transform:translateY(-2px);border-color:#8fb0c8;box-shadow:0 9px 20px rgba(20,55,85,.08);}
.pipeline-step{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#eaf2f7;color:#1e5a86;font-size:.72rem;font-weight:900;margin-bottom:12px;}
.pipeline-label{display:block;color:#61748a;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.055em;margin-bottom:4px;}
.pipeline-stage strong{display:block;font-size:1.75rem;line-height:1;color:#15334f;margin:5px 0 7px;}
.pipeline-stage small{display:block;color:#79899a;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pipeline-arrow{display:grid;place-items:center;color:#9cabb8;font-size:1.15rem;font-weight:800;}
.dashboard-attention{display:flex;flex-wrap:wrap;gap:10px;margin-top:17px;padding-top:16px;border-top:1px solid #e5edf3;}
.dashboard-attention button{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:999px;background:#f1f5f8;color:#51677c;padding:8px 12px;font:inherit;font-size:.78rem;font-weight:700;cursor:pointer;}
.dashboard-attention button:hover{background:#e8f0f5;color:#173d5c;}
.dashboard-attention strong{color:#17334f;}
.attention-dot{width:8px;height:8px;border-radius:50%;background:#2b8b67;box-shadow:0 0 0 3px rgba(43,139,103,.11);}
.attention-dot.warning{background:#d39a2e;box-shadow:0 0 0 3px rgba(211,154,46,.13);}
.attention-dot.neutral{background:#66829b;box-shadow:0 0 0 3px rgba(102,130,155,.12);}
@media(max-width:1200px){
  .dashboard-pipeline{grid-template-columns:repeat(5,minmax(150px,1fr));overflow-x:auto;padding-bottom:6px;}
  .pipeline-arrow{display:none;}
}
@media(max-width:720px){
  .dashboard-pipeline-head{display:block;}
  .dashboard-new-estimate{display:inline-flex;margin-top:14px;}
  .dashboard-pipeline{grid-template-columns:repeat(5,170px);}
  .dashboard-pipeline-card{padding:16px;border-radius:16px;}
}
\n\n/* =========================================================\n   V8.1.1 — UNIFIED NAVIGATION + FULL-PAGE INVOICE WORKSPACE\n   UI only: no pricing/save calculations are changed.\n========================================================= */\n.app-sidebar .sidebar-link-accent{background:transparent;color:var(--sidebar-text);box-shadow:none;}\n.app-sidebar .sidebar-link-accent:hover{background:rgba(255,255,255,.09);color:#fff;}\n.app-sidebar .sidebar-link.active{background:rgba(242,184,75,.18);color:#fff;box-shadow:inset 3px 0 0 #f2b84b;}\n\n/* Make direct invoice creation feel like a normal app workspace, not a popup. */\n#newInvoiceModal{\n  left:var(--sidebar-width);\n  right:0;\n  top:0;\n  bottom:0;\n  width:auto;\n  height:100vh;\n  padding:0;\n  align-items:stretch;\n  justify-content:stretch;\n  background:#f4f7fa;\n  backdrop-filter:none;\n  -webkit-backdrop-filter:none;\n  z-index:900;\n}\n#newInvoiceModal .invoice-create-modal{\n  width:100%;\n  height:100vh;\n  max-height:none;\n  border:0;\n  border-radius:0;\n  box-shadow:none;\n  background:#f4f7fa;\n}\n#newInvoiceModal .modal-header{\n  padding:28px clamp(24px,4vw,58px) 22px;\n  background:#fff;\n  color:#102a43;\n  border-bottom:1px solid #dce5ed;\n}\n#newInvoiceModal .modal-header .eyebrow{color:#1d765a;font-size:11px;letter-spacing:1.5px;}\n#newInvoiceModal .modal-header h2{color:#102a43;font-size:32px;letter-spacing:-.6px;}\n#newInvoiceModal .modal-header p:last-child{color:#65778a;}\n#newInvoiceModal .modal-close{\n  width:auto;height:42px;padding:0 16px;border:1px solid #d7e1e9;border-radius:10px;\n  background:#fff;color:#173b59;font-size:14px;font-weight:800;\n}\n#newInvoiceModal .modal-close::before{content:"Back to Invoices";}\n#newInvoiceModal .modal-close{font-size:0;}\n#newInvoiceModal .modal-close:hover{background:#eef4f8;color:#173b59;}\n#newInvoiceModal .invoice-create-scroll{padding:28px clamp(24px,4vw,58px) 120px;background:#f4f7fa;}\n#newInvoiceModal .invoice-create-scroll>.form-grid,\n#newInvoiceModal .invoice-create-scroll>.form-group,\n#newInvoiceModal .invoice-create-scroll>.table-wrapper,\n#newInvoiceModal .invoice-create-scroll>.invoice-create-pricing{\n  max-width:1280px;margin-left:auto;margin-right:auto;background:#fff;border:1px solid #dce5ed;border-radius:16px;box-shadow:0 8px 24px rgba(16,50,77,.045);\n}\n#newInvoiceModal .invoice-create-heading{max-width:1280px;margin:24px auto 12px;}\n#newInvoiceModal .modal-actions{\n  position:fixed;left:var(--sidebar-width);right:0;bottom:0;z-index:50002;\n  padding:16px clamp(24px,4vw,58px);background:rgba(255,255,255,.96);backdrop-filter:blur(10px);\n  border-top:1px solid #dce5ed;box-shadow:0 -8px 24px rgba(16,50,77,.07);\n}\n#newInvoiceModal .modal-actions .btn{min-width:150px;}\n@media(max-width:1100px){#newInvoiceModal{left:84px}#newInvoiceModal .modal-actions{left:84px}}\n@media(max-width:760px){\n  #newInvoiceModal{left:0;bottom:70px;height:calc(100vh - 70px);padding:0;}\n  #newInvoiceModal .invoice-create-modal{height:calc(100vh - 70px);border-radius:0;}\n  #newInvoiceModal .modal-actions{left:0;bottom:70px;padding:12px 16px;}\n  #newInvoiceModal .modal-header{padding:18px;}\n  #newInvoiceModal .modal-header h2{font-size:25px;}\n  #newInvoiceModal .invoice-create-scroll{padding:16px 16px 110px;}\n}\n
/* V8.1.2 — Project Hub + professional Change Orders */
.project-hub-tabs{display:flex;gap:8px;align-items:center;overflow-x:auto;margin:6px 0 22px;padding:6px;background:#eef4f7;border:1px solid #d9e4ea;border-radius:16px;position:sticky;top:10px;z-index:15;box-shadow:0 8px 24px rgba(21,50,75,.06)}
.project-hub-tab{border:0;background:transparent;color:#607287;font:inherit;font-weight:800;padding:11px 16px;border-radius:11px;white-space:nowrap;cursor:pointer}.project-hub-tab:hover{background:#fff;color:#173f5f}.project-hub-tab.active{background:#173f5f;color:#fff;box-shadow:0 4px 12px rgba(23,63,95,.18)}
#jobDetailView [data-job-panel][hidden]{display:none!important}
.change-order-modal-card{width:min(920px,calc(100vw - 32px));max-height:90vh;overflow:auto}.change-order-items-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:20px 0 10px}.change-order-items-head p{margin:4px 0 0}.change-order-items-table input,.change-order-items-table select{width:100%;min-width:90px}.change-order-items-table td:first-child input{min-width:220px}.change-order-total-row{display:flex;justify-content:flex-end;align-items:center;gap:28px;padding:18px 12px;font-size:1.05rem}.change-order-total-row strong{font-size:1.5rem;color:#173f5f}.co-view-btn{margin-right:6px}.co-status{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef3f6}.co-approved{background:#e5f6ed}.co-draft{background:#fff5dc}.co-declined{background:#fdebea}
@media(max-width:700px){.project-hub-tabs{top:4px}.project-hub-tab{padding:10px 12px}.change-order-items-table{min-width:760px}.change-order-modal-card{width:calc(100vw - 18px)}}


/* V8.2 — Actual vs Estimated Profit */
.actual-vs-estimated-card{margin:0 0 22px;padding:20px;border:1px solid #dce6ed;border-radius:16px;background:#fbfdfe}.actual-vs-estimated-head{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:14px}.actual-vs-estimated-head>div{display:flex;align-items:center;gap:12px}.actual-vs-estimated-head h3{margin:0;color:#173f5f}.actual-vs-estimated-head p{margin:4px 0 0;color:#6d7e8f;font-size:.88rem}.profit-source-status{padding:7px 10px;border-radius:999px;background:#eef4f7;color:#526b7e;font-size:.76rem;font-weight:800;white-space:nowrap}.profit-compare-table td:not(:first-child),.profit-compare-table th:not(:first-child){text-align:right}.profit-total-row td{border-top:2px solid #d9e4ea;font-weight:800}.profit-highlight-row td{background:#f1f7f4;font-weight:850}.variance-good{color:#18734f!important;font-weight:850}.variance-bad{color:#b64040!important;font-weight:850}.variance-neutral{color:#68798a!important}.profit-warning{margin-top:14px;padding:12px 14px;border-radius:10px;background:#fff5dc;border:1px solid #efd69a;color:#72551b;font-size:.86rem;font-weight:700}@media(max-width:700px){.actual-vs-estimated-head{align-items:flex-start;flex-direction:column}.profit-compare-table{min-width:650px}}


/* V8.3 — Materials & Receipts */
.job-material-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.job-material-table{min-width:1280px}.job-material-table input,.job-material-table select{width:100%;min-width:82px}.job-material-table td:first-child input{min-width:220px}.job-material-table .mat-receipt{min-width:160px}@media(max-width:900px){.job-material-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.job-material-summary{grid-template-columns:1fr}}

/* V8.3.1 — Clean Materials & Receipts */
.materials-clean-card{overflow:visible}.materials-clean-heading{align-items:flex-start}.materials-clean-heading h2{margin-bottom:3px}.materials-subtitle{margin:0;color:#718294;font-size:.88rem}.materials-compact-summary{display:flex;align-items:center;gap:0;margin:4px 0 18px;padding:14px 18px;background:#f7fafb;border:1px solid #e1e9ee;border-radius:14px}.materials-compact-summary>div{display:flex;align-items:baseline;gap:8px;padding:0 22px;border-right:1px solid #dfe7ec}.materials-compact-summary>div:first-child{padding-left:0}.materials-compact-summary>div:last-of-type{border-right:0}.materials-compact-summary span{font-size:.76rem;color:#718294;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.materials-compact-summary strong{color:#173f5f;font-size:1.05rem}.materials-hidden-variance{display:none}.materials-view-tabs{display:flex;gap:6px;border-bottom:1px solid #e1e8ed;margin:0 0 8px}.materials-view-tab{border:0;background:transparent;color:#718294;padding:11px 14px;font:inherit;font-weight:800;cursor:pointer;border-bottom:2px solid transparent}.materials-view-tab.active{color:#173f5f;border-bottom-color:#173f5f}.materials-view-tab span{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#edf2f5;font-size:.7rem;margin-left:5px}.materials-clean-table-wrap{border:0;box-shadow:none}.job-material-table{min-width:0!important;width:100%}.job-material-table th{font-size:.72rem;color:#718294}.job-material-table th:nth-child(2),.job-material-table td:nth-child(2),.job-material-table th:nth-child(3),.job-material-table td:nth-child(3),.job-material-table th:nth-child(5),.job-material-table td:nth-child(5){text-align:right}.job-material-table td{vertical-align:middle;padding-top:14px;padding-bottom:14px}.material-name-cell{display:flex;flex-direction:column;gap:3px}.material-name-cell strong{color:#17354f}.material-name-cell span,.material-muted{color:#8a98a5;font-size:.78rem}.material-status-pill{display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;font-size:.73rem;font-weight:850;white-space:nowrap;background:#f0f3f5;color:#607184}.material-status-pill.is-needed{background:#fff4dc;color:#8a651d}.material-status-pill.is-ordered{background:#eaf2fb;color:#315f8d}.material-status-pill.is-purchased{background:#e9f5ef;color:#267153}.material-status-pill.is-done{background:#e4f4eb;color:#176b49}.material-status-pill.is-returned{background:#f1edf7;color:#72588b}.material-more-btn{width:36px;height:34px;border:1px solid #dce5eb;background:#fff;border-radius:9px;color:#53697c;font-weight:900;cursor:pointer}.material-more-btn:hover{background:#eef4f7;color:#173f5f}.materials-clean-help{margin-top:12px!important;color:#8493a0!important;font-size:.78rem!important}.receipt-clean-list{display:flex;flex-direction:column;gap:8px;padding-top:8px}.receipt-clean-row{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) auto 24px;align-items:center;gap:12px;text-align:left;padding:14px 12px;border:1px solid #e1e8ed;background:#fff;border-radius:12px;cursor:pointer;font:inherit;color:inherit}.receipt-clean-row:hover{border-color:#b9cbd6;background:#fbfdfe}.receipt-clean-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#eef4f7;color:#315f78}.receipt-clean-main,.receipt-clean-total{display:flex;flex-direction:column;gap:3px}.receipt-clean-main strong{color:#17354f}.receipt-clean-main span,.receipt-clean-total span{color:#7b8a98;font-size:.78rem}.receipt-clean-total{text-align:right}.receipt-clean-total strong{color:#17354f}.receipt-clean-more{font-size:1.4rem;color:#94a2ae}.material-editor-card{width:min(720px,calc(100vw - 28px));max-height:90vh;overflow:auto}.material-editor-body{padding:22px}.material-editor-actions{display:flex;justify-content:space-between;align-items:center}.material-editor-actions .btn-danger{background:#fff;border:1px solid #edcaca;color:#a23d3d}.material-editor-actions .btn-danger:hover{background:#fff1f1}.span-2{grid-column:1/-1}
@media(max-width:760px){.materials-clean-heading{display:block}.materials-clean-heading .header-actions{margin-top:12px}.materials-compact-summary{overflow-x:auto;padding:12px}.materials-compact-summary>div{min-width:max-content;padding:0 14px}.job-material-table th:nth-child(3),.job-material-table td:nth-child(3){display:none}.material-editor-actions{gap:10px}.material-editor-actions .header-actions{display:flex}.receipt-clean-row{grid-template-columns:38px minmax(0,1fr) auto}.receipt-clean-more{display:none}}

/* =========================================================
   V8.3.2 — MATERIAL EDITOR MODAL OVERLAP FIX
   Scope only: #materialEditorModal. No material/pricing logic changed.
========================================================= */
#materialEditorModal.modal {
  position: fixed !important;
  inset: 0 !important;
  z-index: 100000 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 24px !important;
  background: rgba(12, 28, 42, .62) !important;
  backdrop-filter: blur(5px) !important;
  -webkit-backdrop-filter: blur(5px) !important;
  overflow: auto !important;
  isolation: isolate;
}
#materialEditorModal.modal[hidden] { display: none !important; }
#materialEditorModal .material-editor-card {
  position: relative !important;
  z-index: 100001 !important;
  display: flex !important;
  flex-direction: column !important;
  width: min(760px, calc(100vw - 48px)) !important;
  max-height: calc(100vh - 48px) !important;
  margin: auto !important;
  padding: 0 !important;
  overflow: hidden !important;
  background: #fff !important;
  opacity: 1 !important;
  border: 1px solid #dce5eb !important;
  border-radius: 18px !important;
  box-shadow: 0 30px 90px rgba(4, 22, 36, .32) !important;
}
#materialEditorModal .modal-header {
  flex: 0 0 auto !important;
  margin: 0 !important;
  padding: 22px 24px 18px !important;
  background: #fff !important;
  border-bottom: 1px solid #e3eaf0 !important;
}
#materialEditorModal .modal-header p:last-child { margin: 5px 0 0 !important; color: #718294 !important; }
#materialEditorModal .material-editor-body {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  padding: 22px 24px !important;
  background: #fff !important;
}
#materialEditorModal .material-editor-body .form-grid { margin: 0 !important; }
#materialEditorModal .material-editor-body input,
#materialEditorModal .material-editor-body select,
#materialEditorModal .material-editor-body textarea {
  background: #fff !important;
  opacity: 1 !important;
}
#materialEditorModal .material-editor-actions {
  flex: 0 0 auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  margin: 0 !important;
  padding: 16px 24px !important;
  background: #fff !important;
  border-top: 1px solid #e3eaf0 !important;
  box-shadow: 0 -8px 20px rgba(16, 50, 77, .04) !important;
}
#materialEditorModal .material-editor-actions .header-actions { display: flex !important; gap: 10px !important; }
body.material-editor-open { overflow: hidden !important; }
@media (max-width: 700px) {
  #materialEditorModal.modal { padding: 10px !important; align-items: flex-end !important; }
  #materialEditorModal .material-editor-card {
    width: 100% !important;
    max-height: 94vh !important;
    border-radius: 18px 18px 0 0 !important;
  }
  #materialEditorModal .modal-header,
  #materialEditorModal .material-editor-body,
  #materialEditorModal .material-editor-actions { padding-left: 18px !important; padding-right: 18px !important; }
  #materialEditorModal .material-editor-actions { align-items: stretch !important; }
  #materialEditorModal .material-editor-actions .header-actions { flex: 1 !important; justify-content: flex-end !important; }
}


/* V8.4 Customer Portal */
.co-status.co-sent{background:#e8f1ff;color:#245aa8}

/* =========================================================
   V8.5.1 — CLEAN CHANGE ORDER MODAL + AI ESTIMATOR
   ========================================================= */
#changeOrderModal.change-order-overlay{position:fixed!important;inset:0!important;z-index:120000!important;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(9,24,38,.62)!important;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);overflow:auto}
#changeOrderModal[hidden]{display:none!important}
#changeOrderModal .change-order-modal-card{position:relative!important;z-index:120001!important;width:min(960px,calc(100vw - 48px))!important;max-height:calc(100vh - 48px)!important;margin:auto!important;background:#fff!important;border:1px solid #dce6ee;border-radius:20px!important;box-shadow:0 32px 90px rgba(6,23,38,.32)!important;overflow:auto!important;padding:0!important}
#changeOrderModal .change-order-header{position:sticky;top:0;z-index:8;background:#fff;padding:24px 28px 20px;margin:0;border-bottom:1px solid #e7edf2}
#changeOrderModal .change-order-header p{margin:5px 0 0}
#changeOrderModal .modal-close{width:44px;height:44px;border-radius:11px;background:#f5f8fa;border:1px solid #dce6ee;color:#17344e;font-size:25px;cursor:pointer}
.co-mode-switch{display:flex;gap:8px;padding:18px 28px 0;background:#fff}.co-mode-btn{border:1px solid #d8e3eb;background:#f7f9fb;color:#345269;border-radius:10px;padding:10px 16px;font-weight:800;cursor:pointer}.co-mode-btn.active{background:#164f78;color:#fff;border-color:#164f78}
#changeOrderModal #coManualPanel{padding:20px 28px 0}.co-top-grid{margin-bottom:4px}.co-table-wrap{border:1px solid #e0e8ee;border-radius:14px;overflow:auto}.change-order-items-table{min-width:760px!important}.change-order-items-table th{background:#f6f8fa}.change-order-items-table input,.change-order-items-table select{background:#fff!important;border:1px solid #cedbe5!important;border-radius:9px!important;min-height:44px!important}.change-order-total-row{padding:18px 4px 10px!important}.co-modal-actions{position:sticky;bottom:0;z-index:8;background:#fff;border-top:1px solid #e7edf2;padding:18px 28px!important;margin-top:20px!important;box-shadow:0 -8px 22px rgba(20,45,65,.05)}
.co-ai-panel{margin:18px 28px 0;padding:22px;border:1px solid #cfe1ef;border-radius:16px;background:linear-gradient(180deg,#f7fbff,#fff)}.co-ai-heading{display:flex;justify-content:space-between;gap:16px;margin-bottom:14px}.co-ai-heading strong{font-size:18px;color:#153b58}.co-ai-heading p{margin:4px 0 0;color:#667b8c}.co-ai-icon{display:inline-flex;margin-right:8px;color:#176ca2}.co-ai-panel label{display:block;font-weight:800;color:#243f55;margin-bottom:7px}.co-ai-panel textarea{width:100%;resize:vertical;border:1px solid #cbdbe7;border-radius:12px;padding:14px;background:#fff;font:inherit;min-height:104px}.co-ai-actions{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:12px}.co-ai-result{margin-top:16px;border-top:1px solid #dce8f0;padding-top:16px}.co-ai-result h4{margin:0 0 8px}.co-ai-result ul{margin:8px 0 14px;padding-left:20px}.co-ai-result .co-ai-total{display:flex;justify-content:space-between;padding:12px 14px;background:#eef6fb;border-radius:10px;font-weight:800}.co-ai-result .co-ai-result-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}
body.co-modal-open{overflow:hidden!important}
@media(max-width:700px){#changeOrderModal.change-order-overlay{padding:8px;align-items:flex-end}#changeOrderModal .change-order-modal-card{width:100%!important;max-height:95vh!important;border-radius:18px 18px 0 0!important}#changeOrderModal .change-order-header,#changeOrderModal #coManualPanel,.co-mode-switch,.co-modal-actions{padding-left:16px!important;padding-right:16px!important}.co-ai-panel{margin-left:16px;margin-right:16px}.co-ai-actions{align-items:stretch;flex-direction:column}.co-ai-actions .btn{width:100%}}


/* ==========================================
   V9.3 — CLEAN SAVED ESTIMATE / PROPOSAL UX
========================================== */
.action-proposals{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:96px;background:#eaf4f1;color:#145b49;border:1px solid #c9ddd6;
}
.action-proposals:hover{background:#dcece7;border-color:#abcbbf;}
.estimate-more-popover-compact{width:250px;}
.proposal-center-dialog{width:min(940px,calc(100vw - 32px));max-width:940px;}
.proposal-center-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:4px 0;}
.proposal-card{border:1px solid #dfe8e5;border-radius:16px;padding:22px;background:#fff;box-shadow:0 8px 24px rgba(20,46,38,.06);}
.proposal-tier{font-size:12px;font-weight:900;letter-spacing:.12em;color:#587169;text-transform:uppercase;}
.proposal-price{font-size:30px;line-height:1.1;font-weight:900;color:#173d32;margin:10px 0;}
.proposal-card p{min-height:42px;color:#687a74;font-size:13px;line-height:1.5;}
.proposal-card-actions{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap;}
.proposal-card-actions .btn{flex:1;min-width:100px;text-align:center;text-decoration:none;}
.proposal-loading,.proposal-error{grid-column:1/-1;padding:34px;border:1px dashed #ccd9d5;border-radius:14px;text-align:center;color:#667a73;}
.proposal-error{color:#a43c34;background:#fff7f6;}
.proposal-center-note{color:#718079;font-size:12px;margin-right:auto;}
@media(max-width:800px){.proposal-center-grid{grid-template-columns:1fr}.proposal-card p{min-height:0}.action-proposals{min-width:auto}.saved-actions{flex-wrap:wrap}}

/* V9.4 editable proposal workspace */
.proposal-workspace-card{margin-top:20px}.proposal-workspace-help{font-size:12px;color:#64748b}.proposal-workspace-intro{margin:0 0 16px;color:#64748b}.proposal-workspace-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.proposal-workspace-package{border:1px solid #dbe5ea;border-radius:16px;padding:18px;background:#fff}.proposal-workspace-price{display:block;font-size:26px;margin:8px 0;color:#173b5d}.proposal-package-actions{display:flex;gap:8px;flex-wrap:wrap}.proposal-editor-dialog{width:min(980px,94vw);max-height:90vh;overflow:auto}.proposal-edit-note{padding:12px 14px;border-radius:12px;background:#f4f8f7;color:#47605a;margin-bottom:14px}.proposal-edit-table input,.proposal-edit-table select{width:100%;min-width:80px}.proposal-edit-table .pe-desc{min-width:260px}.proposal-row-remove{border:0;background:#fff0ef;color:#b42318;border-radius:8px;font-size:20px;cursor:pointer}.proposal-edit-summary{margin-top:18px;display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;align-items:end}.proposal-edit-summary label:first-child{grid-row:span 3}.proposal-edit-summary textarea,.proposal-edit-summary input{width:100%}.proposal-edit-summary>div{display:flex;justify-content:space-between;padding:10px 12px;background:#f7f9fb;border-radius:10px}@media(max-width:800px){.proposal-workspace-grid{grid-template-columns:1fr}.proposal-edit-summary{grid-template-columns:1fr}.proposal-edit-summary label:first-child{grid-row:auto}}

/* V9.5 — proposal-first estimate workspace */
.proposal-primary{margin:22px 0 18px;border:1px solid #cbdde8;box-shadow:0 12px 30px rgba(25,59,88,.08)}
.proposal-main-heading{align-items:center}
.proposal-primary .proposal-workspace-intro{max-width:900px;font-size:15px;line-height:1.6}
.proposal-primary .proposal-workspace-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.proposal-primary .proposal-workspace-package{padding:22px;border-radius:18px;min-height:220px;display:flex;flex-direction:column}
.proposal-primary .proposal-workspace-price{font-size:30px;margin:10px 0 6px}
.proposal-primary .proposal-workspace-package p{color:#64748b;line-height:1.45;flex:1}
.proposal-primary .proposal-package-actions{margin-top:14px}
.proposal-primary .proposal-package-actions .btn{flex:1;min-width:110px;text-align:center}
.internal-estimate-panel{margin:0 0 18px;border:1px solid #dce5eb;border-radius:16px;background:#fff;overflow:hidden}
.internal-estimate-panel>summary{cursor:pointer;list-style:none;padding:18px 20px;display:flex;justify-content:space-between;gap:18px;align-items:center;font-weight:800;color:#173b5d;background:#f8fafc}
.internal-estimate-panel>summary::-webkit-details-marker{display:none}
.internal-estimate-panel>summary:after{content:'Show';font-size:12px;font-weight:700;color:#557086;border:1px solid #d6e0e6;padding:6px 10px;border-radius:999px;background:#fff}
.internal-estimate-panel[open]>summary:after{content:'Hide'}
.internal-estimate-panel>summary small{font-weight:500;color:#718096;margin-left:auto}
.internal-estimate-body{padding:18px}
.internal-estimate-body .pricing-layout{margin-top:0}
.bottom-actions{justify-content:flex-end}
@media(max-width:900px){.proposal-primary .proposal-workspace-grid{grid-template-columns:1fr}.internal-estimate-panel>summary{align-items:flex-start;flex-direction:column}.internal-estimate-panel>summary small{margin-left:0}}

/* V10.1 — full-page quote editor */
.proposal-editor-page{padding-top:28px;padding-bottom:90px}
.quote-editor-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:20px}
.quote-back-btn{border:0;background:transparent;color:#315a78;font-weight:800;padding:0;margin:0 0 12px;cursor:pointer}
.quote-back-btn:hover{text-decoration:underline}.quote-title-line{display:flex;align-items:center;gap:12px}.quote-title-line h2{margin:0;font-size:30px;color:#172b3f}.quote-package-badge{display:inline-flex;padding:6px 10px;border-radius:999px;background:#eaf5f1;color:#1d6b55;font-size:12px;font-weight:900;letter-spacing:.08em}.quote-editor-subtitle{margin:6px 0 0;color:#64748b}.quote-header-actions{display:flex;gap:10px;flex-wrap:wrap}.quote-editor-card{padding:0;overflow:hidden}.quote-editor-intro{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid #e4ebf0}.quote-editor-intro>div{display:flex;flex-direction:column;gap:4px}.quote-editor-intro span{color:#64748b;font-size:13px}.quote-table-wrap{padding:0 20px 20px}.quote-full-table{width:100%;margin-top:16px}.quote-full-table th{white-space:nowrap}.quote-full-table input,.quote-full-table select{min-height:42px}.quote-editor-bottom{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(360px,.75fr);gap:20px;margin-top:20px}.quote-notes-card,.quote-totals-card{padding:22px}.quote-notes-card h3,.quote-totals-card h3{margin-top:0}.quote-notes-card p{color:#64748b;font-size:13px}.quote-notes-card textarea{width:100%;resize:vertical}.quote-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.quote-controls label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;color:#526477}.quote-controls input{width:100%;min-height:42px}.quote-summary-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-top:1px solid #e8eef2}.quote-total-row{margin-top:4px;padding:16px 14px;background:#102638;color:#fff;border:0;border-radius:10px;font-size:18px}.quote-sticky-actions{position:sticky;bottom:14px;display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:22px;padding:12px 14px;border:1px solid #dce6ec;background:rgba(255,255,255,.95);backdrop-filter:blur(10px);border-radius:14px;box-shadow:0 10px 30px rgba(15,23,42,.10);z-index:15}.quote-sticky-actions>div{display:flex;gap:10px}@media(max-width:900px){.quote-editor-header{align-items:flex-start;flex-direction:column}.quote-editor-bottom{grid-template-columns:1fr}.quote-controls{grid-template-columns:1fr 1fr}}@media(max-width:620px){.quote-controls{grid-template-columns:1fr}.quote-sticky-actions{align-items:stretch;flex-direction:column}.quote-sticky-actions>div,.quote-sticky-actions .btn{width:100%}.quote-sticky-actions>div{flex-direction:column}}

/* V10.7 — quote section subtotals */
.quote-subtotal-row td{background:#f6f9fc;border-top:2px solid #d9e4ef;padding-top:14px!important;padding-bottom:14px!important;font-size:15px;color:#17324d}.quote-subtotal-row td:nth-last-child(2){font-size:17px;color:#0e2c47}

/* V11 — simple, high-visibility quote navigation */
.quote-nav-banner{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px;padding:12px;border:1px solid #cbdde9;background:#f5f9fc;border-radius:14px}
.quote-back-btn{display:inline-flex!important;align-items:center;gap:11px!important;border:2px solid #174f79!important;background:#fff!important;color:#174f79!important;font-weight:800!important;padding:10px 15px!important;margin:0!important;border-radius:11px!important;cursor:pointer;box-shadow:0 3px 10px rgba(15,54,82,.08);text-align:left}
.quote-back-btn:hover{background:#eaf4fa!important;text-decoration:none!important}.quote-back-btn small{display:block;font-size:9px;letter-spacing:.11em;line-height:1.1;opacity:.72}.quote-back-btn strong{display:block;font-size:15px;line-height:1.2}.quote-back-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:#174f79;color:#fff;font-size:19px}
.quote-package-switcher{display:flex;gap:6px;margin-left:auto;padding:4px;background:#e8f0f5;border-radius:10px}.quote-package-switcher button{border:0;background:transparent;color:#526477;padding:9px 14px;border-radius:8px;font-size:12px;font-weight:900;cursor:pointer}.quote-package-switcher button:hover{background:#fff}.quote-package-switcher button.active{background:#174f79;color:#fff;box-shadow:0 2px 8px rgba(23,79,121,.18)}
.quote-back-bottom{min-width:190px}.proposal-center-dialog .eyebrow{letter-spacing:.13em}
@media(max-width:720px){.quote-nav-banner{align-items:stretch}.quote-back-btn{width:100%}.quote-package-switcher{width:100%;margin-left:0}.quote-package-switcher button{flex:1}.quote-back-bottom{width:100%}}

/* V11.4 — obvious estimate next-step controls */
.action-start-job{background:#173d32;color:#fff;border:1px solid #173d32;padding-inline:14px;}
.action-start-job:hover{background:#0f3027;}
.estimate-actions-popover{width:340px;max-height:min(680px,75vh);overflow:auto;}
.estimate-menu-primary{background:#edf7f2;color:#123c30;}
.estimate-menu-primary .estimate-menu-icon{background:#173d32;color:#fff;}
@media (max-width:1100px){.saved-actions{flex-wrap:wrap}.estimate-actions-popover{right:0;width:min(340px,90vw)}}

/* ==========================================
   V11.6 — SIMPLE ONE-CLICK ESTIMATE WORKFLOW
========================================== */
.saved-page-header{margin-bottom:18px}
.saved-estimates-card{border-radius:16px}
.saved-toolbar{padding:16px 18px}
.saved-estimates-table{min-width:980px}
.saved-estimates-table th{padding:12px 14px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#617086}
.saved-estimates-table td{padding:13px 14px}
.estimate-simple-row:hover{background:#f7fafc!important}
.estimate-main-cell{min-width:185px}
.estimate-title-button{display:flex;flex-direction:column;gap:3px;padding:0;border:0;background:transparent;text-align:left;cursor:pointer;color:#123f66}
.estimate-title-button strong{font-size:13px;font-weight:850}
.estimate-title-button span{font-size:10px;color:#7a8796;font-weight:600}
.estimate-title-button:hover strong{text-decoration:underline}
.estimate-quick-actions-cell{min-width:390px}
.estimate-quick-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}
.quick-action{height:38px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #dbe5e9;border-radius:9px;padding:0 10px;background:#fff;color:#173b55;font-size:11px;font-weight:800;cursor:pointer;transition:.15s ease}
.quick-action:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(18,61,97,.10)}
.qa-icon{font-size:13px;font-weight:900;line-height:1}
.qa-quotes{background:#eaf3fb;border-color:#d8e8f5;color:#174f7b}
.qa-send{background:#f4f8f7;color:#246652}
.qa-job{background:#174f3f;border-color:#174f3f;color:#fff}
.qa-invoice{background:#fff8e9;border-color:#f0dfb8;color:#76551a}
.qa-more{width:38px;padding:0;color:#53636e;background:#f6f8f8}
.estimate-more-compact{display:inline-block}
.estimate-more-compact>summary{list-style:none}
.estimate-more-compact>summary::-webkit-details-marker{display:none}
.estimate-more-popover-compact{width:220px}
@media(max-width:1100px){.quick-action span:not(.qa-icon){display:none}.quick-action{width:38px;padding:0}.estimate-quick-actions-cell{min-width:220px}}

/* V11.8 — centered responsive app dialogs + automatic device profile */
.app-confirm-overlay{
  position:fixed; inset:0; z-index:100000;
  display:grid; place-items:center;
  padding:clamp(16px,4vw,48px);
  background:rgba(8,24,39,.55);
  backdrop-filter:blur(4px);
}
.app-confirm-dialog{
  width:min(520px,100%); max-height:min(82vh,680px); overflow:auto;
  background:#fff; border:1px solid #dce7e3; border-radius:24px;
  box-shadow:0 28px 80px rgba(4,24,38,.28);
  padding:30px; text-align:center;
}
.app-confirm-icon{
  width:52px;height:52px;border-radius:16px;margin:0 auto 16px;
  display:grid;place-items:center;font-size:26px;font-weight:900;
  background:#fff3d8;color:#8a5a00;
}
.app-confirm-dialog h2{margin:0 0 10px;font-size:24px;line-height:1.2;color:#10283c}
.app-confirm-dialog p{margin:0 auto 24px;max-width:430px;font-size:16px;line-height:1.55;color:#566a76}
.app-confirm-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:12px}
.app-confirm-actions button{min-height:50px;border-radius:13px;font:inherit;font-weight:800;cursor:pointer}
.app-confirm-cancel{border:1px solid #cedbe0;background:#fff;color:#294457}
.app-confirm-primary{border:1px solid #125943;background:#125943;color:#fff}
body.dialog-open{overflow:hidden}
html.touch-device button,html.touch-device .btn,html.touch-device summary{min-height:44px}
@media(max-width:760px){
  .app-confirm-overlay{padding:14px;align-items:center}
  .app-confirm-dialog{border-radius:20px;padding:24px 18px;width:100%}
  .app-confirm-dialog h2{font-size:21px}
  .app-confirm-dialog p{font-size:15px}
  .app-confirm-actions{grid-template-columns:1fr;}
  .app-confirm-primary{grid-row:1}
  .app-confirm-cancel{grid-row:2}
}
@media(max-width:420px){.app-confirm-overlay{padding:10px}.app-confirm-dialog{padding:22px 15px}}

/* ==========================================================
   V12 STEP 1 — FULL-PAGE GOOD / BETTER / BEST WORKSPACE
   ========================================================== */
.proposal-center-page{max-width:1500px;padding-top:28px;padding-bottom:48px}
.proposal-page-shell{background:#f7f9fb;border:1px solid #dfe7ed;border-radius:24px;padding:32px;box-shadow:0 18px 50px rgba(17,45,68,.08)}
.proposal-page-header{display:flex;align-items:center;justify-content:space-between;gap:28px;padding-bottom:28px;border-bottom:1px solid #dfe7ed}
.proposal-page-heading{display:flex;align-items:flex-start;gap:22px;min-width:0}
.proposal-page-heading h1{font-size:34px;line-height:1.08;margin:4px 0 8px;color:#102f49;letter-spacing:-.025em}
.proposal-page-heading p:last-child{margin:0;color:#687b8c;font-size:15px}
.proposal-page-back{border:1px solid #d4e0e8;background:#fff;color:#173f60;border-radius:12px;padding:11px 14px;font-weight:800;cursor:pointer;white-space:nowrap;box-shadow:0 4px 12px rgba(20,50,74,.04)}
.proposal-page-back:hover{background:#eef5fa}
.proposal-send-all{min-height:48px;padding-inline:22px;white-space:nowrap}
.proposal-page-guide{display:flex;align-items:center;gap:12px;margin:26px 0 20px;padding:14px 17px;border-radius:14px;background:#edf5f2;color:#315c50;font-size:14px}
.proposal-page-guide strong{color:#173f35}.proposal-page-guide span{color:#60766f}
.proposal-page-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;padding:10px 0 4px;align-items:stretch}
.proposal-page-grid .proposal-card{position:relative;display:flex;flex-direction:column;min-height:390px;padding:30px;border:1px solid #d9e3e8;border-radius:22px;background:#fff;box-shadow:0 10px 30px rgba(16,47,73,.06);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.proposal-page-grid .proposal-card:hover{transform:translateY(-2px);box-shadow:0 16px 38px rgba(16,47,73,.10)}
.proposal-page-grid .proposal-card.is-recommended{border:2px solid #1c6b57;box-shadow:0 18px 44px rgba(28,107,87,.14);transform:translateY(-5px)}
.proposal-page-grid .proposal-card.is-recommended:hover{transform:translateY(-7px)}
.proposal-recommended-badge{position:absolute;top:-15px;left:50%;transform:translateX(-50%);background:#165c4b;color:#fff;border-radius:999px;padding:7px 14px;font-size:11px;font-weight:900;letter-spacing:.08em;white-space:nowrap;box-shadow:0 6px 16px rgba(22,92,75,.22)}
.proposal-card-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.proposal-page-grid .proposal-tier{font-size:13px;font-weight:900;letter-spacing:.14em;color:#567269}
.proposal-package-name{font-size:12px;font-weight:800;color:#8a9aa5;background:#f1f5f7;border-radius:999px;padding:6px 10px}
.proposal-page-grid .proposal-price{font-size:42px;letter-spacing:-.035em;color:#123f34;margin:0 0 16px;font-weight:900}
.proposal-card-description{font-size:15px!important;line-height:1.65!important;color:#657780!important;min-height:76px!important;margin:0 0 26px!important;flex:1}
.proposal-main-action{width:100%;min-height:52px;font-size:15px}
.proposal-secondary-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.proposal-text-action{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid #dce5ea;border-radius:11px;background:#fff;color:#214865;font-weight:800;font-size:13px;text-decoration:none;cursor:pointer;font-family:inherit}
.proposal-text-action:hover{background:#f1f6f9;border-color:#c6d7e1}
.proposal-page-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:28px;padding-top:22px;border-top:1px solid #dfe7ed;color:#778893;font-size:12px}
.proposal-page-back-link{border:0;background:transparent;color:#174f75;font-weight:800;cursor:pointer;padding:8px}
.proposal-loading,.proposal-error{grid-column:1/-1;padding:70px 30px;border:1px dashed #cbd8df;border-radius:18px;text-align:center;color:#607584;background:#fff}
@media(max-width:1050px){.proposal-page-shell{padding:24px}.proposal-page-grid{gap:14px}.proposal-page-grid .proposal-card{padding:22px}.proposal-page-grid .proposal-price{font-size:34px}.proposal-page-header{align-items:flex-start}.proposal-page-heading h1{font-size:30px}}
@media(max-width:820px){.proposal-center-page{padding:14px}.proposal-page-shell{padding:18px;border-radius:18px}.proposal-page-header{flex-direction:column}.proposal-send-all{width:100%}.proposal-page-grid{grid-template-columns:1fr}.proposal-page-grid .proposal-card,.proposal-page-grid .proposal-card.is-recommended{min-height:0;transform:none}.proposal-page-grid .proposal-card.is-recommended:hover,.proposal-page-grid .proposal-card:hover{transform:none}.proposal-card-description{min-height:0!important}.proposal-page-guide{align-items:flex-start;flex-direction:column}.proposal-page-footer{align-items:flex-start;flex-direction:column}.proposal-page-heading{gap:12px}.proposal-page-back span{display:none}.proposal-page-heading h1{font-size:27px}}
@media(max-width:480px){.proposal-center-page{padding:8px}.proposal-page-shell{padding:14px;border-radius:14px}.proposal-page-grid .proposal-card{padding:20px;border-radius:18px}.proposal-page-grid .proposal-price{font-size:34px}.proposal-secondary-actions{grid-template-columns:1fr}.proposal-page-heading h1{font-size:24px}.proposal-page-guide{margin-top:18px}.proposal-recommended-badge{top:-12px}}

/* ==========================================================
   V12 STEP 2 — CLEAN SAVED ESTIMATES WORKSPACE
   ========================================================== */
.saved-estimates-view{max-width:1500px;padding-top:28px;padding-bottom:48px}
.saved-page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:22px}
.saved-page-header h2{margin:4px 0 7px;font-size:32px;letter-spacing:-.025em;color:#102f49}
.saved-page-header>div>p:last-child{margin:0;color:#6c7d89;font-size:14px}
.saved-page-header #savedNewEstimateBtn{min-height:46px;border-radius:12px;padding-inline:19px;box-shadow:0 8px 20px rgba(22,78,118,.12)}
.saved-estimates-card{overflow:visible;border:1px solid #dfe7ed!important;border-radius:20px!important;box-shadow:0 12px 34px rgba(17,45,68,.055)!important;background:#fff}
.saved-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px!important;border-bottom:1px solid #e6edf1}
.estimate-search{flex:1;max-width:640px}
.estimate-search input{height:46px;border-radius:12px!important;border:1px solid #d7e2e8!important;background:#f8fafb!important;padding:0 16px!important;font-size:14px!important;box-shadow:none!important}
.estimate-search input:focus{background:#fff!important;border-color:#8db3cb!important;box-shadow:0 0 0 3px rgba(31,105,151,.09)!important}
.saved-toolbar-right{display:flex;align-items:center;gap:12px}
.saved-result-count{font-size:12px;font-weight:750;color:#7a8994;white-space:nowrap}
.saved-refresh-btn{height:40px;display:inline-flex;align-items:center;gap:6px;border:1px solid #dce5ea;border-radius:10px;background:#fff;color:#34536a;padding:0 12px;font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.saved-refresh-btn:hover{background:#f5f8fa}
.saved-estimates-card .table-wrapper{overflow:visible;padding:0 18px 18px}
.saved-estimates-table{width:100%;min-width:1000px!important;border-collapse:separate!important;border-spacing:0 8px!important}
.saved-estimates-table thead th{border:0!important;background:transparent!important;padding:12px 14px 5px!important;font-size:10px!important;color:#80909c!important}
.saved-estimates-table tbody tr.estimate-simple-row{background:#fff!important;box-shadow:0 0 0 1px #e5ecef;border-radius:14px;transition:box-shadow .15s ease,transform .15s ease,background .15s ease}
.saved-estimates-table tbody tr.estimate-simple-row:hover{background:#fbfcfd!important;box-shadow:0 8px 24px rgba(20,50,73,.08),0 0 0 1px #d7e4ea;transform:translateY(-1px)}
.saved-estimates-table tbody tr.estimate-simple-row td{border:0!important;padding:16px 14px!important;vertical-align:middle}
.saved-estimates-table tbody tr.estimate-simple-row td:first-child{border-radius:14px 0 0 14px;border-left:3px solid #cbdbe5!important}
.saved-estimates-table tbody tr.estimate-simple-row.is-accepted td:first-child{border-left-color:#2c8a68!important}
.saved-estimates-table tbody tr.estimate-simple-row td:last-child{border-radius:0 14px 14px 0}
.estimate-title-button strong{font-size:13px!important;color:#174f78}.estimate-title-button span{font-size:10px!important;color:#8a98a2!important}
.saved-customer,.saved-project{display:flex;flex-direction:column;gap:4px}.saved-customer strong,.saved-project strong{font-size:13px;color:#1d2d39}.saved-customer span,.saved-project span{font-size:10px;color:#7f8d97}
.saved-total{font-size:15px!important;font-weight:900!important;color:#172f42;white-space:nowrap}
.saved-status-cell{white-space:nowrap}.approval-badge{font-size:10px!important;padding:6px 9px!important;border-radius:999px!important;font-weight:850!important}
.estimate-quick-actions-cell{min-width:410px!important}.estimate-quick-actions{gap:7px!important;justify-content:flex-end}
.quick-action{height:40px!important;border-radius:10px!important;padding:0 11px!important;box-shadow:none!important}.quick-action:hover{transform:none!important;box-shadow:0 5px 14px rgba(18,61,97,.08)!important}
.qa-quotes{min-width:94px;background:#eaf3fb!important;border-color:#d5e7f4!important}.qa-quotes .qa-arrow{font-size:14px;margin-left:2px}.qa-send{background:#f2f8f5!important;border-color:#d9ebe3!important}.qa-job{background:#155c48!important;border-color:#155c48!important}.qa-invoice{background:#fff9ed!important;border-color:#ecdcb8!important}.qa-more{background:#f7f9fa!important}
.saved-empty{margin:20px;border:1px dashed #cad8df;border-radius:16px;padding:48px;text-align:center;background:#fafcfd}
@media(max-width:1180px){.saved-estimates-card .table-wrapper{overflow-x:auto}.estimate-quick-actions-cell{min-width:260px!important}.quick-action span:not(.qa-icon):not(.qa-arrow){display:none}.quick-action{width:40px!important;min-width:40px!important;padding:0!important}.qa-quotes{width:48px!important}.qa-arrow{display:none}}
@media(max-width:760px){
  .saved-estimates-view{padding:14px 10px 36px}.saved-page-header{align-items:stretch;flex-direction:column;gap:14px}.saved-page-header h2{font-size:27px}.saved-page-header #savedNewEstimateBtn{width:100%}
  .saved-estimates-card{border:0!important;box-shadow:none!important;background:transparent}.saved-toolbar{padding:0 0 14px!important;border:0;align-items:stretch;flex-direction:column}.estimate-search{max-width:none}.saved-toolbar-right{justify-content:space-between}.saved-estimates-card .table-wrapper{overflow:visible;padding:0}
  .saved-estimates-table{display:block;min-width:0!important;border-spacing:0!important}.saved-estimates-table thead{display:none}.saved-estimates-table tbody{display:grid;gap:12px}.saved-estimates-table tbody tr.estimate-simple-row{display:grid;grid-template-columns:1fr auto;gap:13px 18px;padding:18px;border-radius:17px;box-shadow:0 0 0 1px #dfe8ec!important;transform:none!important}.saved-estimates-table tbody tr.estimate-simple-row td,.saved-estimates-table tbody tr.estimate-simple-row td:first-child,.saved-estimates-table tbody tr.estimate-simple-row td:last-child{display:block;padding:0!important;border:0!important;border-radius:0!important}.saved-estimates-table tbody tr.estimate-simple-row{border-left:4px solid #cbdbe5}.saved-estimates-table tbody tr.estimate-simple-row.is-accepted{border-left-color:#2c8a68}
  .estimate-main-cell{grid-column:1/2;grid-row:1}.saved-status-cell{grid-column:2;grid-row:1;text-align:right}.saved-estimates-table td[data-label="Customer"]{grid-column:1/3;grid-row:2}.saved-estimates-table td[data-label="Project"]{grid-column:1/3;grid-row:3;padding-top:3px!important}.saved-total{grid-column:1/3;grid-row:4;font-size:24px!important;padding-top:4px!important}.estimate-quick-actions-cell{grid-column:1/3;grid-row:5;min-width:0!important;padding-top:4px!important}
  .saved-customer,.saved-project{gap:2px}.saved-customer strong,.saved-project strong{font-size:14px}.saved-customer span,.saved-project span{font-size:11px}.estimate-quick-actions{display:grid!important;grid-template-columns:1.25fr 1fr 1fr 44px;gap:8px!important}.quick-action{width:100%!important;min-width:0!important;height:46px!important}.quick-action span:not(.qa-icon){display:inline!important}.qa-invoice{display:none!important}.qa-more{width:44px!important}.qa-arrow{display:none!important}
}
@media(max-width:430px){.estimate-quick-actions{grid-template-columns:1.25fr 1fr 1fr 42px}.quick-action{font-size:10px!important;padding:0 7px!important}.saved-estimates-table tbody tr.estimate-simple-row{padding:16px}.saved-result-count{font-size:11px}.saved-refresh-btn span{display:none}.saved-refresh-btn{width:40px;justify-content:center;padding:0}}

/* =========================================================
   V12 STEP 3 — CLEAN INDIVIDUAL QUOTE EDITOR
   ========================================================= */
.v12-quote-editor{max-width:1440px;padding-top:22px;padding-bottom:80px}
.v12-quote-topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;margin-bottom:18px;padding:10px 0;border-bottom:1px solid #e5ebef}
.v12-back-link{justify-self:start;border:0;background:transparent;color:#31536d;font-weight:800;font-size:14px;cursor:pointer;padding:10px 0}
.v12-back-link:hover{color:#102f47}
.v12-package-switcher{justify-self:center;padding:4px;background:#eef3f5;border-radius:12px;display:flex;gap:3px}
.v12-package-switcher button{border:0;background:transparent;padding:9px 16px;border-radius:9px;font-size:12px;font-weight:900;letter-spacing:.05em;color:#64748b;cursor:pointer}
.v12-package-switcher button.is-active{background:#fff;color:#123b59;box-shadow:0 2px 8px rgba(15,23,42,.10)}
.v12-quote-top-actions{justify-self:end;display:flex;gap:9px}
.v12-quote-hero{display:flex;justify-content:space-between;align-items:center;gap:24px;margin:18px 0 24px}
.v12-quote-hero h2{font-size:34px;letter-spacing:-.03em}
.v12-live-total{min-width:230px;padding:15px 18px;border:1px solid #dce7ec;border-radius:14px;background:#fff;text-align:right;box-shadow:0 4px 14px rgba(15,23,42,.04)}
.v12-live-total span,.v12-live-total small{display:block;color:#718096}.v12-live-total strong{display:block;font-size:27px;color:#123b59;margin:2px 0}.v12-live-total small{font-size:11px}
.v12-editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px;align-items:start}
.v12-editor-main{display:grid;gap:18px}.v12-editor-section{margin:0}
.v12-editor-section .quote-editor-intro>div,.v12-section-heading,.v12-price-panel-head>div{display:flex;align-items:flex-start;gap:12px}
.v12-editor-section .quote-editor-intro>div>div{display:flex;flex-direction:column;gap:4px}
.v12-step-number{display:inline-grid;place-items:center;flex:0 0 28px;width:28px;height:28px;border-radius:50%;background:#e7f1ee;color:#17634f;font-weight:900;font-size:12px}
.v12-section-heading{margin-bottom:14px}.v12-section-heading h3,.v12-price-panel h3{margin:0}.v12-section-heading p,.v12-price-panel p{margin:3px 0 0;color:#718096;font-size:12px}
.v12-price-panel{position:sticky;top:18px;padding:20px;border:1px solid #dce7ec;box-shadow:0 8px 24px rgba(15,23,42,.06)}
.v12-price-panel-head{padding-bottom:13px;border-bottom:1px solid #e7edf1;margin-bottom:2px}
.v12-advanced-pricing{margin:8px 0 4px;border:1px solid #e4ebef;border-radius:10px;background:#f8fafb}.v12-advanced-pricing summary{padding:11px 12px;cursor:pointer;font-weight:800;font-size:12px;color:#526477}.v12-advanced-pricing .quote-controls{padding:0 12px 12px;margin:0;grid-template-columns:1fr 1fr}
.v12-payment-box{margin-top:12px;padding:12px 14px;background:#f3f7f6;border-radius:10px}.v12-payment-box>div{display:flex;justify-content:space-between;padding:5px 0}.v12-payment-box span{font-size:12px;color:#64748b}.v12-payment-box strong{color:#173b5d}
.v12-side-actions{display:grid;gap:8px;margin-top:16px}.v12-side-actions .btn{width:100%;justify-content:center}
.v12-mobile-savebar{display:none}
.v12-editor-section .proposal-material-remove,.v12-editor-section .proposal-labor-remove{width:34px;height:34px;border:0;border-radius:8px;background:#fff1f0;color:#b42318;font-size:19px;cursor:pointer}
.v12-editor-section .proposal-material-remove:hover,.v12-editor-section .proposal-labor-remove:hover{background:#fee4e2}
@media(max-width:1050px){.v12-editor-layout{grid-template-columns:1fr}.v12-price-panel{position:static}.v12-quote-topbar{grid-template-columns:1fr auto}.v12-package-switcher{grid-row:2;grid-column:1/-1;justify-self:stretch}.v12-package-switcher button{flex:1}.v12-quote-top-actions{grid-column:2}.v12-live-total{min-width:210px}}
@media(max-width:700px){.v12-quote-editor{padding:14px 12px 95px}.v12-quote-topbar{grid-template-columns:1fr}.v12-quote-top-actions{display:none}.v12-package-switcher{grid-row:auto;grid-column:auto}.v12-quote-hero{align-items:stretch;flex-direction:column}.v12-live-total{text-align:left;width:100%}.v12-quote-hero h2{font-size:28px}.quote-editor-intro{align-items:flex-start;flex-direction:column}.quote-editor-intro .btn{width:100%}.quote-table-wrap{padding:0 12px 14px;overflow-x:auto}.quote-full-table{min-width:720px}.v12-price-panel{padding:16px}.v12-mobile-savebar{display:flex}.v12-side-actions{display:none}}

/* =========================================================
   V12 STEP 4 — JOB WORKSPACE
   A calm project command center: status, money, next action.
   ========================================================= */
.v12-job-workspace{max-width:1440px;padding-bottom:90px}
.v12-job-workspace>.saved-page-header{margin:14px 0 16px;padding:22px 24px;border:1px solid #dce6eb;border-radius:20px;background:linear-gradient(135deg,#fff 0%,#f7faf9 100%);box-shadow:0 8px 28px rgba(17,49,72,.06);align-items:center}
.v12-job-workspace>.saved-page-header h2{font-size:32px;letter-spacing:-.035em;margin:2px 0 3px;color:#173b5d}
.v12-job-workspace>.saved-page-header p{margin:0;color:#718096}
.v12-job-workspace>.saved-page-header .header-actions{gap:8px;flex-wrap:wrap;justify-content:flex-end}
.v12-job-workspace>.saved-page-header .btn{min-height:42px;border-radius:10px}
.v12-job-workspace>.customer-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 14px}
.v12-job-workspace>.customer-stats .stat-card{padding:16px 18px;border-radius:14px;border:1px solid #e0e8ec;box-shadow:none;background:#fff}
.v12-job-workspace>.customer-stats .stat-card span{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#7b8b98;font-weight:800}
.v12-job-workspace>.customer-stats .stat-card strong{font-size:22px;color:#173b5d;margin-top:4px}
.v12-job-workspace>.customer-stats .stat-card:first-child{background:#173b5d;border-color:#173b5d}.v12-job-workspace>.customer-stats .stat-card:first-child span,.v12-job-workspace>.customer-stats .stat-card:first-child strong{color:#fff}
.v12-job-workspace .job-control-center{margin:0 0 14px;padding:20px 22px;border:1px solid #dce6eb;border-radius:18px;box-shadow:0 6px 20px rgba(17,49,72,.05);background:#fff}
.v12-job-workspace .job-control-header{align-items:center}.v12-job-workspace .job-control-header h2{font-size:20px;margin:2px 0}.v12-job-workspace .job-control-header .muted{font-size:12px}
.v12-job-workspace .job-control-progress-number{min-width:92px;padding:9px 12px;border-radius:12px;background:#edf6f2;text-align:center}.v12-job-workspace .job-control-progress-number strong{font-size:22px;color:#17634f}.v12-job-workspace .job-control-progress-number span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#6c8179}
.v12-job-workspace .job-progress-track{height:7px;background:#e9eff1;border-radius:999px;overflow:hidden;margin:15px 0}.v12-job-workspace .job-progress-fill{height:100%;border-radius:999px;background:#27765f}
.v12-job-workspace .job-stage-pipeline{gap:6px}.v12-job-workspace .job-stage-pipeline button{border-radius:11px;min-height:56px;padding:9px 7px;background:#f8fafb;border:1px solid #e3eaed}.v12-job-workspace .job-stage-pipeline button span{width:23px;height:23px}.v12-job-workspace .job-stage-pipeline button strong{font-size:11px}
.v12-job-workspace .job-control-summary{margin-top:14px;padding:12px 14px;background:#f7f9fa;border-radius:12px;gap:10px}.v12-job-workspace .job-control-summary>div{padding:2px 10px}.v12-job-workspace .job-control-summary span{font-size:10px;text-transform:uppercase;letter-spacing:.05em}.v12-job-workspace .job-control-summary strong{font-size:13px}
.v12-job-workspace .job-control-actions{margin-top:14px;gap:8px}.v12-job-workspace .job-control-actions .btn{min-height:40px;border-radius:10px}
.v12-job-workspace .project-hub-tabs{top:8px;margin:0 0 16px;padding:5px;gap:4px;border-radius:13px;background:#eef3f5;border-color:#dce5e9;box-shadow:0 7px 20px rgba(17,49,72,.07)}
.v12-job-workspace .project-hub-tab{white-space:nowrap;border-radius:9px;padding:10px 15px;font-size:12px;font-weight:800;color:#617282}.v12-job-workspace .project-hub-tab.active{background:#fff;color:#173b5d;box-shadow:0 2px 7px rgba(17,49,72,.09)}
.v12-job-workspace>[data-job-panel].card,.v12-job-workspace .customer-profile-grid>[data-job-panel],.v12-job-workspace .customer-profile-grid .card{border:1px solid #e0e8ec;border-radius:16px;box-shadow:0 4px 16px rgba(17,49,72,.035)}
.v12-job-workspace .section-heading h2{font-size:18px}.v12-job-workspace .section-heading .step{background:#e8f1ee;color:#17634f;border-radius:8px}
.v12-job-workspace .customer-profile-grid{gap:14px}.v12-job-workspace .customer-profile-info>div{padding:11px 0}.v12-job-workspace .form-group label{font-size:11px;font-weight:800;color:#657785}.v12-job-workspace input,.v12-job-workspace select,.v12-job-workspace textarea{border-radius:10px;border-color:#d9e3e8;background:#fbfcfc}
.v12-job-workspace .saved-estimates-table th{font-size:10px;text-transform:uppercase;letter-spacing:.055em;color:#70808d;background:#f7f9fa}.v12-job-workspace .saved-estimates-table td{font-size:12px}
.v12-jobs-index{max-width:1440px}.v12-jobs-index .customer-stats{grid-template-columns:repeat(4,1fr);gap:12px}.v12-jobs-index .stat-card{border-radius:14px;box-shadow:none;border:1px solid #e0e8ec}.v12-jobs-index .saved-estimates-card{border-radius:18px;border:1px solid #dfe7eb;box-shadow:0 7px 24px rgba(17,49,72,.045)}
@media(max-width:1050px){.v12-job-workspace>.saved-page-header{align-items:flex-start;flex-direction:column}.v12-job-workspace>.saved-page-header .header-actions{width:100%;justify-content:flex-start}.v12-job-workspace>.customer-stats,.v12-jobs-index .customer-stats{grid-template-columns:repeat(2,1fr)}.v12-job-workspace .job-stage-pipeline{overflow-x:auto;display:flex;padding-bottom:3px}.v12-job-workspace .job-stage-pipeline button{min-width:125px}.v12-job-workspace .job-control-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.v12-job-workspace{padding:10px 10px 90px}.v12-job-workspace>.saved-page-header{padding:17px;border-radius:16px}.v12-job-workspace>.saved-page-header h2{font-size:27px}.v12-job-workspace>.saved-page-header .header-actions{display:grid;grid-template-columns:1fr 1fr}.v12-job-workspace>.saved-page-header .header-actions .btn{width:100%;font-size:11px}.v12-job-workspace>.customer-stats{grid-template-columns:1fr 1fr}.v12-job-workspace>.customer-stats .stat-card{padding:13px}.v12-job-workspace>.customer-stats .stat-card strong{font-size:18px}.v12-job-workspace .job-control-center{padding:16px 14px}.v12-job-workspace .job-control-header{align-items:flex-start}.v12-job-workspace .job-control-summary{grid-template-columns:1fr 1fr;padding:8px}.v12-job-workspace .job-control-actions{display:grid;grid-template-columns:1fr 1fr}.v12-job-workspace .job-control-actions .btn{width:100%}.v12-job-workspace .project-hub-tabs{margin-left:-2px;margin-right:-2px}.v12-job-workspace .project-hub-tab{padding:10px 12px}.v12-job-workspace .customer-profile-grid{grid-template-columns:1fr}.v12-jobs-index .customer-stats{grid-template-columns:1fr 1fr}}

/* =========================================================
   V12 STEP 5 · DAILY BUSINESS DASHBOARD
   ========================================================= */
.v12-dashboard{max-width:1480px;padding-bottom:56px}
.v12-dash-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:8px 0 24px}
.v12-dash-hero h2{margin:3px 0 7px;font-size:clamp(1.8rem,3vw,2.55rem);letter-spacing:-.045em;color:#132f49}
.v12-dash-hero p:not(.eyebrow){margin:0;color:#6f7f90;font-size:.98rem}
.v12-dash-actions{display:flex;gap:10px;align-items:center}
.v12-dash-primary-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}
.v12-kpi-card{appearance:none;text-align:left;border:1px solid #dce5ec;background:#fff;border-radius:18px;padding:19px;display:flex;align-items:center;gap:14px;min-width:0;box-shadow:0 4px 14px rgba(15,45,70,.045);color:inherit;font:inherit}
button.v12-kpi-card{cursor:pointer;transition:.18s ease}
button.v12-kpi-card:hover{transform:translateY(-2px);border-color:#bfcfdb;box-shadow:0 10px 24px rgba(15,45,70,.08)}
.v12-kpi-icon{width:44px;height:44px;flex:0 0 44px;border-radius:13px;display:grid;place-items:center;background:#edf4f9;color:#1c5b89;font-weight:900;font-size:1.1rem}
.v12-kpi-money .v12-kpi-icon{background:#fff4df;color:#966214}.v12-kpi-collected .v12-kpi-icon{background:#e9f7ef;color:#267148}.v12-kpi-estimates .v12-kpi-icon{background:#f0eefb;color:#61549a}
.v12-kpi-copy{min-width:0;display:flex;flex-direction:column}.v12-kpi-copy small{font-size:.68rem;letter-spacing:.09em;font-weight:850;color:#7a8897}.v12-kpi-copy strong{font-size:1.55rem;letter-spacing:-.04em;color:#17334f;line-height:1.15;margin:3px 0}.v12-kpi-copy em{font-style:normal;font-size:.76rem;color:#8995a2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v12-dash-main-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(310px,.85fr);gap:18px;margin-bottom:18px}.v12-finance-row{grid-template-columns:1fr 1fr}
.v12-dash-panel,.v12-pipeline-card{border:1px solid #dfe7ed!important;border-radius:18px!important;box-shadow:0 4px 16px rgba(18,46,70,.04)!important;background:#fff!important;padding:20px!important}
.v12-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}.v12-panel-head h3{margin:2px 0 0;color:#17334f;font-size:1.08rem;letter-spacing:-.02em}.v12-panel-head .eyebrow{margin:0}.v12-muted{color:#8a96a2;align-self:center}.v12-text-action{border:0;background:transparent;padding:4px 0;color:#1b5a87;font:inherit;font-size:.78rem;font-weight:800;cursor:pointer;white-space:nowrap}.v12-text-action:hover{text-decoration:underline}
.v12-attention-list{display:grid;gap:8px}.v12-attention-list button{border:1px solid #e7edf2;background:#fbfcfd;border-radius:13px;padding:12px;display:grid;grid-template-columns:38px 1fr 18px;gap:10px;align-items:center;text-align:left;color:inherit;font:inherit;cursor:pointer}.v12-attention-list button:hover{background:#f5f8fa;border-color:#d3e0e9}.v12-attention-list button>span:nth-child(2){display:flex;flex-direction:column;min-width:0}.v12-attention-list strong{font-size:.84rem;color:#243e55}.v12-attention-list strong b{font-size:inherit}.v12-attention-list small{color:#8a96a3;font-size:.7rem;margin-top:2px}.v12-attention-list i{font-style:normal;color:#a1adb8}.v12-attention-icon{width:34px;height:34px;border-radius:10px;display:grid!important;place-items:center;background:#eef3f6;color:#5c7386;font-weight:900}.v12-attention-icon.danger{background:#fff0ef;color:#b94c44}.v12-attention-icon.warm{background:#fff4df;color:#996619}
.v12-pipeline-card{margin-bottom:18px}.v12-pipeline{display:grid;grid-template-columns:minmax(130px,1fr) 24px minmax(130px,1fr) 24px minmax(130px,1fr) 24px minmax(130px,1fr) 24px minmax(130px,1fr);align-items:center}.v12-pipeline>i{text-align:center;color:#a8b4be;font-style:normal}.v12-pipeline button{position:relative;border:1px solid #e3eaf0;background:#fafcfd;border-radius:14px;padding:13px;text-align:left;display:flex;flex-direction:column;min-height:91px;cursor:pointer;color:inherit}.v12-pipeline button:hover{border-color:#bfd0dd;background:#f5f9fb}.v12-pipeline button>span{font-size:.65rem;font-weight:900;color:#a0acb6}.v12-pipeline button small{font-size:.66rem;font-weight:850;letter-spacing:.055em;color:#6d7f8f;margin:5px 0 7px}.v12-pipeline button strong{font-size:.91rem;color:#183751;overflow:hidden;text-overflow:ellipsis}.v12-pipeline button em{position:absolute;right:11px;top:10px;min-width:23px;height:23px;border-radius:999px;background:#eaf2f7;color:#285f86;display:grid;place-items:center;font-style:normal;font-size:.68rem;font-weight:900}
.v12-finance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:#e8edf1;border:1px solid #e8edf1;border-radius:14px;overflow:hidden}.v12-finance-grid>div{background:#fff;padding:15px}.v12-finance-grid span{display:block;color:#7d8a97;font-size:.72rem;font-weight:700;margin-bottom:5px}.v12-finance-grid strong{color:#17334f;font-size:1.05rem}.v12-hidden-metrics{display:none}
.v12-dash-bottom-grid{display:grid;grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr);gap:18px}.v12-dashboard-table .saved-estimates-table th{font-size:.67rem}.v12-dashboard-table .saved-estimates-table td{padding-top:12px;padding-bottom:12px}.v12-empty-state{text-align:center;padding:25px 12px;color:#8995a0}.v12-empty-state>span{display:grid;place-items:center;width:34px;height:34px;margin:0 auto 8px;border-radius:50%;background:#eaf6ef;color:#2d7850;font-weight:900}.v12-empty-state strong{display:block;color:#526678;font-size:.86rem}.v12-empty-state p{margin:5px 0 0;font-size:.76rem}.v12-dashboard .dashboard-activity-item{gap:12px}.v12-dashboard .dashboard-activity-item>strong{font-size:.78rem;text-align:right;color:#526779}.v12-dashboard .dashboard-status-row{font-size:.8rem}
@media(max-width:1100px){.v12-dash-primary-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.v12-dash-main-grid,.v12-finance-row,.v12-dash-bottom-grid{grid-template-columns:1fr}.v12-pipeline{overflow-x:auto;grid-template-columns:170px 24px 170px 24px 170px 24px 170px 24px 170px;padding-bottom:7px}}
@media(max-width:700px){.v12-dashboard{padding-left:14px!important;padding-right:14px!important}.v12-dash-hero{display:block;padding-top:0}.v12-dash-actions{margin-top:16px}.v12-dash-actions .btn{flex:1}.v12-dash-primary-kpis{grid-template-columns:1fr 1fr;gap:9px}.v12-kpi-card{padding:13px;gap:9px;border-radius:14px}.v12-kpi-icon{width:36px;height:36px;flex-basis:36px;border-radius:10px}.v12-kpi-copy strong{font-size:1.12rem}.v12-kpi-copy em{font-size:.67rem}.v12-dash-panel,.v12-pipeline-card{padding:15px!important;border-radius:15px!important}.v12-finance-grid{grid-template-columns:1fr 1fr}.v12-dashboard-table table{min-width:560px}.v12-dash-bottom-grid{gap:12px}.v12-panel-head{margin-bottom:12px}}
@media(max-width:430px){.v12-dash-primary-kpis{grid-template-columns:1fr}.v12-kpi-card{padding:14px 15px}.v12-finance-grid{grid-template-columns:1fr}.v12-dash-actions{display:grid;grid-template-columns:1fr 1fr}}

/* =========================================================
   V12 STEP 6 · INVOICES & PAYMENTS
   Fast receivables scanning + clean payment workflow.
   ========================================================= */
.v12-invoices-index,.v12-invoice-detail{max-width:1440px;padding-bottom:90px}
.v12-invoices-index>.saved-page-header{margin:12px 0 16px;padding:22px 24px;border:1px solid #dce6eb;border-radius:20px;background:linear-gradient(135deg,#fff,#f8fafb);box-shadow:0 7px 24px rgba(17,49,72,.045);align-items:center}
.v12-invoices-index>.saved-page-header h2{margin:2px 0 4px;font-size:32px;letter-spacing:-.04em;color:#173b5d}.v12-invoices-index>.saved-page-header p{margin:0;color:#71808d}.v12-invoices-index>.saved-page-header .btn{min-height:44px;border-radius:11px}
.v12-invoice-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 15px}.v12-invoice-kpis .stat-card{padding:16px 18px;border:1px solid #dfe7eb;border-radius:15px;background:#fff;box-shadow:none}.v12-invoice-kpis .stat-card span{font-size:10px;font-weight:850;letter-spacing:.07em;text-transform:uppercase;color:#7c8995}.v12-invoice-kpis .stat-card strong{margin-top:4px;font-size:22px;color:#173b5d}.v12-invoice-kpis .stat-card:last-child{background:#fff8ea;border-color:#eed9a9}.v12-invoice-kpis .stat-card:last-child strong{color:#8b5c12}
.v12-invoices-index .saved-estimates-card{border:1px solid #dfe7eb;border-radius:18px;box-shadow:0 7px 24px rgba(17,49,72,.045);overflow:visible}.v12-invoices-index .saved-toolbar{padding:14px 16px;border-bottom:1px solid #e7edf0}.v12-invoices-index .estimate-search input{min-height:42px;border-radius:11px;background:#f9fbfc;border-color:#dbe5ea}.v12-invoices-index .saved-estimates-table th{padding:11px 13px;background:#f7f9fa;color:#71808c;font-size:10px;letter-spacing:.055em;text-transform:uppercase}.v12-invoices-index .saved-estimates-table td{padding:14px 13px;border-bottom-color:#edf1f3;vertical-align:middle}.v12-invoice-row:hover{background:#fbfcfd}.v12-invoice-row.is-overdue{background:#fffafa}.v12-invoice-row.is-overdue td:first-child{box-shadow:inset 3px 0 #c85a51}
.v12-invoice-number{display:block;border:0;background:transparent;padding:0;color:#195d8e;font:inherit;font-size:13px;font-weight:900;cursor:pointer;text-align:left}.v12-invoice-number:hover{text-decoration:underline}.v12-invoice-row td:first-child>small{display:block;margin-top:3px;color:#94a0aa;font-size:10px}.v12-invoice-party{display:flex;flex-direction:column;gap:2px}.v12-invoice-party strong{color:#243d52;font-size:13px}.v12-invoice-party span{color:#85929e;font-size:11px}.v12-paid-amount{color:#26734c!important}.v12-balance-amount{font-weight:900!important;color:#173b5d!important}.v12-due-label{display:block;margin-top:5px;color:#8b98a3;font-size:9px;white-space:nowrap}.v12-due-label.danger{color:#b14e47;font-weight:800}.v12-invoice-row-actions{gap:6px;flex-wrap:nowrap}.v12-invoice-row-actions .action-btn{min-height:34px;padding:7px 10px;border-radius:9px;font-size:10px}.v12-invoice-row-actions .action-payment{background:#eaf6f0;color:#216b4b;border-color:#cfe8dc}.v12-icon-danger{width:34px;padding:0!important;color:#75838f!important;background:#f7f9fa!important}
.v12-invoice-hero{margin:12px 0 14px;padding:22px 24px;border:1px solid #dce6eb;border-radius:20px;background:linear-gradient(135deg,#173b5d 0%,#214f72 100%);box-shadow:0 10px 28px rgba(17,49,72,.12);align-items:center}.v12-invoice-hero .eyebrow,.v12-invoice-hero h2,.v12-invoice-hero p,.v12-invoice-hero p strong{color:#fff}.v12-invoice-hero .eyebrow{opacity:.7}.v12-invoice-hero h2{font-size:31px;letter-spacing:-.035em;margin:2px 0}.v12-invoice-hero p{opacity:.8;margin:0}.v12-invoice-hero .btn{background:#fff;color:#173b5d;border-color:#fff;min-height:42px;border-radius:10px}
.v12-invoice-detail>.card,.v12-invoice-detail>.pricing-layout>.card{border:1px solid #dfe7eb;border-radius:17px;box-shadow:0 5px 18px rgba(17,49,72,.035)}.v12-invoice-detail .section-heading{margin-bottom:15px}.v12-invoice-detail .section-heading h2{font-size:17px}.v12-invoice-detail .section-heading .step{border-radius:8px;background:#eaf2f7;color:#225f89}.v12-invoice-detail input,.v12-invoice-detail select{min-height:42px;border-radius:10px;border-color:#d8e2e7;background:#fbfcfd}
.v12-payment-layout{grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:15px;align-items:start}.v12-payment-history-card #recordPaymentBtn{width:100%;margin-top:12px;min-height:44px;border-radius:10px}.v12-invoice-summary-card{position:sticky;top:12px;background:#fbfcfd!important}.v12-invoice-summary-card>.eyebrow{margin:0 0 2px;color:#7c8995}.v12-invoice-summary-card h2{margin-top:0;color:#173b5d}.v12-invoice-summary-card .grand-total{margin-top:12px;padding:15px;border-radius:12px;background:#173b5d;color:#fff}.v12-invoice-summary-card .grand-total span,.v12-invoice-summary-card .grand-total strong{color:#fff}.v12-invoice-summary-card .grand-total strong{font-size:24px}.v12-invoice-detail .payment-record{border:1px solid #e3eaee;border-radius:11px;padding:11px 12px;margin-bottom:8px;background:#fbfcfd}.v12-invoice-actions{position:sticky;bottom:12px;z-index:8;margin:18px auto 0;padding:9px;border:1px solid #dbe5ea;border-radius:14px;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);box-shadow:0 8px 28px rgba(17,49,72,.11);justify-content:flex-end}.v12-invoice-actions .btn{min-height:43px;border-radius:10px}
#paymentModal .modal-dialog{width:min(92vw,520px);border-radius:20px;border:1px solid #dce5ea;box-shadow:0 24px 70px rgba(15,39,59,.22)}#paymentModal .modal-header{padding-bottom:14px;border-bottom:1px solid #e8edf0;margin-bottom:16px}#paymentModal .modal-header h2{margin:2px 0;color:#173b5d}#paymentModal input,#paymentModal select,#paymentModal textarea{min-height:44px;border-radius:10px;border-color:#d8e2e7}#paymentModal .modal-actions{padding-top:14px;border-top:1px solid #e8edf0}#paymentModal .modal-actions .btn{min-height:44px;border-radius:10px}
@media(max-width:1050px){.v12-invoice-kpis{grid-template-columns:repeat(2,1fr)}.v12-payment-layout{grid-template-columns:1fr}.v12-invoice-summary-card{position:static}.v12-invoice-row-actions{flex-wrap:wrap}}
@media(max-width:760px){.v12-invoices-index,.v12-invoice-detail{padding:10px 11px 90px}.v12-invoices-index>.saved-page-header,.v12-invoice-hero{padding:17px;border-radius:16px;align-items:flex-start;flex-direction:column}.v12-invoices-index>.saved-page-header .btn,.v12-invoice-hero .header-actions,.v12-invoice-hero .btn{width:100%}.v12-invoice-kpis{grid-template-columns:1fr 1fr;gap:8px}.v12-invoice-kpis .stat-card{padding:13px}.v12-invoice-kpis .stat-card strong{font-size:18px}.v12-invoices-index .saved-toolbar{display:grid;grid-template-columns:1fr auto}.v12-invoices-index .table-wrapper{overflow:visible}.v12-invoices-index .invoice-table,.v12-invoices-index .invoice-table tbody,.v12-invoices-index .invoice-table tr,.v12-invoices-index .invoice-table td{display:block;width:100%}.v12-invoices-index .invoice-table thead{display:none}.v12-invoices-index .invoice-table tbody{padding:10px;display:grid;gap:10px}.v12-invoices-index .invoice-table tr{position:relative;border:1px solid #dfe7eb;border-radius:15px;padding:14px;background:#fff}.v12-invoices-index .invoice-table tr.is-overdue{border-color:#eccbc8}.v12-invoices-index .invoice-table tr.is-overdue td:first-child{box-shadow:none}.v12-invoices-index .invoice-table td{border:0!important;padding:4px 0!important}.v12-invoices-index .invoice-table td:nth-child(3),.v12-invoices-index .invoice-table td:nth-child(4),.v12-invoices-index .invoice-table td:nth-child(5){display:grid;grid-template-columns:1fr auto;align-items:center}.v12-invoices-index .invoice-table td:nth-child(3)::before{content:'Invoice Total';color:#8996a1;font-size:10px}.v12-invoices-index .invoice-table td:nth-child(4)::before{content:'Paid';color:#8996a1;font-size:10px}.v12-invoices-index .invoice-table td:nth-child(5)::before{content:'Balance Due';color:#8996a1;font-size:10px}.v12-invoice-row-actions{display:grid;grid-template-columns:1fr 1fr auto;margin-top:8px}.v12-invoice-row-actions .action-btn{min-height:42px}.v12-invoice-hero h2{font-size:27px}.v12-invoice-detail>.pricing-layout{grid-template-columns:1fr}.v12-invoice-detail .table-wrapper{overflow-x:auto}.v12-invoice-detail .saved-estimates-table{min-width:650px}.v12-invoice-actions{display:grid;grid-template-columns:1fr 1fr;bottom:8px}.v12-invoice-actions .btn{width:100%}}
@media(max-width:430px){.v12-invoice-kpis{grid-template-columns:1fr 1fr}.v12-invoice-kpis .stat-card span{font-size:9px}.v12-invoices-index .saved-toolbar{grid-template-columns:1fr}.v12-invoices-index #refreshInvoicesBtn{display:none}}

/* ==================================================
   V12 STEP 7 · CUSTOMER CENTER
================================================== */
.v12-customers-index,.v12-customer-profile{max-width:1440px}
.v12-customer-hero,.v12-customer-profile-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:24px 26px;margin-bottom:14px;border:1px solid #dfe7eb;border-radius:18px;background:linear-gradient(135deg,#fff 0%,#f8fbfc 100%);box-shadow:0 7px 24px rgba(17,49,72,.045)}
.v12-customer-hero h2,.v12-customer-profile-hero h2{margin:3px 0 5px;color:#173b5d;font-size:31px;letter-spacing:-.025em}.v12-customer-hero p,.v12-customer-profile-hero p{margin-bottom:0;color:#6e7f8c}
.v12-customer-stats{gap:12px;margin-bottom:14px}.v12-customer-stats .stat-card{padding:16px 18px;border:1px solid #e0e8ec;border-radius:14px;background:#fff;box-shadow:none}.v12-customer-stats .stat-card span{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#7b8b98;font-weight:800}.v12-customer-stats .stat-card strong{font-size:22px;color:#173b5d;margin-top:4px}.v12-customer-stats .v12-balance-stat{background:#fffaf1;border-color:#f0dfbd}.v12-customer-stats .v12-balance-stat strong{color:#9a6518}
.v12-customer-directory{border:1px solid #dfe7eb;border-radius:18px;box-shadow:0 7px 24px rgba(17,49,72,.045);overflow:visible}.v12-customer-directory .saved-toolbar{padding:14px 16px;border-bottom:1px solid #edf1f3}.v12-customer-directory .customer-table{min-width:1050px}.v12-customer-directory .customer-table th{font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:#7a8b97}.v12-customer-directory .customer-table td{padding-top:13px;padding-bottom:13px}
.v12-customer-name{border:0;background:transparent;padding:0;display:flex;align-items:center;gap:11px;text-align:left;color:#173b5d;cursor:pointer}.v12-customer-name strong{display:block;font-size:14px}.v12-customer-name small{display:block;max-width:260px;margin-top:2px;color:#84929c;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v12-avatar{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:12px;background:#eaf3f8;color:#185483;font-size:15px;font-weight:900}.v12-money-due{color:#a05e12!important;font-weight:900!important}
.v12-customer-profile-hero{align-items:center;padding:22px 26px}.v12-profile-identity{min-width:0}.v12-back-link{border:0;background:transparent;padding:0 0 11px;color:#547084;font-weight:800;cursor:pointer}.v12-contact-actions{display:flex;gap:8px;margin-top:14px}.v12-contact-actions .btn{min-width:82px}.v12-contact-actions .is-disabled{opacity:.45;pointer-events:none}.v12-profile-money{margin-top:0}.v12-customer-info-grid{gap:14px;margin-bottom:14px}.v12-customer-info-card{border:1px solid #e0e8ec!important;border-radius:16px!important;box-shadow:0 4px 16px rgba(17,49,72,.035)!important;padding:19px!important}.v12-mini-heading{display:flex;justify-content:space-between;margin-bottom:13px}.v12-mini-heading h3{margin:2px 0 0;color:#173b5d;font-size:17px}.v12-customer-info-card .customer-profile-info{gap:0}.v12-customer-info-card .customer-address{border-color:#e3e9ed;background:#f9fbfc;border-radius:11px}
.v12-customer-history{margin-bottom:14px;border:1px solid #dfe7eb!important;border-radius:16px!important;box-shadow:0 4px 16px rgba(17,49,72,.035)!important}.v12-customer-history .customer-history-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:16px 18px}.v12-customer-history .customer-history-heading h2{color:#173b5d;font-size:18px}.v12-section-hint{color:#8a98a2;font-size:12px}.v12-customer-history .saved-estimates-table th{font-size:10px;text-transform:uppercase;letter-spacing:.065em;color:#7a8b97}.v12-customer-history .saved-estimates-table td{padding-top:12px;padding-bottom:12px}
@media(max-width:900px){.v12-customer-hero,.v12-customer-profile-hero{align-items:flex-start}.v12-customer-directory .table-wrapper{overflow-x:auto}.v12-section-hint{display:none}}
@media(max-width:700px){.v12-customers-index,.v12-customer-profile{padding:10px 10px 90px}.v12-customer-hero,.v12-customer-profile-hero{padding:18px;flex-direction:column;align-items:stretch;border-radius:16px}.v12-customer-hero h2,.v12-customer-profile-hero h2{font-size:27px}.v12-customer-hero>.btn,.v12-customer-profile-hero>.btn{width:100%}.v12-customer-stats{grid-template-columns:1fr 1fr}.v12-customer-stats .stat-card{padding:13px}.v12-customer-stats .stat-card strong{font-size:18px}.v12-customer-info-grid{grid-template-columns:1fr}.v12-contact-actions{display:grid;grid-template-columns:1fr 1fr}.v12-contact-actions .btn{width:100%}.v12-customer-directory .saved-toolbar{display:grid;grid-template-columns:1fr}.v12-customer-directory .saved-toolbar .btn{width:100%}.v12-customer-history{overflow:hidden}.v12-customer-history .table-wrapper{overflow-x:auto}.v12-customer-history .saved-estimates-table{min-width:680px}.v12-customer-history .customer-history-heading{padding:15px}}
\n\n/* ==================================================\n   V12 STEP 8 — SCHEDULING + CREW CENTER\n   ================================================== */\n.calendar-view,.workers-view{max-width:1480px}.calendar-page-header,.workers-view>.saved-page-header{padding:6px 2px 18px}.calendar-summary-grid .stat-card,.worker-stats .stat-card{border:1px solid #e5eaf0;box-shadow:0 8px 24px rgba(16,35,63,.055);border-radius:18px;padding:18px}.calendar-summary-grid .stat-card strong,.worker-stats .stat-card strong{font-size:1.75rem;letter-spacing:-.035em}.worker-stats .stat-card small{display:block;margin-top:5px;color:#8a94a5;font-size:.72rem;font-weight:650}.calendar-card{border-radius:20px;box-shadow:0 12px 32px rgba(16,35,63,.07);padding:20px}.calendar-toolbar{padding-bottom:14px;border-bottom:1px solid #edf0f4}.calendar-nav h2{font-size:1.35rem;letter-spacing:-.025em}.calendar-view-switch{border-radius:14px}.calendar-switch{min-height:40px}.calendar-day{transition:background .15s ease}.calendar-day:hover{background:#fbfcfe}.calendar-day.today{background:#fffdf6;box-shadow:inset 0 0 0 2px #c59b48}.calendar-event{border-radius:9px;padding:7px 8px}.calendar-event span{display:block;overflow:hidden;text-overflow:ellipsis}.calendar-agenda-card{border-radius:20px}.calendar-agenda-item{border-radius:14px;padding:14px 16px;transition:box-shadow .15s ease,transform .15s ease}.calendar-agenda-item:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(16,35,63,.07)}\n.workers-view .saved-estimates-card{border-radius:20px;box-shadow:0 12px 32px rgba(16,35,63,.06)}.workers-view .saved-toolbar{padding:16px;border-bottom:1px solid #edf0f4}.workers-view .estimate-search input,.workers-view .worker-filter{min-height:44px;border-radius:12px}.worker-table tbody tr{transition:background .15s ease}.worker-table tbody tr:hover{background:#fbfcfe}.worker-name-link{font-size:.93rem}.v12-worker-role-mobile{display:none}.worker-type-badge,.worker-status{border-radius:999px}.worker-profile-grid>.card,.workerDetailView>.card{border-radius:20px}\n@media(max-width:760px){.calendar-page-header,.workers-view>.saved-page-header{gap:14px}.calendar-page-header .header-actions,.workers-view>.saved-page-header .header-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:8px}.workers-view>.saved-page-header .header-actions #addWorkerBtn{grid-column:1/-1}.calendar-summary-grid,.worker-stats{grid-template-columns:1fr 1fr;gap:10px}.calendar-summary-grid .stat-card,.worker-stats .stat-card{padding:14px}.calendar-summary-grid .stat-card strong,.worker-stats .stat-card strong{font-size:1.4rem}.calendar-card{padding:14px;margin-left:-4px;margin-right:-4px}.calendar-toolbar{gap:12px}.calendar-view-switch{width:100%}.calendar-switch{flex:1}.calendar-legend{gap:10px 14px}.calendar-agenda-item{padding:14px}.workers-view .saved-estimates-card{background:transparent;border:0;box-shadow:none;padding:0}.workers-view .saved-toolbar{background:#fff;border:1px solid #e5eaf0;border-radius:16px;margin-bottom:12px;display:grid;grid-template-columns:1fr 1fr;gap:9px}.workers-view .saved-toolbar .estimate-search{grid-column:1/-1}.workers-view .table-wrapper{overflow:visible}.worker-table{min-width:0;border:0}.worker-table thead{display:none}.worker-table,.worker-table tbody,.worker-table tr,.worker-table td{display:block;width:100%}.worker-table tbody{display:grid;gap:12px}.worker-table tbody tr{background:#fff;border:1px solid #e5eaf0;border-radius:18px;padding:16px;box-shadow:0 7px 20px rgba(16,35,63,.05)}.worker-table tbody tr:hover{background:#fff}.worker-table td{border:0!important;padding:7px 0!important;display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:right}.worker-table td::before{content:attr(data-label);font-size:.7rem;font-weight:850;color:#8a94a5;text-transform:uppercase;letter-spacing:.045em;text-align:left}.worker-table td:first-child{display:block;text-align:left;padding-bottom:12px!important;border-bottom:1px solid #edf0f4!important}.worker-table td:first-child::before{display:none}.worker-table td:nth-child(3){display:none}.worker-table td:nth-child(4){align-items:flex-start}.worker-table td:last-child{padding-top:12px!important;border-top:1px solid #edf0f4!important}.worker-table .saved-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.worker-table .action-btn{min-height:42px}.v12-worker-role-mobile{display:block;color:#7b8798;margin-top:4px;font-weight:650}.worker-name-link{font-size:1.05rem}.worker-contact{text-align:right}}\n@media(max-width:480px){.calendar-summary-grid,.worker-stats{grid-template-columns:1fr 1fr}.calendar-summary-grid .stat-card span,.worker-stats .stat-card span{font-size:.7rem}.workers-view .saved-toolbar{grid-template-columns:1fr}.workers-view .saved-toolbar .estimate-search{grid-column:auto}.calendar-page-header .header-actions{grid-template-columns:1fr 1fr}.calendar-page-header #calendarRefreshBtn{grid-column:1/-1}}\n
/* =========================================================
   V12 STEP 9 · REPORTS, SETTINGS & GLOBAL DESIGN SYSTEM
   ========================================================= */
:root{
  --v12-ink:#17334f;--v12-muted:#748391;--v12-line:#dfe7ec;--v12-soft:#f6f9fa;
  --v12-green:#216b55;--v12-gold:#9a681d;--v12-danger:#a94442;--v12-radius:16px;
  --v12-shadow:0 7px 24px rgba(17,49,72,.05);
}
body{background:#f5f7f8;color:#243b50}
.container,.app-view{max-width:1480px}
.card{border-color:var(--v12-line);box-shadow:var(--v12-shadow)}
.btn{min-height:42px;border-radius:11px;font-weight:800;letter-spacing:-.005em;transition:transform .14s ease,box-shadow .14s ease,background .14s ease}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
input,select,textarea{border-radius:11px!important;border-color:#d8e2e7!important;transition:border-color .15s ease,box-shadow .15s ease}
input:focus,select:focus,textarea:focus{outline:0;border-color:#7aa2bb!important;box-shadow:0 0 0 3px rgba(49,111,150,.11)!important}
.modal-dialog{border-radius:20px!important;box-shadow:0 24px 70px rgba(10,32,49,.22)!important}
.modal-backdrop{backdrop-filter:blur(2px)}
.saved-page-header h2,.settings-view h2{letter-spacing:-.025em;color:var(--v12-ink)}

/* Reports */
.v12-reports{padding:24px 28px 64px;margin:0 auto}
.v12-reports .reports-hero{border-radius:20px;padding:25px 27px;background:linear-gradient(135deg,#fff 0%,#f7fafb 100%);box-shadow:var(--v12-shadow);border:1px solid var(--v12-line)}
.v12-reports .reports-hero h1{margin:4px 0 6px;font-size:clamp(1.85rem,3vw,2.5rem);letter-spacing:-.045em;color:var(--v12-ink)}
.v12-reports .reports-hero p{margin:0;max-width:720px;color:var(--v12-muted)}
.v12-reports .reports-actions{align-items:center;gap:8px}.v12-reports .reports-actions select{min-height:42px;background:#fff;font-weight:750;color:#3d566a}
.v12-reports .reports-kpi-grid{gap:12px;margin:15px 0}
.v12-reports .report-kpi{border:1px solid var(--v12-line);border-radius:16px;padding:17px 18px;background:#fff;box-shadow:0 4px 14px rgba(17,49,72,.035)}
.v12-reports .report-kpi span{font-size:10px;text-transform:uppercase;letter-spacing:.075em;color:#7b8b98;font-weight:850}.v12-reports .report-kpi strong{font-size:22px;letter-spacing:-.035em;color:var(--v12-ink);margin:4px 0}.v12-reports .report-kpi small{color:#929da6;font-size:11px}
.v12-reports .report-kpi:nth-child(2) strong,.v12-reports .report-kpi:nth-child(5) strong{color:var(--v12-green)}.v12-reports .report-kpi:nth-child(3) strong{color:var(--v12-gold)}
.v12-reports .reports-grid{gap:14px}.v12-reports .report-panel{border-radius:18px!important;padding:20px!important;box-shadow:0 5px 18px rgba(17,49,72,.04)!important}.v12-reports .section-heading{margin-bottom:14px}.v12-reports .section-heading h2{font-size:18px;color:var(--v12-ink)}
.v12-reports .section-heading .step{background:#e9f2ef;color:var(--v12-green);border-radius:8px}
.v12-reports .report-snapshot>div{border-radius:13px;background:#f8fafb;border:1px solid #e9eef1}.v12-reports .report-footnote{max-width:900px;color:#89959e;font-size:11px;margin:12px 2px}
.v12-reports .saved-estimates-table th{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#738591;background:#f8fafb}.v12-reports .saved-estimates-table td{font-size:12px}

/* Settings */
.v12-settings{max-width:1180px;padding-bottom:70px}
.v12-settings>.saved-page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:24px 26px;margin-bottom:14px;border:1px solid var(--v12-line);border-radius:20px;background:linear-gradient(135deg,#fff,#f8fbfc);box-shadow:var(--v12-shadow)}
.v12-settings>.saved-page-header h2{margin:3px 0 5px;font-size:31px}.v12-settings>.saved-page-header p{margin-bottom:0;color:var(--v12-muted)}
.v12-settings #settingsForm{display:grid;gap:14px}.v12-settings #settingsForm>.card{margin:0;border-radius:18px;padding:21px 22px;box-shadow:0 5px 18px rgba(17,49,72,.04)}
.v12-settings .section-heading{margin-bottom:17px}.v12-settings .section-heading h2{font-size:18px}.v12-settings .section-heading .step{background:#e9f2ef;color:var(--v12-green);border-radius:8px}
.v12-settings .form-group label{font-size:11px;text-transform:none;color:#5f7382;font-weight:850}.v12-settings .field-help,.v12-settings .job-help-text{color:#84939e;font-size:11px;line-height:1.55}
.v12-settings .settings-logo-card{border-radius:15px;background:#f8fafb;border:1px solid #e4ebef;padding:17px}.v12-settings .settings-logo-preview{border-radius:14px;background:#fff}
.v12-settings .email-connection-summary{border-radius:14px;background:#f8fafb;border:1px solid #e4ebef}.v12-settings .email-provider-card{border-radius:14px;border-color:#e0e8ed;transition:.15s ease}.v12-settings .email-provider-card:hover{transform:translateY(-1px);border-color:#b8cbd7;box-shadow:0 7px 18px rgba(17,49,72,.06)}
.v12-settings .bottom-actions{position:sticky;bottom:12px;z-index:5;display:flex;justify-content:flex-end;padding:10px;border:1px solid #dce5ea;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-radius:15px;box-shadow:0 10px 30px rgba(17,49,72,.10)}
.v12-settings .bottom-actions .btn{min-width:190px}

/* Global responsive finishing */
@media(max-width:1000px){.v12-reports .reports-kpi-grid{grid-template-columns:repeat(3,1fr)}.v12-reports .reports-grid{grid-template-columns:1fr}.v12-settings>.saved-page-header{align-items:flex-start}}
@media(max-width:700px){body{background:#f7f9fa}.v12-reports,.v12-settings{padding:10px 10px 90px}.v12-reports .reports-hero,.v12-settings>.saved-page-header{padding:18px;border-radius:16px;flex-direction:column;align-items:stretch}.v12-reports .reports-actions,.v12-settings>.saved-page-header .header-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.v12-reports .reports-actions select{grid-column:1/-1;width:100%}.v12-reports .reports-actions .btn,.v12-settings>.saved-page-header .btn{width:100%}.v12-reports .reports-kpi-grid{grid-template-columns:1fr 1fr}.v12-reports .report-kpi{padding:14px}.v12-reports .report-kpi strong{font-size:18px}.v12-reports .report-panel{padding:15px!important;overflow:hidden}.v12-reports .table-wrapper{overflow-x:auto}.v12-reports .saved-estimates-table{min-width:720px}.v12-settings>.saved-page-header h2{font-size:27px}.v12-settings #settingsForm>.card{padding:17px 15px}.v12-settings .settings-profile-grid,.v12-settings .form-grid{grid-template-columns:1fr}.v12-settings .email-provider-grid{grid-template-columns:1fr}.v12-settings .bottom-actions{bottom:76px}.v12-settings .bottom-actions .btn{width:100%}}
@media(max-width:430px){.v12-reports .reports-kpi-grid{grid-template-columns:1fr 1fr}.v12-reports .report-kpi span{font-size:9px}.v12-reports .report-kpi small{display:none}}

@media print{.sidebar,.topbar,.reports-actions,.v12-settings>.saved-page-header .header-actions,.v12-settings .bottom-actions{display:none!important}.v12-reports{padding:0!important}.v12-reports .report-panel,.v12-reports .report-kpi,.v12-reports .reports-hero{box-shadow:none!important;break-inside:avoid}}

/* =========================================================
   V12 STEP 10 — FINAL WORKFLOW / QA POLISH
   ========================================================= */
.app-confirm-dialog.danger .app-confirm-icon{background:#fff1f2;color:#b42318;border-color:#fecdd3}
.app-confirm-dialog.danger .app-confirm-primary{background:#b42318;border-color:#b42318}
.app-confirm-dialog.success .app-confirm-icon{background:#ecfdf3;color:#067647;border-color:#abefc6}
.app-confirm-dialog.success .app-confirm-primary{background:#067647;border-color:#067647}
.app-confirm-dialog.warning .app-confirm-icon{background:#fffaeb;color:#b54708;border-color:#fedf89}
.app-confirm-primary:focus-visible,.app-confirm-cancel:focus-visible{outline:3px solid rgba(22,101,216,.22);outline-offset:2px}
button:disabled,.btn:disabled{cursor:not-allowed;opacity:.58}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* V12.1 — production-readiness / data protection */
.v121-protection-card{margin-bottom:20px;border-color:rgba(22,101,52,.2);background:linear-gradient(135deg,#fff 0%,#f7fcf8 100%)}
.v121-protection-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}
.v121-protection-status>div{padding:14px 16px;border:1px solid var(--border,#dfe5ea);border-radius:14px;background:#fff;display:flex;flex-direction:column;gap:5px}
.v121-protection-status strong{font-size:.92rem;color:#16352a}.v121-protection-status span{font-size:.82rem;line-height:1.45;color:#65736d}
@media(max-width:760px){.v121-protection-status{grid-template-columns:1fr}}

/* =========================================================
   V12.3 GLOBAL SEARCH + NOTIFICATION CENTER
   ========================================================= */
.v123-command-center{display:grid;gap:8px;padding:10px 10px 14px;border-bottom:1px solid rgba(255,255,255,.09);margin-bottom:4px}
.v123-global-tool{position:relative;width:100%;min-height:42px;border:1px solid rgba(255,255,255,.10);background:rgba(255,255,255,.055);color:#eaf0f7;border-radius:11px;padding:0 11px;display:flex;align-items:center;gap:9px;text-align:left;cursor:pointer;transition:.16s ease;font:inherit}
.v123-global-tool:hover{background:rgba(255,255,255,.1);transform:translateY(-1px)}
.v123-tool-icon{font-size:19px;line-height:1}.v123-tool-label{font-weight:700;flex:1}.v123-global-tool kbd,.v123-search-box kbd{font:600 10px/1 system-ui;padding:5px 6px;border-radius:6px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.18);color:#aebbc9}
.v123-notification-badge{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#ef4444;color:white;font-size:11px;font-weight:800;display:grid;place-items:center}.v123-notification-badge[hidden]{display:none}
.v123-overlay{position:fixed;inset:0;z-index:2500;display:grid;place-items:start center;padding:9vh 20px 20px}.v123-overlay[hidden]{display:none}.v123-overlay-backdrop{position:absolute;inset:0;background:rgba(5,13,24,.56);backdrop-filter:blur(5px)}
.v123-search-panel{position:relative;width:min(760px,calc(100vw - 32px));max-height:78vh;background:#fff;border:1px solid #dce4ee;border-radius:20px;box-shadow:0 28px 80px rgba(5,18,38,.28);overflow:hidden;display:flex;flex-direction:column}
.v123-search-box{display:flex;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid #e8edf3}.v123-search-box>span{font-size:24px;color:#52657a}.v123-search-box input{flex:1;border:0;outline:0;font-size:17px;background:transparent;min-width:0}.v123-search-box kbd{color:#607286;background:#f5f7fa;border-color:#dbe2ea}
.v123-search-head{display:flex;align-items:end;justify-content:space-between;gap:20px;padding:17px 20px 10px}.v123-search-head h2{margin:2px 0 0;font-size:20px}.v123-search-head>span{font-size:12px;color:#748397;text-align:right}.v123-search-results{padding:4px 10px 14px;overflow:auto;min-height:170px}.v123-search-empty{padding:35px 18px;text-align:center;color:#718096}.v123-search-group{padding:8px 8px 4px;font-size:10px;letter-spacing:.12em;font-weight:800;color:#8491a3;text-transform:uppercase}.v123-search-result{width:100%;border:0;background:transparent;border-radius:12px;padding:11px 12px;display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:11px;text-align:left;cursor:pointer;color:#172033}.v123-search-result:hover,.v123-search-result.is-active{background:#f0f5fb}.v123-result-icon{width:36px;height:36px;border-radius:10px;background:#e9f0f8;display:grid;place-items:center;font-weight:800;color:#234a72}.v123-result-copy strong{display:block;font-size:14px}.v123-result-copy small{display:block;color:#718096;margin-top:3px}.v123-result-meta{font-size:12px;color:#52657a;font-weight:700}.v123-search-footer{display:flex;gap:18px;padding:10px 18px;border-top:1px solid #e8edf3;background:#fafbfd;color:#7b8796;font-size:11px}
.v123-notification-overlay{place-items:stretch end;padding:0}.v123-notification-panel{position:relative;width:min(430px,100vw);height:100vh;background:#fff;box-shadow:-22px 0 70px rgba(5,18,38,.24);display:flex;flex-direction:column}.v123-notification-header{padding:24px 22px 17px;border-bottom:1px solid #e7edf4;display:flex;justify-content:space-between;gap:16px}.v123-notification-header h2{margin:3px 0 4px;font-size:24px}.v123-notification-header p:last-child{margin:0;color:#718096;font-size:13px}.v123-notification-list{padding:12px;overflow:auto;flex:1}.v123-notification-item{width:100%;border:0;background:transparent;border-radius:14px;padding:13px;display:grid;grid-template-columns:38px 1fr auto;gap:11px;text-align:left;cursor:pointer;color:#172033}.v123-notification-item:hover{background:#f4f7fa}.v123-notification-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#fff4dc;color:#8a5a00;font-weight:800}.v123-notification-item.danger .v123-notification-icon{background:#fee9e8;color:#b42318}.v123-notification-item.info .v123-notification-icon{background:#e8f1fb;color:#245a91}.v123-notification-copy strong{display:block;font-size:13px}.v123-notification-copy small{display:block;color:#718096;line-height:1.4;margin-top:3px}.v123-notification-arrow{color:#98a4b3;align-self:center}.v123-notification-footer{padding:14px 18px;border-top:1px solid #e7edf4;display:flex;gap:9px;justify-content:flex-end}.v123-notification-empty{text-align:center;padding:55px 25px;color:#718096}.v123-notification-empty strong{display:block;color:#25364a;font-size:16px;margin-bottom:6px}
@media(max-width:760px){.v123-overlay{padding:0;place-items:stretch}.v123-search-panel{width:100%;max-height:100vh;height:100vh;border-radius:0;border:0}.v123-search-head{align-items:flex-start;flex-direction:column;gap:5px}.v123-search-head>span{text-align:left}.v123-search-footer{justify-content:center}.v123-search-footer span:first-child,.v123-search-footer span:last-child{display:none}.v123-result-meta{display:none}.v123-search-result{grid-template-columns:36px 1fr}.v123-command-center{grid-template-columns:1fr 1fr}.v123-global-tool kbd,.v123-tool-label{display:none}.v123-global-tool{justify-content:center}.v123-notification-panel{width:100%}}


/* V12.3.1 — visible sidebar search + notification fix */
.v123-sidebar-tool{position:relative}
.v123-sidebar-tool kbd{margin-left:auto;font:700 9px/1 system-ui;padding:4px 5px;border-radius:5px;border:1px solid rgba(255,255,255,.16);background:rgba(0,0,0,.14);color:#c9d7e3}
.v123-sidebar-tool .v123-notification-badge{margin-left:auto;flex:0 0 auto}
@media(max-width:1100px){.v123-sidebar-tool kbd{display:none}.v123-sidebar-tool .v123-notification-badge{position:absolute;right:5px;top:4px}}


/* =========================================================
   V12.3.2 — VERIFIED COMMAND CENTER + DESKTOP SIDEBAR
   These rules deliberately override older responsive sidebar
   rules so Search and Notifications cannot disappear on desktop.
   ========================================================= */
.v1232-version-badge{display:inline-flex;vertical-align:middle;margin-left:6px;padding:3px 6px;border-radius:999px;background:rgba(255,255,255,.14);color:#dceaf5;font-size:8px;font-weight:900;letter-spacing:.05em}
.v1232-required-tool{display:flex!important;visibility:visible!important;opacity:1!important;min-height:46px!important;background:rgba(255,255,255,.045)!important;border:1px solid rgba(255,255,255,.07)!important}
.v1232-required-tool:hover{background:rgba(255,255,255,.11)!important}
.v1232-required-tool .sidebar-icon{font-size:15px}
@media(min-width:1101px){
  :root{--sidebar-width:292px}
  .app-sidebar .sidebar-content{padding-left:20px;padding-right:20px}
  .sidebar-link{min-height:44px;font-size:14px;padding:10px 12px}
  .v1232-required-tool{margin:4px 0!important}
  .container{max-width:1540px}
}
@media(min-width:1500px){
  :root{--sidebar-width:306px}
  .app-sidebar .sidebar-content{padding-left:22px;padding-right:22px}
}
@media(max-width:1100px) and (min-width:761px){
  .v1232-required-tool{display:flex!important}
  .v1232-required-tool .sidebar-icon{display:inline-grid!important}
}

/* =========================================================
   V12.3.3 — GLOBAL UTILITIES / SIDEBAR OPTIMIZATION
   Search is a global command launcher; notifications are a
   compact attention utility rather than full navigation rows.
========================================================= */
.v1233-sidebar-utilities{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px;padding:0 6px 10px;margin:-1px 0 3px;border-bottom:1px solid rgba(255,255,255,.065)}
.v1233-search-launcher,.v1233-notification-launcher{border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.07);color:#eef6fc;cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .16s ease,box-shadow .16s ease}
.v1233-search-launcher{min-width:0;height:42px;border-radius:11px;padding:0 9px;display:flex;align-items:center;gap:8px;text-align:left}
.v1233-search-launcher:hover,.v1233-notification-launcher:hover{background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.22);box-shadow:0 5px 16px rgba(0,0,0,.10)}
.v1233-search-launcher:active,.v1233-notification-launcher:active{transform:translateY(1px)}
.v1233-search-icon{width:20px;flex:0 0 20px;display:grid;place-items:center;font-size:18px;color:#d9e7f2}
.v1233-search-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:750;color:#f3f8fc}
.v1233-search-launcher kbd{margin-left:auto;flex:0 0 auto;font:800 8.5px/1 system-ui;padding:4px 5px;border-radius:5px;border:1px solid rgba(255,255,255,.16);background:rgba(0,0,0,.14);color:#c9d7e3}
.v1233-notification-launcher{height:42px;width:42px;border-radius:11px;display:grid;place-items:center;position:relative;font-size:15px}
.v1233-notification-launcher .v123-notification-badge{position:absolute;right:-5px;top:-6px;min-width:19px;height:19px;padding:0 5px;border:2px solid #123d61;font-size:9px;box-shadow:0 2px 7px rgba(0,0,0,.18)}
@media(max-width:900px) and (min-width:621px){
  .v1233-sidebar-utilities{grid-template-columns:1fr;padding:0 0 10px;justify-items:center}
  .v1233-search-launcher{width:48px;height:44px;padding:0;justify-content:center}
  .v1233-search-label,.v1233-search-launcher kbd{display:none}
  .v1233-notification-launcher{width:48px;height:44px}
}
@media(max-width:620px){
  .v1233-sidebar-utilities{position:fixed;right:12px;bottom:82px;z-index:1100;display:flex;padding:0;margin:0;border:0;gap:8px}
  .v1233-search-launcher{width:46px;height:46px;padding:0;justify-content:center;border-radius:14px;background:#123d61;box-shadow:0 8px 24px rgba(15,35,55,.20)}
  .v1233-search-label,.v1233-search-launcher kbd{display:none}
  .v1233-notification-launcher{width:46px;height:46px;border-radius:14px;background:#123d61;box-shadow:0 8px 24px rgba(15,35,55,.20)}
}


/* =========================================================
   V12.3.4 — COMPACT UTILITY BAR
   Search + notifications are global tools, not nav rows.
========================================================= */
.v1234-utility-bar{
  display:grid;
  grid-template-columns:minmax(0,1fr) 46px;
  gap:9px;
  padding:4px 0 14px;
  margin:0 0 6px;
  border-bottom:1px solid rgba(255,255,255,.09);
}
.v1234-search-box,.v1234-bell-button{
  border:1px solid rgba(255,255,255,.15);
  background:rgba(255,255,255,.07);
  color:#f5f9fd;
  cursor:pointer;
  transition:background .16s ease,border-color .16s ease,transform .16s ease,box-shadow .16s ease;
}
.v1234-search-box:hover,.v1234-bell-button:hover{
  background:rgba(255,255,255,.13);
  border-color:rgba(255,255,255,.25);
  box-shadow:0 6px 20px rgba(0,0,0,.12);
}
.v1234-search-box:active,.v1234-bell-button:active{transform:translateY(1px)}
.v1234-search-box{
  min-width:0;
  min-height:50px;
  border-radius:13px;
  padding:8px 10px;
  display:grid;
  grid-template-columns:24px minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  text-align:left;
}
.v1234-search-icon{
  width:24px;height:24px;display:grid;place-items:center;
  font-size:20px;color:#d9e7f2;
}
.v1234-search-copy{min-width:0;display:flex;flex-direction:column;gap:1px}
.v1234-search-copy strong{font-size:12.5px;line-height:1.15;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v1234-search-copy small{font-size:9.5px;line-height:1.2;color:#a9bfd1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v1234-search-box kbd{
  font:800 8px/1 system-ui;padding:5px 6px;border-radius:6px;
  border:1px solid rgba(255,255,255,.16);background:rgba(0,0,0,.16);color:#cbd9e5;
}
.v1234-bell-button{
  width:46px;height:50px;border-radius:13px;display:grid;place-items:center;position:relative;
}
.v1234-bell-icon{font-size:17px;line-height:1}
.v1234-bell-button .v123-notification-badge{
  position:absolute;right:-6px;top:-7px;min-width:20px;height:20px;padding:0 5px;
  border:2px solid #123d61;font-size:9px;box-shadow:0 2px 8px rgba(0,0,0,.2)
}
/* Retire previous V12.3.1/3 full-row utility styles if stale markup ever survives. */
.v1232-required-tool,.v123-sidebar-tool{display:none!important}

@media(max-width:1100px) and (min-width:761px){
  .v1234-utility-bar{grid-template-columns:1fr;justify-items:center;padding-bottom:12px}
  .v1234-search-box{width:48px;height:46px;min-height:46px;padding:0;display:grid;grid-template-columns:1fr;place-items:center}
  .v1234-search-copy,.v1234-search-box kbd{display:none}
  .v1234-bell-button{width:48px;height:46px}
}
@media(max-width:760px){
  .v1234-utility-bar{
    position:fixed;right:14px;bottom:82px;z-index:1100;display:flex;
    padding:0;margin:0;border:0;gap:8px;
  }
  .v1234-search-box{width:48px;height:48px;min-height:48px;padding:0;display:grid;grid-template-columns:1fr;place-items:center;border-radius:14px;background:#123d61;box-shadow:0 9px 26px rgba(15,35,55,.22)}
  .v1234-search-copy,.v1234-search-box kbd{display:none}
  .v1234-bell-button{width:48px;height:48px;border-radius:14px;background:#123d61;box-shadow:0 9px 26px rgba(15,35,55,.22)}
}

/* V12.5.4 signed acceptance receipt */
.accepted-package-note{margin-top:4px;font-size:11px;font-weight:800;color:#166534;white-space:nowrap}.qa-signed{border-color:#bbf7d0;background:#f0fdf4;color:#166534}

/* V12.6 Jobsite / Field Mode */
.field-mode-card{overflow:hidden}.field-mode-subtitle{margin:4px 0 0;color:#718096;font-size:12px}.field-quick-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.field-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0 18px}.field-summary-grid>div{padding:14px;border:1px solid #e0e8ec;border-radius:12px;background:#f8fafb}.field-summary-grid span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#718096;font-weight:800}.field-summary-grid strong{display:block;margin-top:4px;font-size:18px;color:#173b5d}.daily-log-composer{padding:16px;margin:12px 0 18px;border:1px solid #cfe0da;border-radius:14px;background:#f7fbf9}.daily-log-list{display:grid;gap:10px}.daily-log-item{padding:15px 16px;border:1px solid #e0e8ec;border-radius:13px;background:#fff}.daily-log-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.daily-log-head div{display:flex;gap:10px;align-items:center}.daily-log-head span{font-size:12px;color:#718096}.daily-log-item p{margin:9px 0;color:#334e68;font-size:13px}.daily-log-meta{display:flex;gap:16px;flex-wrap:wrap;padding-top:9px;border-top:1px solid #edf1f3;font-size:11px;color:#718096}@media(max-width:700px){.field-summary-grid{grid-template-columns:1fr 1fr}.field-quick-actions{display:grid;grid-template-columns:1fr 1fr}.field-quick-actions .btn{width:100%;min-height:46px}.daily-log-composer{padding:13px}.daily-log-meta{gap:8px;flex-direction:column}}

/* V12.7 Change Orders + Job Photos/Documents */
.field-photo-section{margin:18px 0;padding:16px;border:1px solid #e0e8ec;border-radius:14px;background:#fbfcfd}.field-photo-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.field-photo-status{padding:10px 12px;border-radius:10px;background:#eef7f3;color:#245c48;font-size:12px;font-weight:700}.field-photo-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:12px}.field-photo-card{border:1px solid #e0e8ec;border-radius:12px;overflow:hidden;background:#fff}.field-photo-card img{width:100%;height:120px;object-fit:cover;display:block}.field-photo-card .fp-body{padding:9px}.field-photo-card strong{font-size:12px}.field-photo-card small{display:block;color:#718096;margin-top:3px}.field-photo-card a{font-size:11px;font-weight:800}.co-approved{font-weight:800}.contract-value-card{border-color:#cfe0da!important}@media(max-width:700px){.field-photo-actions{display:grid;grid-template-columns:1fr 1fr}.field-photo-actions .btn{min-height:46px}.field-photo-gallery{grid-template-columns:1fr 1fr}}


/* V12.9 Automation & Business Dashboard */
.v129-next-actions{display:grid;gap:8px}.v129-action-row{width:100%;display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;text-align:left}.v129-action-row>span:nth-child(2){min-width:0}.v129-action-row em{font-size:11px;font-style:normal;font-weight:850;color:#315f7d;white-space:nowrap}.v129-action-row .v12-attention-icon.success{background:#e9f8ef;color:#17653b}.v129-action-row .v12-attention-icon.info{background:#edf6fb;color:#1f5e84}.v129-all-clear{display:flex;gap:11px;align-items:flex-start;padding:14px;border:1px solid #cfe7d7;border-radius:12px;background:#f5fbf7;color:#245c48}.v129-all-clear>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#daf2e2;font-weight:900}.v129-all-clear strong,.v129-all-clear small{display:block}.v129-all-clear small{margin-top:3px;color:#607d70;line-height:1.4}.v129-loading-action{padding:14px;color:#718096;font-size:12px}@media(max-width:700px){.v129-action-row{grid-template-columns:auto minmax(0,1fr)}.v129-action-row em{grid-column:2;justify-self:start}}


/* V13.0.1 Production Foundation — responsive desktop workspace */
@media (min-width: 1501px){
  body:not(.printing-estimate):not(.printing-invoice) .container{max-width:none;width:calc(100% - 56px);margin-left:28px;margin-right:28px;padding-left:24px;padding-right:24px}
  .v12-dashboard{max-width:none!important;width:calc(100% - 56px)}
  .v12-dash-main-grid{grid-template-columns:minmax(0,1.8fr) minmax(360px,.9fr)}
  .v12-dash-bottom-grid{grid-template-columns:minmax(320px,.72fr) minmax(0,1.65fr)}
}
@media (min-width: 2100px){
  body:not(.printing-estimate):not(.printing-invoice) .container{width:calc(100% - 80px);margin-left:40px;margin-right:40px}
  .v12-dashboard{width:calc(100% - 80px)}
}


/* V13.0.1 Dashboard density fix — prevent grid siblings from forcing equal tall cards */
.v12-dash-main-grid{align-items:start}
.v12-today-panel,.v12-attention-panel{align-self:start}
@media (min-width:1101px){
  .v12-dash-main-grid:not(.v12-finance-row) .v12-dash-panel{height:auto;min-height:0}
}

/* V13.0.2 — hard fix: dashboard cards must size to their own content */
#dashboardView .v12-dash-main-grid{
  align-items:start !important;
  grid-auto-rows:max-content !important;
}
#dashboardView .v12-dash-main-grid > .v12-dash-panel,
#dashboardView .v12-dash-main-grid > .card,
#dashboardView .v12-dash-main-grid > aside{
  align-self:start !important;
  height:max-content !important;
  min-height:0 !important;
}
#dashboardView .v12-today-panel,
#dashboardView .v12-attention-panel{
  height:max-content !important;
  min-height:0 !important;
}

/* V13.1 team users */
.team-users-list{display:grid;gap:10px;margin:14px 0 18px}.team-user-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 15px;border:1px solid var(--border,#dfe7ee);border-radius:12px;background:#fff}.team-user-row small{display:block;margin-top:4px;color:#687b8e}.team-user-create{margin-top:8px}

/* V13.2 Backup & Recovery */
.backup-history-list{display:grid;gap:10px;margin-top:14px}.backup-history-row{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(150px,.8fr) 110px auto;gap:14px;align-items:center;padding:12px 14px;border:1px solid var(--border,#dbe3ec);border-radius:12px;background:#fff}.backup-history-name{font-weight:800;color:var(--ink,#17324f);overflow-wrap:anywhere}.backup-history-meta{font-size:12px;color:var(--muted,#6b7a90)}.backup-history-type{text-transform:capitalize;font-size:12px;font-weight:800}.backup-history-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}@media(max-width:760px){.backup-history-row{grid-template-columns:1fr}.backup-history-actions{justify-content:flex-start}}

/* V13.3 Mobile / PWA */
.pwa-connection-status{margin:0 8px 8px;padding:7px 10px;border-radius:999px;background:rgba(65,181,121,.14);color:#bfe9d1;font-size:11px;font-weight:800;text-align:center}.pwa-connection-status.is-offline{background:rgba(245,185,66,.16);color:#ffe0a1}.pwa-install-btn{border:1px solid rgba(255,255,255,.12)!important;margin-bottom:7px}.pwa-install-btn.pwa-install-waiting{opacity:.82}
@media(max-width:760px){button,.btn,.sidebar-link,input,select,textarea{min-height:44px}.container{padding-left:14px!important;padding-right:14px!important}.card{border-radius:14px}.sidebar-nav{overscroll-behavior:contain}.field-photo-actions input[type=file]{max-width:100%}.field-photo-card img{height:150px}.pwa-connection-status{font-size:12px}}
@media(display-mode:standalone){body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.pwa-install-btn{display:none!important}}
