/* UpTime Invoice Pro V17.12.2 — app-current.css
   Current invoice, payment, health, detail and production polish overrides.
   Cascade segment 2495-3452; keep load order unchanged. */
/* V16.9 Final Brand Polish Pro */
:root{--font-display:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
.main h1,.main h2,.main h3,.docCard h1,.releaseHero h1,.qaHero h1{letter-spacing:-.045em}
.eyebrow{letter-spacing:.14em}
.muted{max-width:78ch}
.side .footer{line-height:1.45;opacity:.9}
.clientPortfolioRow,.docListRow,.projectCard,.releaseCard,.qaCard{overflow:hidden}
.clientPortfolioIdentity strong,.docListIdentity strong,.projectCard h3{line-height:1.15}
.clientPortfolioIdentity small,.docListIdentity small{line-height:1.3}
.settingsProCard .muted,.releaseCard .muted,.qaCard .muted{line-height:1.55}
.brandStandardCard{background:linear-gradient(180deg,rgba(37,214,162,.085),rgba(255,255,255,.025))!important;border-color:rgba(37,214,162,.22)!important}
.releaseCode,.qaCode{white-space:pre-wrap;word-break:break-word;line-height:1.5}
@media(max-width:760px){.releaseHero h1,.qaHero h1{font-size:30px!important}.releaseHeroPanel{grid-template-columns:1fr!important}.settingsProFooterActions{display:grid!important;grid-template-columns:1fr!important}.settingsProFooterActions a,.settingsProFooterActions button{width:100%}.clientPortfolioRow{align-items:stretch}}
@media print{.bootLoader,.mobileTop,.side,.topActions,.releaseActions,.qaHeroActions{display:none!important}.releaseShell,.qaShell,.panel,.releaseCard,.qaCard{box-shadow:none!important}}

/* V17.0.9 Direct Invoice Workspace */
.clientDetailHeroActions .clientDetailNewInvoice{background:linear-gradient(135deg,#25d6a2,#2dd4bf)!important;color:#041914!important;border-color:rgba(37,214,162,.65)!important;box-shadow:0 14px 32px rgba(37,214,162,.18)}
.clientDetailHeroActions .clientDetailNewEstimate{border-color:rgba(96,165,250,.32)!important}
.clientDetailSectionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:12px}
.clientDetailSectionHead h3{margin-bottom:0}.clientDetailSectionHead .eyebrow{margin-bottom:6px}
.clientDetailEmptyAction{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px dashed rgba(37,214,162,.32);background:linear-gradient(135deg,rgba(37,214,162,.08),rgba(96,165,250,.035));border-radius:18px;padding:16px}.clientDetailEmptyAction strong{display:block;color:#fff;font-size:16px}.clientDetailEmptyAction span{display:block;color:var(--muted);font-weight:800;margin-top:4px;line-height:1.35}.clientDetailEmptyAction .tiny{flex:0 0 auto}
.clientPreselectNotice{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:18px;background:linear-gradient(135deg,rgba(37,214,162,.14),rgba(37,214,162,.05));border:1px solid rgba(37,214,162,.30);color:#dffef5}.clientPreselectNotice strong{text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:#5fffd0}.clientPreselectNotice span{font-weight:950;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#invoiceForm{scroll-margin-top:22px}#estimateForm{scroll-margin-top:22px}
@media(max-width:760px){.clientDetailSectionHead{display:grid}.clientDetailSectionHead .tiny{width:100%}.clientDetailEmptyAction{display:grid}.clientDetailEmptyAction .tiny{width:100%}.clientPreselectNotice{display:grid;align-items:start}.clientPreselectNotice span{white-space:normal}}

/* V17.0.9 Direct Invoice + Multi Item Studio */
.docLineItems{display:grid;gap:12px}
.docLineItem{border:1px solid rgba(255,255,255,.12);background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.02));border-radius:18px;padding:13px;display:grid;gap:11px}
.docLineTop{display:flex;align-items:center;justify-content:space-between;gap:10px}
.docLineTop strong{font-size:13px;color:#eaf2ff;letter-spacing:.02em}
.docLineGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.addDocLineItem{width:100%;min-height:42px;border-style:dashed!important;border-color:rgba(37,214,162,.28)!important;color:#bbf7d0!important}
.clientDetailHeroActions .clientDetailNewInvoice,.clientDetailSectionHead .primary[href*="newInvoiceClient"],.clientDetailEmptyAction .primary[href*="newInvoiceClient"]{box-shadow:0 12px 28px rgba(37,214,162,.22)!important}
@media(max-width:760px){.docLineGrid{grid-template-columns:1fr}.docLineItem{padding:12px}.docLineTop{align-items:flex-start}.docLineTop .tiny{min-width:auto}}

/* V17.3 Custom Invoice Billing + Quick Client */
.invoiceClientBlock{display:grid;gap:10px}
.invoiceClientHead{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.invoiceClientHead>label{margin:0}
.quickInvoiceClient{display:grid;gap:11px;padding:14px;border:1px solid rgba(37,214,162,.28);border-radius:18px;background:linear-gradient(135deg,rgba(37,214,162,.10),rgba(15,23,42,.74))}
.quickInvoiceClient .muted{font-size:11px;line-height:1.4;margin:0}
.invoiceItemWords{display:grid;gap:10px;padding:12px;border:1px solid rgba(45,212,191,.20);border-radius:15px;background:rgba(15,118,110,.08)}
.docLineItem.isCustomCharge{border-color:rgba(37,214,162,.42);box-shadow:0 0 0 1px rgba(37,214,162,.08) inset}
.docLineItem.isCustomCharge .docLineTop strong:after{content:' · Custom';color:#5fffd0;font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.invoiceItemHint,.invoiceFormHint{margin:0;color:var(--muted);font-size:11px;line-height:1.45}
.publicInvoiceMessage{border-color:rgba(45,212,191,.26)!important;background:linear-gradient(135deg,rgba(15,118,110,.12),rgba(255,255,255,.025))!important}
.publicInvoiceMessage p{margin:0;white-space:pre-wrap;line-height:1.65;color:#dbeafe}
.invoiceMessageEditor{display:grid;gap:12px}
.invoiceMessageEditor textarea{width:100%;resize:vertical}
.invoiceMessageEditor .docDetailInlineActions{align-items:center}
.invoiceMessageEditor .docDetailInlineActions .muted{font-size:12px}
@media(max-width:760px){
  .invoiceClientHead{grid-template-columns:1fr}
  .invoiceClientHead button,.quickInvoiceClient button{width:100%}
  .quickInvoiceClient .split{grid-template-columns:1fr!important}
  .invoiceMessageEditor .docDetailInlineActions{display:grid}
}

/* V17.5.2 Invoice Studio width + dark native select menus */
select{
  color-scheme:dark;
  background-color:#07101f!important;
  color:#f4f8ff!important;
}
select option,
select optgroup{
  background-color:#0b1424!important;
  color:#f4f8ff!important;
}
select option:checked{
  background:#2563eb!important;
  color:#fff!important;
}
select option:disabled{
  color:#7f8da6!important;
}

.invoiceWorkspace{
  grid-template-columns:minmax(470px,520px) minmax(0,1fr);
  gap:18px;
}
.invoiceWorkspace #invoiceForm{
  width:100%;
  overflow:visible;
}
.invoiceWorkspace .docProPanelHead{
  align-items:flex-start;
}
.invoiceWorkspace .docProPanelHead>div{
  min-width:0;
}
.invoiceWorkspace .docProPanelHead .badge{
  flex:0 0 auto;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  writing-mode:horizontal-tb!important;
  min-width:max-content;
  padding:7px 11px;
}
.invoiceWorkspace .invoiceClientHead{
  grid-template-columns:minmax(0,1fr) max-content;
}
.invoiceWorkspace .invoiceClientHead .tiny{
  white-space:nowrap;
}
.invoiceWorkspace .lineService,
.invoiceWorkspace #invoiceClientSelect{
  cursor:pointer;
}

/* When the document library would become too narrow, stack both panels cleanly. */
@media(max-width:1600px){
  .invoiceWorkspace{
    grid-template-columns:1fr;
  }
  .invoiceWorkspace .docProEditor{
    position:relative;
    top:auto;
  }
  .invoiceWorkspace #invoiceForm{
    max-width:none;
  }
}
@media(max-width:760px){
  .invoiceWorkspace{
    gap:12px;
  }
  .invoiceWorkspace .invoiceClientHead{
    grid-template-columns:1fr;
  }
  .invoiceWorkspace .docProPanelHead .badge{
    justify-self:start;
  }
}


/* V17.5.2 deployment-path recovery marker. Entry HTML now loads this file explicitly from /app/assets/. */


/* V17.5.2 Per-invoice payment destination selector */
.paymentDestinationChooser,.invoicePaymentDestinationEditor{display:grid;gap:12px}
.paymentDestinationChooser{padding:14px;border:1px solid rgba(37,214,162,.26);border-radius:18px;background:linear-gradient(135deg,rgba(37,214,162,.09),rgba(15,23,42,.70))}
.paymentDestinationChooser>label,.invoicePaymentDestinationEditor>label{margin:0}
.paymentDestinationPreview{display:grid;gap:5px;padding:13px 14px;border:1px solid rgba(255,255,255,.09);border-radius:16px;background:rgba(3,9,20,.34);min-width:0}
.paymentDestinationPreview span{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.11em;font-weight:950}
.paymentDestinationPreview strong{color:#fff;font-size:16px;line-height:1.25;overflow-wrap:anywhere}
.paymentDestinationPreview small{color:#9fb1cf;font-size:11px;line-height:1.45;font-weight:750}
.paymentDestinationInstructions{white-space:pre-wrap!important;border:1px solid rgba(255,255,255,.08);background:rgba(3,9,20,.28);border-radius:16px;padding:14px;margin:0!important;line-height:1.6!important}
.paymentProfileGrid.singleDestination{grid-template-columns:1fr!important}
.paymentProfileCard.zelle{border-color:rgba(96,165,250,.30);background:linear-gradient(135deg,rgba(37,214,162,.10),rgba(96,165,250,.10))}
.paymentProfileCard.zelle:before{background:rgba(96,165,250,.18)}
.paymentIdentityBox.zelleIdentity{grid-template-columns:1.35fr 1fr}
.invoicePaymentDestinationEditor .docDetailInlineActions{align-items:center}
.invoicePaymentDestinationEditor .docDetailInlineActions .muted{font-size:12px}
@media(max-width:760px){
  .paymentIdentityBox.zelleIdentity{grid-template-columns:1fr}
  .invoicePaymentDestinationEditor .docDetailInlineActions{display:grid}
}

/* V17.5.2 Invoice Edit Studio */
.docListActions{gap:7px;flex-wrap:wrap}
.documentDetailActions .warn{background:linear-gradient(135deg,#f59e0b,#fbbf24);color:#1a1202;border-color:rgba(251,191,36,.55);font-weight:950}
.invoiceEditLocked{display:inline-flex;align-items:center;min-height:36px;padding:8px 12px;border:1px solid rgba(255,255,255,.11);border-radius:999px;background:rgba(255,255,255,.045);color:#aebbd0;font-size:11px;font-weight:900;white-space:nowrap}
.invoiceItemsSummary{display:grid;gap:14px}
.invoiceDetailItemsList{display:grid;gap:9px}
.invoiceDetailItemRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 14px;border:1px solid rgba(255,255,255,.075);border-radius:17px;background:linear-gradient(180deg,rgba(255,255,255,.042),rgba(255,255,255,.018));min-width:0}
.invoiceDetailItemRow>div:first-child{min-width:0}
.invoiceDetailItemRow strong{display:block;color:#fff;font-size:15px;line-height:1.25}
.invoiceDetailItemRow span{display:block;color:#a7b6ce;font-size:12px;line-height:1.45;margin-top:4px;white-space:pre-wrap}
.invoiceDetailItemNumbers{text-align:right;min-width:150px}
.invoiceDetailItemNumbers>span{margin:0;color:#cbd5e1;font-size:12px;font-weight:850;white-space:nowrap}
.invoiceDetailItemNumbers small{display:block;color:#fbbf24;margin-top:3px;font-size:10px;font-weight:850}
.invoiceDetailItemNumbers b{display:block;color:#fff;font-size:17px;margin-top:5px}
.invoiceSummaryTotals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.invoiceSummaryTotals>div{padding:11px 12px;border:1px solid rgba(255,255,255,.075);border-radius:15px;background:rgba(255,255,255,.028)}
.invoiceSummaryTotals span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.08em;font-weight:950}
.invoiceSummaryTotals b{display:block;color:#fff;font-size:15px;margin-top:5px}
.invoiceSummaryTotals .grand{border-color:rgba(37,214,162,.30);background:rgba(37,214,162,.08)}
.invoiceSummaryTotals .grand b{color:#5fffd0}
.invoiceFullEditor{display:grid;gap:16px;border-color:rgba(251,191,36,.30)!important;background:radial-gradient(circle at 100% 0,rgba(251,191,36,.10),transparent 30%),linear-gradient(180deg,rgba(16,27,49,.96),rgba(7,13,25,.98))!important;scroll-margin-top:18px}
.invoiceFullEditor.hidden{display:none!important}
.invoiceEditHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.invoiceEditHeader h3{margin:1px 0 5px;font-size:25px;letter-spacing:-.035em}
.invoiceEditHeader .muted{margin:0;max-width:850px;line-height:1.5}
.invoiceEditNotice,.invoiceEditWarning{display:grid;gap:4px;padding:13px 14px;border-radius:17px}
.invoiceEditNotice{border:1px solid rgba(37,214,162,.24);background:rgba(37,214,162,.075)}
.invoiceEditWarning{border:1px solid rgba(251,191,36,.30);background:rgba(251,191,36,.075)}
.invoiceEditNotice strong,.invoiceEditWarning strong{color:#fff;font-size:13px}
.invoiceEditNotice span,.invoiceEditWarning span{color:#b7c4d8;font-size:12px;line-height:1.45}
.invoiceEditGrid{display:grid;grid-template-columns:minmax(240px,1.4fr) repeat(3,minmax(155px,.65fr));gap:11px;align-items:end}
.invoiceEditGrid label{margin:0}
.invoiceEditGrid label small{display:block;color:#fbbf24;margin-top:5px;font-size:10px;line-height:1.35}
.invoiceEditItemsSection{display:grid;gap:12px;padding:14px;border:1px solid rgba(255,255,255,.085);border-radius:20px;background:rgba(3,9,20,.26)}
.invoiceEditSectionHead{display:flex;justify-content:space-between;align-items:center;gap:12px}
.invoiceEditSectionHead span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.09em;font-weight:950}
.invoiceEditSectionHead strong{display:block;color:#fff;font-size:16px;margin-top:3px}
.invoiceFullEditor .docLineItem{background:linear-gradient(180deg,rgba(17,28,50,.92),rgba(8,15,28,.94));border-color:rgba(255,255,255,.10)}
.invoiceFullEditor .docLineTop strong{font-size:14px}
.invoiceFullEditor .invoiceItemWords{background:rgba(15,118,110,.07)}
.invoiceEditPayment{margin:0}
.invoiceEditPayment .paymentDestinationInstructions{max-height:180px;overflow:auto}
.invoiceEditTotals{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.invoiceEditTotals>div{padding:12px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.03)}
.invoiceEditTotals span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.085em;font-weight:950}
.invoiceEditTotals strong{display:block;color:#fff;font-size:17px;margin-top:6px;overflow-wrap:anywhere}
.invoiceEditTotals .grand{border-color:rgba(37,214,162,.32);background:rgba(37,214,162,.09)}
.invoiceEditTotals .grand strong{color:#5fffd0}
.invoiceEditActions{display:flex;gap:10px;flex-wrap:wrap}
.invoiceEditActions button{min-width:180px}
.invoiceEditLockPanel>div{display:flex;align-items:center;gap:14px;padding:2px}
.invoiceEditLockPanel>div>span{width:46px;height:46px;display:grid;place-items:center;border-radius:15px;background:rgba(255,255,255,.06);font-size:22px;flex:0 0 auto}
.invoiceEditLockPanel h3{margin:1px 0 5px}
.invoiceEditLockPanel p{margin:0}
.invoiceReadOnlyBlock{display:grid;gap:12px}
.invoiceReadOnlyBlock>.documentDetailText{margin:0;padding:13px 14px;border:1px solid rgba(255,255,255,.07);border-radius:16px;background:rgba(3,9,20,.25)}
@media(max-width:1100px){
  .invoiceEditGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .invoiceEditTotals{grid-template-columns:repeat(3,minmax(0,1fr))}
  .invoiceSummaryTotals{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .invoiceDetailItemRow{grid-template-columns:1fr}
  .invoiceDetailItemNumbers{text-align:left;min-width:0;display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:end}
  .invoiceDetailItemNumbers small{grid-column:1/-1}
  .invoiceDetailItemNumbers b{margin:0}
  .invoiceEditHeader,.invoiceEditSectionHead{display:grid}
  .invoiceEditGrid,.invoiceEditTotals,.invoiceSummaryTotals{grid-template-columns:1fr}
  .invoiceEditActions{display:grid}
  .invoiceEditActions button,.invoiceEditSectionHead button{width:100%;min-width:0}
  .invoiceEditLocked{width:100%;justify-content:center}
}

/* V17.5.2 Invoice Edit Studio header layout stabilization */
.invoiceFullEditor .invoiceEditItemsSection{
  width:100%;
  min-width:0!important;
}
.invoiceFullEditor .invoiceEditSectionHead{
  display:grid!important;
  grid-template-columns:minmax(240px,1fr) max-content!important;
  align-items:center!important;
  gap:12px!important;
  width:100%!important;
  min-width:0!important;
}
.invoiceFullEditor .invoiceEditSectionHead>div{
  width:auto!important;
  min-width:240px!important;
  max-width:100%!important;
}
.invoiceFullEditor .invoiceEditSectionHead span,
.invoiceFullEditor .invoiceEditSectionHead strong{
  writing-mode:horizontal-tb!important;
  text-orientation:mixed!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  white-space:normal!important;
  max-width:none!important;
}
.invoiceFullEditor .invoiceEditSectionHead span{
  white-space:nowrap!important;
}
.invoiceFullEditor .invoiceEditSectionHead button{
  width:auto!important;
  min-width:max-content!important;
  max-width:none!important;
  justify-self:end!important;
  white-space:nowrap!important;
  writing-mode:horizontal-tb!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
}
.invoiceFullEditor .docLineItems,
.invoiceFullEditor .docLineItem{
  width:100%;
  min-width:0!important;
}
@media(max-width:760px){
  .invoiceFullEditor .invoiceEditSectionHead{
    grid-template-columns:1fr!important;
    align-items:stretch!important;
  }
  .invoiceFullEditor .invoiceEditSectionHead>div{
    min-width:0!important;
  }
  .invoiceFullEditor .invoiceEditSectionHead button{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    justify-self:stretch!important;
  }
}

/* V17.6.1 Public invoice payment destination badge containment
   Keeps the selected-account label inside the payment card at all widths. */
.publicInvoicePayHead > div:first-child{
  flex:1 1 auto;
  min-width:0;
}
.publicInvoicePayHead .badge{
  flex:0 1 auto;
  min-width:0;
  max-width:min(54%,190px);
  white-space:normal!important;
  overflow-wrap:anywhere;
  word-break:normal;
  text-align:center;
  justify-content:center;
  line-height:1.15;
  padding:7px 10px;
}
@media(max-width:520px){
  .publicInvoicePayHead .badge{
    max-width:100%;
    width:max-content;
    justify-self:start;
    text-align:left;
  }
}

/* V17.6.1 Public invoice payment badge final containment
   Uses a compact public label and a fixed, shrink-safe grid column. */
.publicInvoicePayHead{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(112px,148px)!important;
  align-items:start!important;
  justify-content:stretch!important;
  gap:10px!important;
}
.publicInvoicePayHead > div:first-child{
  width:auto!important;
  min-width:0!important;
  max-width:100%!important;
}
.publicInvoicePayHead .publicPaymentDestinationBadge{
  display:flex!important;
  width:100%!important;
  min-width:0!important;
  max-width:148px!important;
  justify-self:end!important;
  align-items:center!important;
  justify-content:center!important;
  padding:6px 8px!important;
  font-size:9px!important;
  letter-spacing:.045em!important;
  line-height:1.12!important;
  white-space:normal!important;
  overflow:hidden!important;
  text-align:center!important;
}
.publicInvoicePayHead .publicPaymentDestinationBadge > span{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  white-space:normal!important;
  overflow-wrap:break-word!important;
  word-break:normal!important;
  text-align:center!important;
}
@media(max-width:430px){
  .publicInvoicePayHead{
    grid-template-columns:1fr!important;
  }
  .publicInvoicePayHead .publicPaymentDestinationBadge{
    width:auto!important;
    max-width:100%!important;
    justify-self:start!important;
  }
}

/* =========================================================
   UpTime Invoice Pro V17.6.1
   Recurring payment destination + automated reminders
   ========================================================= */
.recurringWorkspace{align-items:start}
.recurringPlanForm{min-width:0}
.recurringFormHead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:4px}
.recurringFormHead h3{margin:2px 0 6px}
.recurringPaymentChooser{margin-top:2px}
.recurringAutomationPanel{display:grid;grid-template-columns:minmax(190px,.78fr) minmax(260px,1.22fr);gap:18px;padding:18px;border:1px solid rgba(45,212,191,.24);background:linear-gradient(135deg,rgba(20,184,166,.08),rgba(59,130,246,.055));border-radius:20px}
.recurringAutomationPanel h4{margin:3px 0 8px;font-size:17px}
.recurringAutomationFields{display:grid;gap:12px}
.checkRow,.invoiceReminderChoice{display:flex!important;align-items:flex-start!important;gap:12px!important;padding:13px 14px;border:1px solid rgba(148,163,184,.18);background:rgba(2,8,23,.42);border-radius:16px;cursor:pointer}
.checkRow input,.invoiceReminderChoice input{width:18px!important;height:18px!important;min-width:18px;margin:2px 0 0!important;accent-color:#25d6a2}
.checkRow span,.invoiceReminderChoice span{display:grid;gap:3px;min-width:0}
.checkRow b,.invoiceReminderChoice b{color:#f8fafc;font-size:13px}
.checkRow small,.invoiceReminderChoice small{color:#94a3b8;font-size:11px;line-height:1.45}
.invoiceReminderChoice{margin:0}
.recurringAutomationMeta{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:12px}
.recurringAutomationMeta small{width:100%;color:#94a3b8}
.invoiceReminderControl{border-color:rgba(45,212,191,.2)}
.invoiceReminderControlBody{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:8px}
.invoiceReminderControlBody strong{display:block;color:#f8fafc;margin-bottom:5px}
.invoiceReminderControlBody p{margin:0;max-width:780px}
.subscriptionTable td .badge{max-width:180px;white-space:normal;text-align:center;line-height:1.2}
@media (max-width:980px){
  .recurringAutomationPanel{grid-template-columns:1fr}
  .invoiceReminderControlBody{align-items:flex-start;flex-direction:column}
}
@media (max-width:640px){
  .recurringFormHead{flex-direction:column}
  .recurringAutomationPanel{padding:14px}
  .invoiceReminderControlBody .primary{width:100%}
}

/* V17.6.3 Concise Payment Confirmation */
.paymentConfirmationOverlay{
  position:fixed;
  inset:0;
  z-index:100000;
  display:grid;
  place-items:center;
  padding:20px;
  background:rgba(2,6,23,.78);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}
.paymentConfirmationModal{
  position:relative;
  width:min(680px,100%);
  max-height:calc(100vh - 40px);
  overflow:auto;
  padding:28px;
  border:1px solid rgba(45,212,191,.3);
  border-radius:28px;
  background:radial-gradient(circle at 100% 0,rgba(37,214,162,.18),transparent 35%),linear-gradient(145deg,#101a2d,#08111f 72%);
  color:#f8fafc;
  box-shadow:0 34px 100px rgba(0,0,0,.58);
}
.paymentConfirmationModal h2{margin:4px 44px 8px 0;font-size:clamp(26px,4vw,38px);letter-spacing:-.035em;line-height:1.05}
.paymentConfirmationClose{
  position:absolute;
  top:18px;
  right:18px;
  width:38px;
  height:38px;
  border-radius:999px;
  border:1px solid rgba(148,163,184,.24);
  background:rgba(15,23,42,.84);
  color:#f8fafc;
  font-size:24px;
  line-height:1;
  cursor:pointer;
}
.paymentConfirmationSummary{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin:22px 0;
}
.paymentConfirmationSummary>div{
  min-width:0;
  padding:14px 15px;
  border:1px solid rgba(148,163,184,.18);
  border-radius:18px;
  background:rgba(15,23,42,.78);
}
.paymentConfirmationSummary span{display:block;margin-bottom:6px;color:#94a3b8;font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.paymentConfirmationSummary strong{display:block;overflow-wrap:anywhere;color:#f8fafc;font-size:15px}
.paymentConfirmationActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.paymentConfirmationActions button{width:100%;min-height:46px}
.paymentConfirmationHint{display:block;margin-top:16px;color:#94a3b8;line-height:1.5}
.payLedgerActions .sendReceiptWhatsApp,.clientDetailDocCard .sendReceiptWhatsApp{white-space:nowrap}
@media(max-width:620px){
  .paymentConfirmationOverlay{padding:10px;align-items:end}
  .paymentConfirmationModal{padding:23px 18px 20px;border-radius:25px 25px 18px 18px;max-height:92vh}
  .paymentConfirmationSummary,.paymentConfirmationActions{grid-template-columns:1fr}
}


/* V17.7.0 Invoice Center — client lookup + pending/paid ledgers */
.invoiceCenterLibrary{padding:0!important;overflow:visible!important}
.invoiceCenterPanel{display:grid;gap:16px;padding:22px;min-width:0}
.invoiceCenterHead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.invoiceCenterHead h3,.invoiceCenterResultsHead h3{margin:0 0 5px;font-size:23px}.invoiceCenterHead .muted{margin:0;max-width:720px;line-height:1.45}
.invoiceCenterLookupRow{display:grid;grid-template-columns:minmax(280px,1.35fr) minmax(220px,.65fr);gap:12px;align-items:end}
.invoiceClientLookup{position:relative;min-width:0}.invoiceClientLookup>label{display:block;color:#dbe7fb;font-size:12px;font-weight:900;margin-bottom:7px}
.invoiceLookupInputWrap{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;border:1px solid rgba(37,214,162,.28);border-radius:18px;background:linear-gradient(180deg,rgba(7,14,28,.96),rgba(4,10,20,.98));padding:0 11px;box-shadow:0 0 0 3px rgba(37,214,162,.035)}
.invoiceLookupInputWrap>span{font-size:20px;color:var(--brand)}.invoiceLookupInputWrap input{border:0!important;background:transparent!important;box-shadow:none!important;padding:13px 0!important;min-width:0;color:#fff}.invoiceLookupInputWrap input:focus{outline:0}
.invoiceLookupClear{width:30px;height:30px;min-height:30px;padding:0;border-radius:999px;border:1px solid rgba(255,255,255,.11);background:rgba(255,255,255,.06);color:#dbe7fb;font-size:19px;line-height:1;cursor:pointer}.invoiceLookupClear:hover{border-color:rgba(37,214,162,.38);color:#fff}
.invoiceClientSuggestions{display:none;position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:80;border:1px solid rgba(37,214,162,.24);border-radius:20px;padding:8px;background:linear-gradient(180deg,#111c30,#07101f);box-shadow:0 24px 70px rgba(0,0,0,.48);max-height:420px;overflow:auto}.invoiceClientSuggestions.show{display:grid;gap:6px}
.invoiceCenterClientSuggestion{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;text-align:left;width:100%;padding:10px;border-radius:15px;border:1px solid transparent;background:rgba(255,255,255,.025);color:#fff;cursor:pointer}.invoiceCenterClientSuggestion:hover{background:rgba(37,214,162,.09);border-color:rgba(37,214,162,.25)}
.invoiceLookupAvatar{width:38px;height:38px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(135deg,rgba(37,214,162,.22),rgba(96,165,250,.18));border:1px solid rgba(255,255,255,.1);font-weight:950}.invoiceLookupIdentity,.invoiceLookupMetrics{min-width:0}.invoiceLookupIdentity strong,.invoiceLookupIdentity small,.invoiceLookupMetrics b,.invoiceLookupMetrics small{display:block}.invoiceLookupIdentity strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.invoiceLookupIdentity small,.invoiceLookupMetrics small{color:var(--muted);font-size:11px;margin-top:3px}.invoiceLookupMetrics{text-align:right}.invoiceLookupMetrics b{font-size:12px;color:#dffcf3}.invoiceLookupEmpty{padding:16px;text-align:center;color:var(--muted);font-weight:750}
.invoiceCenterScope{min-height:66px;display:grid;align-content:center;border:1px solid rgba(255,255,255,.08);border-radius:18px;padding:11px 14px;background:rgba(255,255,255,.03)}.invoiceCenterScope span,.invoiceCenterScope small{color:var(--muted);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.invoiceCenterScope strong{display:block;color:#fff;font-size:15px;margin:3px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.invoiceCenterScope small{text-transform:none;letter-spacing:0;font-size:11px}
.invoiceSelectedClient{display:grid;grid-template-columns:minmax(220px,1fr) minmax(360px,1.2fr) auto;align-items:center;gap:14px;border:1px solid rgba(37,214,162,.2);border-radius:22px;padding:14px;background:radial-gradient(circle at 0 0,rgba(37,214,162,.10),transparent 35%),rgba(7,16,30,.72)}
.invoiceSelectedIdentity{display:flex;align-items:center;gap:11px;min-width:0}.invoiceSelectedIdentity>span{width:44px;height:44px;display:grid;place-items:center;border-radius:15px;background:linear-gradient(135deg,rgba(37,214,162,.26),rgba(96,165,250,.18));border:1px solid rgba(255,255,255,.11);font-size:18px;font-weight:950}.invoiceSelectedIdentity div{min-width:0}.invoiceSelectedIdentity .eyebrow{margin:0 0 2px}.invoiceSelectedIdentity strong,.invoiceSelectedIdentity small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.invoiceSelectedIdentity small{color:var(--muted);font-size:11px;margin-top:3px}
.invoiceSelectedStats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.invoiceSelectedStats>div{border:1px solid rgba(255,255,255,.07);border-radius:15px;padding:9px 11px;background:rgba(255,255,255,.03);min-width:0}.invoiceSelectedStats span,.invoiceSelectedStats small{display:block;color:var(--muted);font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.07em}.invoiceSelectedStats b{display:block;color:#fff;font-size:16px;margin:4px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.invoiceSelectedStats small{text-transform:none;letter-spacing:0}
.invoiceCenterTabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.invoiceStatusTab{display:grid;text-align:left;gap:3px;border:1px solid rgba(255,255,255,.08);border-radius:19px;padding:13px 14px;background:linear-gradient(180deg,rgba(16,27,49,.78),rgba(7,13,25,.9));color:#fff;cursor:pointer}.invoiceStatusTab:hover{border-color:rgba(37,214,162,.25)}.invoiceStatusTab.active{border-color:rgba(37,214,162,.46);background:linear-gradient(135deg,rgba(37,214,162,.16),rgba(96,165,250,.08));box-shadow:0 0 0 3px rgba(37,214,162,.04)}.invoiceStatusTab span{color:#dbe7fb;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.08em}.invoiceStatusTab b{font-size:24px;line-height:1}.invoiceStatusTab small{color:var(--muted);font-size:11px}
.invoiceCenterResultsHead{display:flex;align-items:end;justify-content:space-between;gap:12px;padding-top:2px}.invoiceCenterResultsHead .eyebrow{margin-bottom:4px}.invoiceCenterResultsHead>span{color:var(--muted);font-size:11px;font-weight:850}.invoiceCenterList{max-height:760px;overflow:auto;padding-right:3px}.invoiceCenterEmpty{min-height:220px;display:grid;place-content:center;text-align:center;border:1px dashed rgba(255,255,255,.12);border-radius:20px}
@media(max-width:980px){.invoiceCenterLookupRow,.invoiceSelectedClient{grid-template-columns:1fr}.invoiceSelectedClient>a{width:100%;justify-content:center}.invoiceSelectedStats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.invoiceCenterPanel{padding:15px;gap:13px}.invoiceCenterHead,.invoiceCenterResultsHead{display:grid}.invoiceCenterHead button{width:100%}.invoiceCenterTabs,.invoiceSelectedStats{grid-template-columns:1fr}.invoiceCenterClientSuggestion{grid-template-columns:auto minmax(0,1fr)}.invoiceLookupMetrics{grid-column:2;text-align:left}.invoiceCenterList{max-height:none;overflow:visible}.invoiceCenterScope{min-height:0}.invoiceSelectedIdentity strong,.invoiceSelectedIdentity small{white-space:normal}.invoiceStatusTab{min-height:84px}}

/* =========================================================
   UpTime Invoice Pro V17.7.3
   Recurring Plans Premium Library
   ========================================================= */
.recurringLibraryPanel{min-width:0;overflow:visible}
.recurringLibraryToolbar{gap:16px;margin-bottom:16px}
.recurringLibraryToolbar .searchBox{width:min(390px,100%);max-width:390px}
.recurringLibraryToolbar h3{margin-bottom:6px}

.subscriptionTable{overflow:visible}
.subscriptionTable table{table-layout:fixed;min-width:1120px}
.subscriptionTable .recColPlan{width:18%}
.subscriptionTable .recColClient{width:13%}
.subscriptionTable .recColAmount{width:7%}
.subscriptionTable .recColCycle{width:7%}
.subscriptionTable .recColNext{width:10%}
.subscriptionTable .recColAutomation{width:16%}
.subscriptionTable .recColStatus{width:8%}
.subscriptionTable .recColActions{width:21%}
.subscriptionTable th{padding:13px 10px;white-space:nowrap}
.subscriptionTable td{padding:14px 10px;vertical-align:middle;overflow:visible}
.subscriptionTable tbody tr:last-child td{border-bottom:0}
.subscriptionTable .recurringPlanRow{transition:background .2s ease,transform .2s ease}
.subscriptionTable .recurringPlanRow:hover{background:rgba(255,255,255,.025)}

.recurringPlanCell{display:grid;gap:4px;min-width:0}
.recurringPlanCell strong{color:#f8fafc;line-height:1.22;overflow-wrap:normal;word-break:normal}
.recurringPlanCell span{color:#8ea0bd;font-weight:750;line-height:1.25;overflow-wrap:normal;word-break:normal}
.recurringClientName{display:block;color:#f8fafc;font-weight:800;line-height:1.3;overflow-wrap:normal;word-break:normal;hyphens:none}
.recurringAmountCell,.recurringCycleCell,.recurringNextCell{white-space:nowrap;font-weight:800;color:#e7eefc}
.recurringAutomationCell{display:grid;gap:7px;justify-items:start;min-width:0}
.recurringAutomationCell .badge{max-width:100%;white-space:nowrap!important;font-size:9px;padding:5px 8px}
.recurringAutomationCell small{color:#8ea0bd;font-weight:750;line-height:1.3}
.recurringStatusCell{text-align:left}
.subscriptionTable .subStatus,.recurringAutomationCard .subStatus{display:inline-flex!important;width:max-content!important;max-width:100%!important;white-space:nowrap!important;line-height:1!important;text-align:center!important;justify-content:center!important;padding:7px 11px!important}

.recurringActionsCell{overflow:visible!important}
.recurringPlanActions{position:relative;display:grid;grid-template-columns:minmax(126px,1fr) 40px;gap:7px;align-items:center;min-width:0}
.recurringGenerateBtn,.recurringOpenBtn{display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;min-height:38px;padding:8px 10px;border-radius:12px;box-shadow:0 10px 24px rgba(37,214,162,.13)}
.recurringGenerateBtn span:first-child,.recurringOpenBtn span:first-child{font-size:16px;line-height:1}
.recurringMoreMenu{position:relative;min-width:0}
.recurringMoreMenu[open]{z-index:80}
.recurringMoreTrigger{display:flex;align-items:center;justify-content:center;width:40px;height:38px;min-width:40px;padding:0;border-radius:12px;list-style:none;font-size:15px;letter-spacing:2px;user-select:none}
.recurringMoreTrigger::-webkit-details-marker{display:none}
.recurringMoreTrigger::marker{display:none;content:''}
.recurringMoreMenu[open] .recurringMoreTrigger{border-color:rgba(37,214,162,.35);background:rgba(37,214,162,.11);color:#c8fff0}
.recurringMenuPopover{position:absolute;right:0;top:calc(100% + 8px);z-index:100;width:264px;padding:8px;border:1px solid rgba(255,255,255,.12);border-radius:17px;background:linear-gradient(180deg,#111c31,#08111f);box-shadow:0 24px 60px rgba(0,0,0,.48);display:grid;gap:5px}
.recurringMenuPopover:before{content:'';position:absolute;right:13px;top:-6px;width:11px;height:11px;transform:rotate(45deg);background:#111c31;border-left:1px solid rgba(255,255,255,.12);border-top:1px solid rgba(255,255,255,.12)}
.recurringMenuItem{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:9px;width:100%;padding:10px;border-radius:12px;background:transparent;border:1px solid transparent;text-align:left;color:#eaf2ff}
.recurringMenuItem>span:first-child{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:rgba(255,255,255,.06);font-size:15px;font-weight:950}
.recurringMenuItem>span:last-child{display:grid;gap:2px;min-width:0}
.recurringMenuItem b{font-size:12px;color:#f8fafc}
.recurringMenuItem small{font-size:10px;line-height:1.3;color:#8ea0bd;font-weight:700}
.recurringMenuItem:hover{background:rgba(37,214,162,.08);border-color:rgba(37,214,162,.16)}
.recurringMenuItem.danger:hover{background:rgba(251,113,133,.09);border-color:rgba(251,113,133,.24)}

.recurringAutomationCard{position:relative;overflow:visible!important;padding:18px!important}
.recurringCardTop{align-items:center}
.recurringCardIdentity{min-width:0}
.recurringCardIdentity strong{font-size:18px!important;line-height:1.2;overflow-wrap:normal;word-break:normal}
.recurringCardIdentity span{overflow-wrap:normal;word-break:normal;line-height:1.3}
.recurringCardFacts{margin-top:2px}
.recurringCardFacts div{min-width:0}
.recurringCardFacts b{white-space:normal;word-break:normal;overflow-wrap:normal}
.recurringAutomationCard .recurringAutomationMeta{padding:12px;border:1px solid rgba(255,255,255,.07);border-radius:16px;background:rgba(3,9,20,.25)}
.recurringAutomationCard .recurringPlanActions{margin-top:13px;grid-template-columns:minmax(0,1fr) 44px}
.recurringAutomationCard .recurringGenerateBtn,.recurringOpenBtn{min-height:44px}
.recurringAutomationCard .recurringMoreTrigger{width:44px;height:44px;min-width:44px}

@media(max-width:1839px){
  .recurringWorkspace{grid-template-columns:1fr!important}
  .subscriptionTable{display:none!important}
  .subscriptionCards{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(min(520px,100%),1fr));gap:13px}
}
@media(min-width:1840px){
  .subscriptionTable{display:block!important}
  .subscriptionCards{display:none!important}
}
@media(max-width:900px){
  .subscriptionCards{grid-template-columns:1fr!important}
  .recurringLibraryToolbar{display:grid;grid-template-columns:1fr}
  .recurringLibraryToolbar .searchBox{width:100%;max-width:none}
}
@media(max-width:560px){
  .recurringAutomationCard{padding:15px!important}
  .recurringCardTop{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:10px}
  .recurringCardIdentity strong{font-size:17px!important}
  .recurringCardFacts,.portalInfoGrid.three.recurringCardFacts{grid-template-columns:1fr!important}
  .recurringPlanActions{grid-template-columns:minmax(0,1fr) 44px}
  .recurringMenuPopover{position:fixed;left:12px;right:12px;top:auto;bottom:12px;width:auto;border-radius:22px;padding:12px}
  .recurringMenuPopover:before{display:none}
  .recurringMenuItem{padding:12px}
}


/* =========================================================
   UpTime Invoice Pro V17.7.3
   Recurring Cycle Library + Full Plan Detail
   ========================================================= */
.recurringPlanForm{
  overflow:hidden!important;
  min-width:0!important;
  max-width:100%!important;
}
.recurringPlanForm>*{min-width:0;max-width:100%}
.recurringPlanForm input,.recurringPlanForm select,.recurringPlanForm textarea{min-width:0;max-width:100%}
.recurringPlanForm .recurringAutomationPanel{grid-template-columns:1fr!important;min-width:0;max-width:100%}
.recurringPlanForm .recurringAutomationFields{min-width:0;max-width:100%}
.recurringPlanForm .checkRow{min-width:0;max-width:100%}
.recurringPlanForm .checkRow span{min-width:0;max-width:100%}
.recurringPlanForm .checkRow small{overflow-wrap:anywhere;word-break:normal}
.recurringPlanForm .paymentDestinationInstructions{
  min-width:0!important;
  max-width:100%!important;
  max-height:260px;
  overflow:auto;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
}
.recurringPlanForm .paymentDestinationChooser{min-width:0;max-width:100%;overflow:hidden}

.subscriptionTable table{min-width:1030px}
.subscriptionTable .recColPlan{width:10%}
.subscriptionTable .recColClient{width:15%}
.subscriptionTable .recColAmount{width:8%}
.subscriptionTable .recColNext{width:11%}
.subscriptionTable .recColAutomation{width:19%}
.subscriptionTable .recColStatus{width:9%}
.subscriptionTable .recColActions{width:28%}
.recurringPlanOpenLink{text-decoration:none;color:inherit}
.recurringPlanCell.recurringPlanOpenLink{padding:8px 9px;margin:-8px -9px;border-radius:13px;transition:background .2s ease,border-color .2s ease;cursor:pointer}
.recurringPlanCell.recurringPlanOpenLink:hover{background:rgba(37,214,162,.08);box-shadow:inset 0 0 0 1px rgba(37,214,162,.18)}
.recurringPlanCell strong{font-size:14px;white-space:nowrap}
.recurringPlanCell span{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#7ee8c7}
a.recurringMenuItem{appearance:none;text-decoration:none;cursor:pointer}
.recurringCardIdentity.recurringPlanOpenLink{display:grid;gap:3px;padding:5px 7px;margin:-5px -7px;border-radius:14px;transition:background .2s ease}
.recurringCardIdentity.recurringPlanOpenLink:hover{background:rgba(37,214,162,.08)}
.recurringCardIdentity small{color:#7ee8c7;font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.07em}
.recurringCardFacts>div:last-child b{font-size:12px;line-height:1.3}

.recurringDetailWrap{padding:18px}
.recurringDetailShell{width:min(1420px,100%);margin:0 auto;border-radius:30px;padding:18px;display:grid;gap:16px}
.recurringDetailHero{background:radial-gradient(circle at 100% 0,rgba(37,214,162,.14),transparent 34%),linear-gradient(180deg,rgba(17,27,48,.9),rgba(9,15,28,.96))}
.recurringDetailHero .clientDetailAvatar{background:linear-gradient(135deg,rgba(37,214,162,.26),rgba(96,165,250,.18));font-size:28px}
.recurringDetailKpis article strong{font-size:clamp(22px,3vw,32px)}
.recurringDetailGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
.recurringDetailAutomation,.recurringDetailPayment,.recurringDetailNotes,.recurringDetailInvoices{min-width:0}
.recurringDetailInvoices{grid-column:1/-1}
.recurringDetailRuleGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.recurringDetailRuleGrid>div{min-width:0;padding:14px;border:1px solid rgba(255,255,255,.08);border-radius:17px;background:rgba(3,9,20,.3)}
.recurringDetailRuleGrid span,.recurringDetailRuleGrid small{display:block;color:var(--muted);font-size:10px;font-weight:850;line-height:1.4}
.recurringDetailRuleGrid span{text-transform:uppercase;letter-spacing:.08em}
.recurringDetailRuleGrid b{display:block;margin:5px 0;color:#fff;font-size:15px;overflow-wrap:anywhere}
.recurringDetailPayment .paymentInstructionsText{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55;max-height:330px;overflow:auto;padding:14px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(3,9,20,.28)}
.recurringDetailClientActions{margin-top:14px}
.recurringGeneratedInvoice{border-left:3px solid rgba(96,165,250,.7)}
.recurringGeneratedInvoice.paid{border-left-color:#34d399}.recurringGeneratedInvoice.overdue{border-left-color:#fb7185}
@media(max-width:980px){
  .recurringDetailGrid{grid-template-columns:1fr!important}
  .recurringDetailInvoices{grid-column:auto}
  .recurringDetailRuleGrid{grid-template-columns:1fr}
}
@media(max-width:620px){
  .recurringDetailWrap{padding:8px}
  .recurringDetailShell{padding:10px;border-radius:22px}
  .recurringDetailHeroActions{display:grid!important;grid-template-columns:1fr 1fr;width:100%}
  .recurringDetailHeroActions>*{width:100%;justify-content:center;text-align:center}
}


/* =========================================================
   UpTime Invoice Pro V17.7.3
   Automatic recurring billing actions + horizontal badge
   ========================================================= */
.recurringFormHead{
  align-items:flex-start;
}
.recurringFormHead .recurringAutoBillingBadge{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 auto!important;
  width:auto!important;
  min-width:max-content!important;
  max-width:none!important;
  height:auto!important;
  padding:8px 12px!important;
  border-radius:999px!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  line-height:1!important;
  text-align:center!important;
}
.recurringOpenBtn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:38px;
  padding:8px 12px;
  border-radius:12px;
  text-decoration:none;
  white-space:nowrap;
  box-shadow:0 10px 24px rgba(37,214,162,.13);
}
.recurringOpenBtn:hover{
  filter:brightness(1.05);
}
.recurringDetailHeroActions .recurringDetailGenerate{
  display:none!important;
}
@media(max-width:640px){
  .recurringFormHead{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:start;
  }
  .recurringFormHead .recurringAutoBillingBadge{
    justify-self:end;
  }
}
@media(max-width:430px){
  .recurringFormHead{
    grid-template-columns:1fr;
  }
  .recurringFormHead .recurringAutoBillingBadge{
    justify-self:start;
  }
}


/* =========================================================
   UpTime Invoice Pro
   Click-to-open Subscription Library
   ========================================================= */
.subscriptionTable{
  overflow:auto!important;
}
.subscriptionTable table{
  min-width:720px!important;
  table-layout:fixed!important;
}
.subscriptionTable .recColClient{width:42%!important}
.subscriptionTable .recColAmount{width:18%!important}
.subscriptionTable .recColCycle{width:18%!important}
.subscriptionTable .recColNext{width:22%!important}
.subscriptionTable .recurringPlanRow{
  cursor:pointer;
  outline:none;
  transition:background .18s ease,box-shadow .18s ease,transform .18s ease;
}
.subscriptionTable .recurringPlanRow:hover,
.subscriptionTable .recurringPlanRow:focus-visible{
  background:linear-gradient(90deg,rgba(37,214,162,.11),rgba(96,165,250,.045));
  box-shadow:inset 3px 0 0 rgba(37,214,162,.78);
}
.subscriptionTable .recurringPlanRow:active{
  transform:translateY(1px);
}
.subscriptionTable .recurringPlanRow td{
  padding-top:17px!important;
  padding-bottom:17px!important;
}
.recurringCycleCell span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:92px;
  padding:7px 11px;
  border:1px solid rgba(37,214,162,.22);
  border-radius:999px;
  background:rgba(37,214,162,.09);
  color:#c9fff0;
  font-size:11px;
  font-weight:900;
  white-space:nowrap;
}
.recurringPlanOpenCard{
  cursor:pointer;
  outline:none;
  overflow:hidden!important;
  border-color:rgba(37,214,162,.14)!important;
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.recurringPlanOpenCard:hover,
.recurringPlanOpenCard:focus-visible{
  transform:translateY(-2px);
  border-color:rgba(37,214,162,.42)!important;
  background:radial-gradient(circle at 100% 0,rgba(37,214,162,.10),transparent 36%),rgba(10,19,35,.92)!important;
  box-shadow:0 18px 44px rgba(0,0,0,.28),0 0 0 3px rgba(37,214,162,.04);
}
.recurringSubscriptionClient{
  display:grid;
  gap:5px;
  margin-bottom:14px;
}
.recurringSubscriptionClient span,
.recurringSubscriptionFacts span{
  color:#8ea0bd;
  font-size:9px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.recurringSubscriptionClient strong{
  color:#fff;
  font-size:18px;
  line-height:1.25;
}
.recurringSubscriptionFacts{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:9px!important;
}
.recurringSubscriptionFacts>div{
  min-width:0;
  padding:11px 12px;
  border:1px solid rgba(255,255,255,.07);
  border-radius:15px;
  background:rgba(3,9,20,.28);
}
.recurringSubscriptionFacts b{
  display:block;
  margin-top:5px;
  color:#fff;
  font-size:14px;
  overflow-wrap:anywhere;
}
@media(min-width:1181px){
  .subscriptionTable{display:block!important}
  .subscriptionCards{display:none!important}
}
@media(max-width:1180px){
  .subscriptionTable{display:none!important}
  .subscriptionCards{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(min(440px,100%),1fr));gap:13px}
}
@media(max-width:560px){
  .recurringSubscriptionFacts{grid-template-columns:1fr!important}
  .recurringSubscriptionClient strong{font-size:17px}
}

/* =========================================================
   UpTime Invoice Pro
   Existing invoice automatic-reminder control
   ========================================================= */
.invoiceReminderDetailChoice{
  flex:1 1 680px;
  min-width:0;
  margin:0!important;
  border-color:rgba(45,212,191,.24)!important;
  background:linear-gradient(135deg,rgba(13,42,42,.72),rgba(2,8,23,.48))!important;
}
.invoiceReminderDetailChoice:hover{border-color:rgba(45,212,191,.42)!important}
.invoiceReminderDetailChoice input:disabled{cursor:wait;opacity:.58}
.invoiceReminderControlActions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 0 auto}
.invoiceReminderPaidState{display:flex;align-items:center;gap:14px;min-width:0;width:100%}
.invoiceReminderPaidState strong{margin:0 0 4px!important}
.invoiceReminderPaidState p{margin:0!important}
@media(max-width:760px){
  .invoiceReminderDetailChoice{width:100%;flex-basis:auto}
  .invoiceReminderControlActions{width:100%}
  .invoiceReminderControlActions .primary{width:100%}
  .invoiceReminderPaidState{align-items:flex-start;flex-direction:column}
}

/* =========================================================
   UpTime Invoice Pro - System Health Center
   ========================================================= */
.healthShell{display:grid;gap:16px;min-width:0}
.healthHero{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"copy overall" "actions actions";gap:20px;align-items:center;position:relative;overflow:hidden;background:radial-gradient(circle at 85% 10%,rgba(37,214,162,.14),transparent 35%),linear-gradient(135deg,rgba(15,30,52,.96),rgba(7,15,28,.98))}
.healthHero:after{content:"";position:absolute;inset:auto -80px -110px auto;width:260px;height:260px;border:1px solid rgba(255,255,255,.08);border-radius:50%;pointer-events:none}
.healthHero.healthy{border-color:rgba(37,214,162,.28)}
.healthHero.attention,.healthHero.unknown{border-color:rgba(251,191,36,.28)}
.healthHero.error{border-color:rgba(251,113,133,.35)}
.healthHeroCopy{grid-area:copy;min-width:0;position:relative;z-index:1}
.healthHeroCopy h3{font-size:30px;margin:4px 0 8px;letter-spacing:-.04em}
.healthHeroCopy>p:not(.eyebrow){margin:0;color:#cbd5e1;max-width:760px;line-height:1.55}
.healthHeroMeta{display:flex;flex-wrap:wrap;gap:9px;margin-top:16px}
.healthHeroMeta span,.healthReadOnly{display:inline-flex;align-items:center;border:1px solid rgba(255,255,255,.10);background:rgba(255,255,255,.045);border-radius:999px;padding:7px 10px;color:#a8bad5;font-size:11px;font-weight:900;letter-spacing:.04em}
.healthOverall{grid-area:overall;display:grid;justify-items:center;gap:6px;min-width:210px;padding:20px;border-radius:24px;border:1px solid rgba(255,255,255,.10);background:rgba(3,10,21,.48);position:relative;z-index:1;text-align:center}
.healthOverallIcon{display:grid;place-items:center;width:58px;height:58px;border-radius:20px;background:rgba(37,214,162,.14);border:1px solid rgba(37,214,162,.28);color:#86efcc;font-size:28px;font-weight:900}
.healthHero.attention .healthOverallIcon,.healthHero.unknown .healthOverallIcon{background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.28);color:#fde68a}
.healthHero.error .healthOverallIcon{background:rgba(251,113,133,.12);border-color:rgba(251,113,133,.30);color:#fecdd3}
.healthOverall strong{font-size:19px;color:#fff}
.healthOverall small{color:#8fa2bf}
.healthHeroActions{grid-area:actions;display:flex;flex-wrap:wrap;gap:10px;position:relative;z-index:1}
.healthMetrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.healthMetric{border:1px solid rgba(255,255,255,.09);border-radius:22px;padding:17px;background:linear-gradient(180deg,rgba(18,31,53,.92),rgba(8,15,28,.96));min-width:0}
.healthMetric span{display:block;color:#8fa2bf;font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
.healthMetric strong{display:block;margin:8px 0 5px;font-size:28px;color:#fff;letter-spacing:-.04em}
.healthMetric small{display:block;color:#778ba9;line-height:1.35}
.healthSection{display:grid;gap:16px}
.healthSectionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.healthSectionHead h3{margin:3px 0 0}
.healthCheckGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.healthCheck{display:grid;align-content:start;gap:12px;min-width:0;border:1px solid rgba(255,255,255,.08);border-radius:19px;padding:15px;background:rgba(255,255,255,.028)}
.healthCheck.healthy{border-color:rgba(37,214,162,.22);background:linear-gradient(145deg,rgba(37,214,162,.07),rgba(255,255,255,.025))}
.healthCheck.attention,.healthCheck.unknown{border-color:rgba(251,191,36,.22);background:linear-gradient(145deg,rgba(251,191,36,.06),rgba(255,255,255,.025))}
.healthCheck.error{border-color:rgba(251,113,133,.28);background:linear-gradient(145deg,rgba(251,113,133,.07),rgba(255,255,255,.025))}
.healthCheckHead{display:flex;align-items:center;gap:11px;min-width:0}
.healthSignal{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:13px;background:rgba(37,214,162,.12);border:1px solid rgba(37,214,162,.25);color:#86efcc;font-weight:900;font-size:18px}
.healthCheck.attention .healthSignal,.healthCheck.unknown .healthSignal{background:rgba(251,191,36,.10);border-color:rgba(251,191,36,.24);color:#fde68a}
.healthCheck.error .healthSignal{background:rgba(251,113,133,.10);border-color:rgba(251,113,133,.26);color:#fecdd3}
.healthCheckHead>div:last-child{min-width:0}
.healthCheckHead span{display:block;color:#8fa2bf;font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:900}
.healthCheckHead strong{display:block;margin-top:3px;color:#fff;overflow-wrap:anywhere}
.healthCheck p{margin:0;color:#b7c6dc;font-size:13px;line-height:1.45}
.healthDetail{display:block;color:#fca5a5;line-height:1.4;overflow-wrap:anywhere}
.healthCheckMeta{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto}
.healthCheckMeta b{display:inline-flex;border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.14);border-radius:999px;padding:5px 8px;color:#91a5c3;font-size:10px}
.healthJobs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.healthJob{border:1px solid rgba(255,255,255,.09);border-radius:24px;padding:18px;background:radial-gradient(circle at 100% 0,rgba(96,165,250,.08),transparent 38%),linear-gradient(180deg,rgba(17,29,50,.94),rgba(7,14,27,.98));min-width:0}
.healthJob.healthy{border-color:rgba(37,214,162,.24)}
.healthJob.attention,.healthJob.unknown{border-color:rgba(251,191,36,.24)}
.healthJob.error{border-color:rgba(251,113,133,.30)}
.healthJobHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.healthJobHead h3{margin:3px 0 0}
.healthPill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:7px 10px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border:1px solid rgba(255,255,255,.10)}
.healthPill.healthy{background:rgba(37,214,162,.12);border-color:rgba(37,214,162,.26);color:#bbf7d0}
.healthPill.attention,.healthPill.unknown{background:rgba(251,191,36,.11);border-color:rgba(251,191,36,.26);color:#fde68a}
.healthPill.error{background:rgba(251,113,133,.12);border-color:rgba(251,113,133,.28);color:#fecdd3}
.healthJobFacts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:15px}
.healthJobFacts>div{border:1px solid rgba(255,255,255,.07);border-radius:16px;padding:12px;background:rgba(2,8,20,.30);min-width:0}
.healthJobFacts span{display:block;color:#8194b1;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.healthJobFacts strong{display:block;margin:6px 0 4px;color:#fff;font-size:14px;overflow-wrap:anywhere}
.healthJobFacts small{display:block;color:#7185a3;line-height:1.35;overflow-wrap:anywhere}
.healthJobError{margin-top:12px;border:1px solid rgba(251,113,133,.22);background:rgba(251,113,133,.08);border-radius:14px;padding:10px;color:#fecdd3;font-size:12px;overflow-wrap:anywhere}
.healthHistory{display:grid;gap:8px}
.healthHistoryRow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;border:1px solid rgba(255,255,255,.07);border-radius:15px;padding:11px 13px;background:rgba(255,255,255,.022)}
.healthHistoryDot{width:10px;height:10px;border-radius:50%;background:#64748b;box-shadow:0 0 0 4px rgba(100,116,139,.12)}
.healthHistoryDot.healthy{background:#25d6a2;box-shadow:0 0 0 4px rgba(37,214,162,.12)}
.healthHistoryDot.error{background:#fb7185;box-shadow:0 0 0 4px rgba(251,113,133,.12)}
.healthHistoryRow div{min-width:0}
.healthHistoryRow strong{display:block;color:#eef4ff}
.healthHistoryRow small{display:block;margin-top:3px;color:#7f93b0;overflow-wrap:anywhere}
.healthHistoryRow>b{color:#a8bad5;font-size:11px;white-space:nowrap}
.healthEmpty{display:grid;justify-items:center;text-align:center;gap:7px;padding:26px;border:1px dashed rgba(255,255,255,.12);border-radius:18px;color:#8fa2bf}
.healthEmpty strong{color:#fff}
.healthSecurityNote{display:flex;align-items:flex-start;gap:13px;border:1px solid rgba(96,165,250,.18);border-radius:18px;padding:14px 16px;background:rgba(96,165,250,.055);color:#9fb2ce}
.healthSecurityNote strong{color:#dbeafe;white-space:nowrap}
.healthLoadingCard,.healthErrorCard{min-height:320px;display:grid;place-content:center;justify-items:center;text-align:center;gap:10px}
.healthLoadingCard p,.healthErrorCard p{max-width:650px}
.healthLoader{width:58px;height:58px;border-radius:50%;border:5px solid rgba(255,255,255,.08);border-top-color:#25d6a2;animation:healthSpin .9s linear infinite}
@keyframes healthSpin{to{transform:rotate(360deg)}}
@media(max-width:1180px){
  .healthCheckGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .healthMetrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .healthJobFacts{grid-template-columns:1fr}
}
@media(max-width:760px){
  .healthHero{grid-template-columns:1fr;grid-template-areas:"copy" "overall" "actions"}
  .healthOverall{min-width:0;width:100%;grid-template-columns:auto minmax(0,1fr);justify-items:start;text-align:left}
  .healthOverall small{grid-column:2}
  .healthHeroActions{display:grid;grid-template-columns:1fr}
  .healthHeroActions button{width:100%}
  .healthMetrics,.healthCheckGrid,.healthJobs{grid-template-columns:1fr}
  .healthSectionHead{display:grid}
  .healthReadOnly{width:max-content;max-width:100%}
  .healthHistoryRow{grid-template-columns:auto minmax(0,1fr)}
  .healthHistoryRow>b{grid-column:2}
  .healthSecurityNote{display:grid}
  .healthSecurityNote strong{white-space:normal}
}

/* V17.12.2 Flexible Line Items — Service Catalog / Custom Line workflow */
.docLineActionBar{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:stretch;padding:14px;border:1px solid rgba(37,214,162,.20);border-radius:18px;background:linear-gradient(135deg,rgba(37,214,162,.075),rgba(96,165,250,.035))}
.docLineActionBar>div:first-child{min-width:0;width:100%}.docLineActionBar>div:first-child>span{display:block;color:#fff;font-size:13px;font-weight:950;white-space:normal;overflow-wrap:normal!important;word-break:normal!important;hyphens:none}.docLineActionBar>div:first-child>small{display:block;color:var(--muted);font-size:11px;line-height:1.45;margin-top:4px;white-space:normal;overflow-wrap:normal!important;word-break:normal!important;hyphens:none}
.docLineActionButtons{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start;min-width:0;width:100%}.docLineActionButtons .tiny{min-height:38px;white-space:nowrap}
.docLineEmpty{display:grid;place-items:center;text-align:center;gap:4px;padding:18px;border:1px dashed rgba(255,255,255,.12);border-radius:17px;background:rgba(3,9,20,.18)}.docLineEmpty strong{color:#fff;font-size:13px}.docLineEmpty span{color:var(--muted);font-size:11px;line-height:1.4}.docLineEmpty.hidden{display:none!important}
.docLineTop>div{display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-width:0}.docLineTypeBadge{display:inline-flex;align-items:center;min-height:22px;padding:3px 8px;border-radius:999px;font-size:9px;font-weight:950;text-transform:uppercase;letter-spacing:.09em;border:1px solid rgba(255,255,255,.10)}.docLineTypeBadge.saved{color:#bfdbfe;background:rgba(59,130,246,.10);border-color:rgba(96,165,250,.24)}.docLineTypeBadge.custom{color:#5fffd0;background:rgba(37,214,162,.10);border-color:rgba(37,214,162,.30)}
.docLineItem.isCustomCharge .docLineTop strong:after{content:none!important}.docLineItem.isSavedService{border-color:rgba(96,165,250,.18)}
.customLineNotice{display:grid;gap:3px;padding:10px 12px;border-radius:14px;border:1px solid rgba(37,214,162,.22);background:rgba(37,214,162,.065)}.customLineNotice b{color:#dffef5;font-size:11px;text-transform:uppercase;letter-spacing:.075em}.customLineNotice span{color:#9fb1cf;font-size:11px;line-height:1.45}
.docLineOptions{display:flex;gap:10px;flex-wrap:wrap}.docProCheck{display:flex!important;align-items:center;gap:8px!important;margin:0!important;padding:9px 11px;border:1px solid rgba(255,255,255,.09);border-radius:13px;background:rgba(255,255,255,.025);color:#dbeafe;font-size:11px;font-weight:850}.docProCheck input{width:auto!important;margin:0!important}.saveReusableService{border-color:rgba(251,191,36,.25);background:rgba(251,191,36,.055);color:#fde68a}
.docLineInternalNote{margin:0!important;padding-top:2px}.docLineInternalNote>span{display:inline;color:#7f8da6;font-size:10px;font-weight:750;margin-left:5px}.docLineInternalNote textarea{margin-top:7px;background:rgba(3,9,20,.30)!important;border-style:dashed!important}
.previousItemPickerBackdrop{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:18px max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));background:rgba(1,5,14,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.previousItemPicker{width:min(760px,100%);max-height:min(760px,calc(100dvh - 42px));display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:13px;padding:18px!important;background:linear-gradient(180deg,rgba(16,27,49,.99),rgba(6,12,23,.99))!important;border-color:rgba(37,214,162,.24)!important;box-shadow:0 28px 80px rgba(0,0,0,.48)!important}
.previousItemPickerHead{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.previousItemPickerHead h3{margin:2px 0 4px}.previousItemPickerHead .muted{margin:0;font-size:12px}.previousItemSearch{width:100%}
.previousItemList{display:grid;gap:8px;overflow:auto;overscroll-behavior:contain;padding-right:2px;scrollbar-width:none}.previousItemList::-webkit-scrollbar{display:none}.previousItemChoice{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;text-align:left;align-items:center;padding:12px 13px;border:1px solid rgba(255,255,255,.085);border-radius:15px;background:rgba(255,255,255,.03);color:#fff;cursor:pointer}.previousItemChoice:hover,.previousItemChoice:focus-visible{border-color:rgba(37,214,162,.36);background:rgba(37,214,162,.075);outline:none}.previousItemChoice>div{min-width:0}.previousItemChoice strong{display:block;line-height:1.3}.previousItemChoice span{display:block;color:#9fb1cf;font-size:11px;line-height:1.45;margin-top:3px;white-space:pre-wrap}.previousItemChoice small{color:#cbd5e1;font-size:10px;font-weight:800;text-align:right;max-width:210px}.previousItemChoice.hidden{display:none!important}
@media(max-width:760px){.docLineActionBar{grid-template-columns:1fr}.docLineActionButtons{display:grid;grid-template-columns:1fr}.docLineActionButtons .tiny{width:100%}.docLineOptions{display:grid}.docProCheck{width:100%}.previousItemPickerBackdrop{place-items:end center;padding-top:max(14px,env(safe-area-inset-top))}.previousItemPicker{width:100%;max-height:calc(100dvh - max(24px,env(safe-area-inset-top)));border-radius:22px 22px 16px 16px!important;padding:16px 14px max(16px,env(safe-area-inset-bottom))!important}.previousItemPickerHead{display:grid}.previousItemPickerHead .closePreviousItemPicker{position:absolute;right:14px;top:14px}.previousItemChoice{grid-template-columns:1fr}.previousItemChoice small{text-align:left;max-width:none}}
.serviceBillingTabs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px}.serviceBillingTabs button{min-width:150px}
@media(max-width:760px){.serviceBillingTabs{display:grid;grid-template-columns:1fr 1fr}.serviceBillingTabs button{width:100%;min-width:0}}
.recurringMenuItem.isCompleted{cursor:default;opacity:.78}.recurringMenuItem.isCompleted:hover{background:transparent}

/* V17.12.2 — Native select popup wrapping fix (Chrome/Windows + inherited responsive wrap rules) */
select,
select option,
select optgroup{
  writing-mode:horizontal-tb!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  text-orientation:mixed!important;
}
select option,
select optgroup{
  max-width:none!important;
}

/* V17.12.2 — Payment terms / Due on receipt */
.billingTermsSettings .settingsProSectionHead{align-items:flex-start}
.billingTermsSummary,.clientBillingTerms{display:grid;gap:5px;padding:12px 14px;border:1px solid rgba(37,214,162,.18);border-radius:16px;background:rgba(37,214,162,.055)}
.billingTermsSummary strong,.clientBillingTerms>div>strong{color:#f8fafc}
.billingTermsSummary span,.clientBillingTerms small,.clientTermsPreview,.invoicePaymentTermsHint,.recurringTermsPreview{color:#8fa2bf;font-size:11px;line-height:1.45}
.clientBillingTerms{gap:11px}
.clientBillingTerms .split{margin-top:0}
.invoiceTermsDates label{min-width:0}
.invoicePaymentTermsHint{display:block;margin-top:-3px;padding:0 2px;font-weight:650}
.recurringAutomationFields .recurringTermsPreview{display:block;margin-top:6px}
.recurringAutomationFields input:disabled,.clientBillingTerms input:disabled,.billingTermsSettings input:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:760px){
  .clientBillingTerms .split,.invoiceTermsDates{grid-template-columns:1fr!important}
  .billingTermsSettings .settingsProGrid.twoCols{grid-template-columns:1fr!important}
}


/* V17.12.2 — Payment terms helper belongs to the date pair, not only Due date */
.invoiceTermsDates + .invoicePaymentTermsHint{width:100%;text-align:left}

/* V17.12.2 — Contracts & E-Signature */
.badge.contract-draft{background:rgba(148,163,184,.12);color:#e2e8f0;border-color:rgba(148,163,184,.22)}
.badge.contract-sent{background:rgba(96,165,250,.13);color:#bfdbfe;border-color:rgba(96,165,250,.28)}
.badge.contract-viewed{background:rgba(168,85,247,.13);color:#e9d5ff;border-color:rgba(168,85,247,.28)}
.badge.contract-signed{background:rgba(37,214,162,.13);color:#bbf7d0;border-color:rgba(37,214,162,.30)}
.badge.contract-declined,.badge.contract-expired,.badge.contract-superseded{background:rgba(251,113,133,.10);color:#fecdd3;border-color:rgba(251,113,133,.24)}
.contractCenter{display:grid;gap:16px}.contractCenterHero{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,360px);gap:18px;align-items:stretch;background:radial-gradient(circle at 90% 5%,rgba(37,214,162,.13),transparent 38%),linear-gradient(135deg,rgba(17,28,49,.96),rgba(7,14,27,.96))}.contractCenterHero h3{font-size:30px;margin:4px 0 8px}.contractHeroMetric{display:grid;align-content:center;gap:5px;padding:20px;border:1px solid rgba(37,214,162,.20);border-radius:22px;background:rgba(3,10,20,.34)}.contractHeroMetric span{color:#7dd3fc;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.12em}.contractHeroMetric strong{font-size:44px;line-height:1;color:#f8fafc}.contractHeroMetric small{color:var(--muted);line-height:1.45}
.contractCenterStats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.contractCenterStats>div{display:grid;gap:5px;padding:16px;border:1px solid rgba(255,255,255,.08);border-radius:18px;background:rgba(255,255,255,.025)}.contractCenterStats span{color:var(--muted);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.1em}.contractCenterStats strong{font-size:25px;color:#fff}.contractCenterStats small{color:#8395b1;font-size:11px}
.contractLibrary{display:grid;gap:14px}.contractLibraryList{display:grid;gap:9px;max-height:760px;overflow:auto;scrollbar-width:none}.contractLibraryList::-webkit-scrollbar{display:none}.contractLibraryRow{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(120px,.55fr) auto auto;gap:14px;align-items:center;padding:13px 14px;border:1px solid rgba(255,255,255,.08);border-radius:17px;background:rgba(255,255,255,.025)}.contractLibraryRow:hover{border-color:rgba(37,214,162,.24);background:rgba(37,214,162,.035)}.contractLibraryIdentity{display:flex;gap:11px;align-items:center;min-width:0}.contractLibraryIcon{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:rgba(37,214,162,.09);border:1px solid rgba(37,214,162,.18);flex:0 0 38px}.contractLibraryIdentity>div{min-width:0}.contractLibraryIdentity strong,.contractLibraryIdentity small,.contractLibraryIdentity em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contractLibraryIdentity small{color:var(--muted);font-size:11px;margin-top:3px}.contractLibraryIdentity em{color:#fde68a;font-size:10px;font-style:normal;margin-top:3px}.contractLibraryMeta{display:grid;gap:3px}.contractLibraryMeta span{font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:900;letter-spacing:.08em}.contractLibraryMeta b{color:#fff}.contractLibraryStatus{justify-self:start}
.relatedContractAdminCard{background:linear-gradient(135deg,rgba(37,214,162,.055),rgba(96,165,250,.025))!important;border-color:rgba(37,214,162,.17)!important}.relatedContractAdminCard.empty{display:flex;justify-content:space-between;align-items:center;gap:20px}.relatedContractAdminCard.empty h3{margin:3px 0 7px}
.publicRelatedContract{margin:14px 0;background:linear-gradient(135deg,rgba(37,214,162,.07),rgba(96,165,250,.035))!important;border-color:rgba(37,214,162,.20)!important}
.contractPublicShell{max-width:1240px}.publicDocTotalPanel.contract strong{font-size:28px}.publicDocWorkspace.contract{grid-template-columns:minmax(0,1fr) minmax(240px,320px)}.publicContractAgreement{padding:24px!important}.contractAgreementText{color:#cbd5e1;line-height:1.7}.contractAgreementText h2{color:#fff;font-size:26px;letter-spacing:-.035em;margin:0 0 22px}.contractAgreementText h3{color:#e6fff7;font-size:16px;margin:24px 0 9px;padding-top:15px;border-top:1px solid rgba(255,255,255,.07)}.contractAgreementText p{margin:0 0 10px;white-space:pre-wrap;overflow-wrap:normal!important;word-break:normal!important}.contractAgreementText .contractBullet{display:flex;gap:9px;padding-left:4px}.contractAgreementText .contractBullet span{color:#25d6a2;font-weight:950}.contractAgreementText .contractSubline{padding-left:22px;color:#9fb0c9;font-size:13px}.contractTextSpacer{height:8px}
.contractPublicWarning,.contractEstimateChanged{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:14px 16px;margin:14px 0;border:1px solid rgba(251,191,36,.26);border-radius:18px;background:rgba(251,191,36,.065)}.contractPublicWarning{display:grid}.contractPublicWarning strong,.contractEstimateChanged strong{color:#fde68a}.contractPublicWarning span,.contractEstimateChanged span{color:#cbd5e1;font-size:12px;line-height:1.45}.contractEstimateChanged>div{display:grid;gap:4px}
.publicContractSignPanel{margin-top:14px;padding:20px!important;border-color:rgba(37,214,162,.24)!important;background:rgba(37,214,162,.04)!important}.contractSignatureField{display:grid;gap:9px}.contractSignatureFieldHead{display:flex;justify-content:space-between;align-items:center;gap:10px}.contractSignatureFieldHead>span{color:#dbeafe;font-size:12px;font-weight:900}.contractSignatureField canvas{display:block;width:100%;height:220px;touch-action:none!important;overscroll-behavior:contain;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;border:1px dashed rgba(148,163,184,.34);border-radius:18px;background:#f8fafc;cursor:crosshair}.contractConsent{display:grid!important;grid-template-columns:auto minmax(0,1fr);gap:11px!important;align-items:start!important;padding:13px 14px;border:1px solid rgba(37,214,162,.20);border-radius:15px;background:rgba(37,214,162,.045)}.contractConsent input{width:18px!important;height:18px!important;margin:2px 0 0!important}.contractConsent span{display:grid;gap:4px}.contractConsent b{color:#f8fafc}.contractConsent small{color:#94a3b8;line-height:1.45}.contractHashRecord{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 12px;align-items:center;margin-top:14px;padding:12px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(3,9,20,.30)}.contractHashRecord.compact{margin:0}.contractHashRecord span{font-size:9px;text-transform:uppercase;letter-spacing:.09em;font-weight:900;color:#7f92b0}.contractHashRecord code{min-width:0;color:#c7d2fe;font-size:10px;overflow-wrap:anywhere}.contractSignedGrid{display:grid;grid-template-columns:minmax(240px,1fr) minmax(180px,.6fr);gap:16px;align-items:center}.contractSignaturePreview{min-height:135px;display:grid;place-items:center;padding:8px 16px;border:1px solid rgba(255,255,255,.09);border-radius:18px;background:#f8fafc;color:#111827}.contractSignatureSvg{width:100%;height:auto;max-height:145px}.contractSignedGrid>div:last-child{display:grid;gap:4px}.contractSignedGrid span{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:900}.contractSignedGrid strong{font-size:18px;color:#fff}.contractSignedGrid small,.contractSignedGrid p{color:#9fb0c9;margin:0;font-size:12px}
.contractDetailGrid{align-items:start}.contractAgreementAdmin{max-height:780px;overflow:auto;scrollbar-width:none}.contractAgreementAdmin::-webkit-scrollbar{display:none}.contractLinkPreview{overflow-wrap:anywhere;font-size:11px}.contractRevisionForm{grid-column:1/-1;gap:14px}.contractRevisionForm textarea{min-height:560px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.contractRevisionActions{display:flex;gap:8px;flex-wrap:wrap}.contractVersionList,.contractEventList{display:grid;gap:8px;max-height:500px;overflow:auto;scrollbar-width:none}.contractVersionList::-webkit-scrollbar,.contractEventList::-webkit-scrollbar{display:none}.contractVersionRow{display:grid;grid-template-columns:minmax(78px,.35fr) auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 11px;border:1px solid rgba(255,255,255,.07);border-radius:14px;background:rgba(255,255,255,.022)}.contractVersionRow.current{border-color:rgba(37,214,162,.23);background:rgba(37,214,162,.045)}.contractVersionRow>div{display:grid}.contractVersionRow>div span,.contractVersionRow small{color:var(--muted);font-size:10px}.contractVersionRow small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contractEventRow{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:9px;align-items:center;padding:10px 11px;border:1px solid rgba(255,255,255,.065);border-radius:13px;background:rgba(255,255,255,.018)}.contractEventRow span{text-transform:capitalize;color:#dbeafe;font-weight:800}.contractEventRow b{font-size:9px;text-transform:uppercase;color:#5eead4;letter-spacing:.08em}.contractEventRow small{color:var(--muted);font-size:10px}
@media(max-width:980px){.contractCenterHero{grid-template-columns:1fr}.contractCenterStats{grid-template-columns:repeat(2,minmax(0,1fr))}.contractLibraryRow{grid-template-columns:minmax(0,1fr) auto}.contractLibraryMeta{display:none}.publicDocWorkspace.contract{grid-template-columns:1fr}.contractSignedGrid{grid-template-columns:1fr}.contractVersionRow{grid-template-columns:auto auto}.contractVersionRow small{grid-column:1/-1}.contractEventRow{grid-template-columns:1fr auto}.contractEventRow small{grid-column:1/-1}}
@media(max-width:640px){.contractCenterStats{grid-template-columns:1fr}.contractCenterHero h3{font-size:25px}.contractLibraryRow{grid-template-columns:1fr}.contractLibraryStatus{justify-self:start}.contractLibraryRow>a{width:100%;text-align:center}.relatedContractAdminCard.empty,.contractEstimateChanged{display:grid}.contractPublicShell{padding-left:0!important;padding-right:0!important}.publicContractAgreement,.publicContractSignPanel{padding:16px!important}.contractAgreementText h2{font-size:21px}.contractHashRecord{grid-template-columns:1fr}.contractSignatureField canvas{height:190px}.contractRevisionActions{display:grid}.contractRevisionActions>*{width:100%}.contractRevisionForm textarea{min-height:460px}.contractVersionRow{grid-template-columns:1fr auto}.contractVersionRow>a{grid-column:1/-1;width:100%;text-align:center}}

/* V17.12.2 — Content-fit text containers
   Compact text boxes must size to their content and preserve breathing room.
   This intentionally overrides the global overflow-wrap:anywhere hardening only
   for UI pills/status badges; larger cards keep their existing wrapping rules. */
.badge,
.subStatus,
.catPill{
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:max-content;
  max-width:100%;
  min-height:30px;
  padding:7px 11px;
  line-height:1.15;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:none!important;
  flex:0 0 auto;
}

/* Editor headers: text owns the flexible column; the status pill keeps its natural size. */
.docProPanelHead>div:first-child,
.docProLibraryHead>div:first-child{
  min-width:0;
  flex:1 1 auto;
}
.docProPanelHead>.badge,
.docProLibraryHead>.badge{
  justify-self:start;
  align-self:start;
}

/* On very narrow screens, keep pills readable instead of squeezing a single word vertically. */
@media(max-width:760px){
  .badge,
  .subStatus,
  .catPill{
    width:max-content!important;
    max-width:100%!important;
    min-height:32px!important;
    padding:8px 11px!important;
    white-space:nowrap!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
    hyphens:none!important;
  }
  .docProPanelHead>.badge,
  .docProLibraryHead>.badge{
    width:max-content!important;
    justify-self:start!important;
  }
}

/* V17.12.2 — Estimate Composer Modal + searchable Client Picker */
body.estimateModalOpen{overflow:hidden}
.estimateLibrarySolo{min-width:0}
.estimateLibraryHead{align-items:center}
.estimateLibraryTools{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:min(520px,48vw)}
.estimateLibraryTools .searchBox{flex:1 1 300px;max-width:none;min-width:220px}
.estimateLibraryTools .openEstimateComposer{flex:0 0 auto;white-space:nowrap}
.estimateComposerBackdrop{position:fixed;inset:0;z-index:10040;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));background:rgba(1,5,14,.80);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}
.estimateComposerModal{width:min(920px,100%);max-height:calc(100dvh - 38px);padding:0!important;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr);border-color:rgba(37,214,162,.26)!important;background:linear-gradient(180deg,rgba(16,27,49,.995),rgba(6,12,23,.995))!important;box-shadow:0 30px 90px rgba(0,0,0,.52)!important}
.estimateComposerHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:20px 22px 17px;border-bottom:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,rgba(37,214,162,.045),rgba(255,255,255,.008))}
.estimateComposerHeader>div:first-child{min-width:0}.estimateComposerHeader h2{margin:2px 0 5px;font-size:clamp(25px,3vw,34px)}.estimateComposerHeader .muted{margin:0;line-height:1.45}
.estimateComposerHeaderActions{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap;flex:0 0 auto}
.estimateComposerForm{overflow:auto;overscroll-behavior:contain;padding:20px 22px max(24px,env(safe-area-inset-bottom));scrollbar-width:none}
.estimateComposerForm::-webkit-scrollbar,.estimateComposerForm textarea::-webkit-scrollbar{display:none}
.estimateComposerForm textarea{scrollbar-width:none;resize:vertical}
.estimateComposerFlow{font-size:12px;margin:0;text-align:center;line-height:1.45}
.estimateComposerSave{min-height:48px;font-size:14px}
.estimateClientSelector{display:grid;gap:7px}.estimateFieldLabel{color:#c9d7ef;font-size:13px;font-weight:750}
.estimateClientPickerTrigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;padding:13px 15px;border:1px solid rgba(37,214,162,.24);border-radius:16px;background:linear-gradient(135deg,rgba(37,214,162,.07),rgba(7,16,31,.96));color:#fff;min-width:0}
.estimateClientPickerTrigger:hover,.estimateClientPickerTrigger:focus-visible{border-color:rgba(37,214,162,.62);box-shadow:0 0 0 4px rgba(37,214,162,.08);outline:none}
.estimateClientTriggerCopy{display:block;min-width:0}.estimateClientTriggerCopy strong{display:block;color:#f8fafc;font-size:14px;white-space:normal;overflow-wrap:normal!important;word-break:normal!important}.estimateClientTriggerCopy small{display:block;margin-top:3px;color:#8fa2bf;font-size:11px;line-height:1.35;white-space:normal;overflow-wrap:normal!important;word-break:normal!important}
.estimateClientTriggerAction{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-height:31px;padding:7px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.10);background:rgba(255,255,255,.045);color:#b7c7df;font-size:10px;font-weight:900;white-space:nowrap}
.estimateClientPickerBackdrop{position:fixed;inset:0;z-index:10070;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));background:rgba(1,5,14,.88);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.estimateClientPickerModal{width:min(700px,100%);max-height:min(760px,calc(100dvh - 40px));padding:18px!important;display:grid;grid-template-rows:auto auto auto minmax(0,1fr);gap:12px;overflow:hidden;border-color:rgba(37,214,162,.28)!important;background:linear-gradient(180deg,rgba(17,29,52,.995),rgba(6,12,23,.995))!important;box-shadow:0 32px 90px rgba(0,0,0,.58)!important}
.estimateClientPickerHead{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.estimateClientPickerHead>div{min-width:0}.estimateClientPickerHead h3{margin:2px 0 4px;font-size:24px}.estimateClientPickerHead .muted{margin:0;font-size:12px}
.estimateClientSearchBox{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:center;border:1px solid rgba(37,214,162,.24);border-radius:16px;padding:0 12px;background:#07101f}.estimateClientSearchBox:focus-within{border-color:rgba(37,214,162,.66);box-shadow:0 0 0 4px rgba(37,214,162,.08)}.estimateClientSearchBox>span{color:#7e93b0;font-size:22px;line-height:1}.estimateClientSearchBox input{border:0!important;box-shadow:none!important;padding-left:0;background:transparent!important}
.estimateClientPickerMeta{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#8095b2;font-size:10px;font-weight:800}.estimateClientPickerMeta span{color:#c5d3e8}.estimateClientPickerMeta small{font-size:10px}
.estimateClientList{display:grid;gap:8px;align-content:start;overflow:auto;overscroll-behavior:contain;padding:1px 2px 2px;scrollbar-width:none}.estimateClientList::-webkit-scrollbar{display:none}
.estimateClientChoice{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left;padding:12px 13px;border:1px solid rgba(255,255,255,.085);border-radius:16px;background:rgba(255,255,255,.026);color:#fff;min-width:0}.estimateClientChoice:hover,.estimateClientChoice:focus-visible{border-color:rgba(37,214,162,.38);background:rgba(37,214,162,.065);outline:none}.estimateClientChoice.selected{border-color:rgba(37,214,162,.50);background:linear-gradient(135deg,rgba(37,214,162,.12),rgba(37,214,162,.04))}
.estimateClientAvatar{width:39px;height:39px;border-radius:13px;display:grid;place-items:center;background:rgba(37,214,162,.10);border:1px solid rgba(37,214,162,.20);color:#62f4ca;font-size:15px;font-weight:950}.estimateClientChoiceCopy{min-width:0}.estimateClientChoiceCopy strong{display:block;color:#f8fafc;line-height:1.3;white-space:normal;overflow-wrap:normal!important;word-break:normal!important}.estimateClientChoiceCopy small{display:block;margin-top:3px;color:#91a5c2;font-size:11px;line-height:1.4;white-space:normal;overflow-wrap:anywhere}.estimateClientChoose{display:inline-flex;align-items:center;justify-content:center;min-height:29px;padding:6px 9px;border-radius:999px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09);color:#cbd5e1;font-size:10px;font-weight:900;white-space:nowrap}.estimateClientChoice.selected .estimateClientChoose{background:rgba(37,214,162,.14);border-color:rgba(37,214,162,.30);color:#86fbd9}
.estimateClientEmpty{display:grid;place-items:center;text-align:center;gap:5px;padding:32px 18px;border:1px dashed rgba(255,255,255,.12);border-radius:17px;color:#8fa2bf}.estimateClientEmpty strong{color:#fff}.estimateClientEmpty span{font-size:11px}
@media(max-width:760px){
  .estimateLibraryHead{display:grid!important}.estimateLibraryTools{width:100%;min-width:0;display:grid;grid-template-columns:1fr}.estimateLibraryTools .searchBox{min-width:0;width:100%}.estimateLibraryTools .openEstimateComposer{width:100%}
  .estimateComposerBackdrop,.estimateClientPickerBackdrop{place-items:end center;padding:0 max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
  .estimateComposerModal,.estimateClientPickerModal{width:100%;max-height:calc(100dvh - max(12px,env(safe-area-inset-top)));border-radius:25px 25px 15px 15px!important}
  .estimateComposerHeader{padding:17px 15px 14px;gap:10px}.estimateComposerHeaderActions{align-items:flex-end;display:grid;justify-items:end}.estimateComposerHeaderActions .closeEstimateComposer{min-width:72px}.estimateComposerForm{padding:16px 14px max(18px,env(safe-area-inset-bottom))}
  .estimateClientPickerTrigger{align-items:flex-start}.estimateClientTriggerAction{margin-top:2px}.estimateClientPickerModal{padding:16px 14px max(16px,env(safe-area-inset-bottom))!important}.estimateClientPickerHead{padding-right:0}.estimateClientChoice{grid-template-columns:auto minmax(0,1fr)}.estimateClientChoose{grid-column:2;justify-self:start}.estimateClientPickerMeta{align-items:flex-start;flex-direction:column;gap:3px}
}
@media(max-width:430px){
  .estimateComposerHeader{display:grid}.estimateComposerHeaderActions{display:flex;justify-content:space-between}.estimateComposerHeaderActions .badge{order:1}.estimateComposerHeaderActions .closeEstimateComposer{order:2}.estimateClientPickerTrigger{display:grid}.estimateClientTriggerAction{justify-self:start}.estimateClientChoice{padding:11px}.estimateClientAvatar{width:36px;height:36px;border-radius:12px}
}

/* V17.12.2 — Cleaner Client Picker rows */
.estimateClientChoiceCopy{display:flex;align-items:center;min-height:39px}
.estimateClientChoiceCopy strong{margin:0;font-size:14px}

/* V17.12.2 — Universal Workspace Modal pattern
   Large create/edit forms no longer crowd command centers. Libraries remain full-width;
   focused editors open in a premium, scroll-invisible modal workspace. */
body.entityStudioModalOpen{overflow:hidden!important}
.client360Editor.entityStudioSource,
.serviceStudioEditor.entityStudioSource,
.invoiceWorkspace #invoiceForm.entityStudioSource,
.paymentStudio.entityStudioSource,
.recurringPlanForm.entityStudioSource,
.projectStudio.entityStudioSource{display:none!important}
.clients360Workspace,
.servicesCommandGrid.serviceStudioGrid,
.docProWorkspace.invoiceWorkspace,
.paymentsWorkspace,
.two.recurringWorkspace,
.projectsWorkspace{grid-template-columns:minmax(0,1fr)!important}
.clients360Workspace>.clients360Library,
.servicesCommandGrid.serviceStudioGrid>.serviceStudioLibrary,
.docProWorkspace.invoiceWorkspace>.invoiceCenterPanel,
.paymentsWorkspace>.paymentsSideStack,
.two.recurringWorkspace>.recurringLibraryPanel,
.projectsWorkspace>.projectLibrary{grid-column:1/-1!important;width:100%;max-width:none;min-width:0}
.paymentsWorkspace>.paymentsSideStack{grid-template-columns:repeat(2,minmax(0,1fr))}
.entityStudioLauncher{white-space:nowrap;flex:0 0 auto}
.entityStudioBackdrop{position:fixed;inset:0;z-index:10040;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));background:rgba(1,5,14,.84);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.entityStudioModal{width:min(var(--entity-studio-width,920px),100%);max-height:calc(100dvh - 38px);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid rgba(37,214,162,.27);border-radius:30px;background:linear-gradient(180deg,rgba(16,27,49,.995),rgba(6,12,23,.995));box-shadow:0 34px 100px rgba(0,0,0,.58),0 0 0 1px rgba(255,255,255,.018)}
.entityStudioChrome{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 18px;border-bottom:1px solid rgba(255,255,255,.075);background:linear-gradient(180deg,rgba(37,214,162,.055),rgba(255,255,255,.008))}
.entityStudioChrome>div{min-width:0;display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}.entityStudioChrome span{color:#5eecc5;font-size:9px;font-weight:950;text-transform:uppercase;letter-spacing:.12em;white-space:nowrap}.entityStudioChrome strong{color:#dce8f8;font-size:12px;font-weight:900;white-space:normal;overflow-wrap:normal!important;word-break:normal!important}.entityStudioChrome .entityStudioClose{flex:0 0 auto;white-space:nowrap}
.entityStudioViewport{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:none}.entityStudioViewport::-webkit-scrollbar{display:none}
.entityStudioViewport>.entityStudioSource.entityStudioActive{display:grid!important;position:relative!important;top:auto!important;left:auto!important;right:auto!important;bottom:auto!important;width:100%!important;max-width:none!important;min-width:0!important;max-height:none!important;margin:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:visible!important}
.entityStudioViewport>.entityStudioSource.entityStudioActive textarea{scrollbar-width:none}.entityStudioViewport>.entityStudioSource.entityStudioActive textarea::-webkit-scrollbar{display:none}
.entityStudioViewport>.client360Editor.entityStudioActive,
.entityStudioViewport>.docProEditor.entityStudioActive,
.entityStudioViewport>.paymentStudio.entityStudioActive,
.entityStudioViewport>.recurringPlanForm.entityStudioActive,
.entityStudioViewport>.projectStudio.entityStudioActive{padding:20px 22px max(24px,env(safe-area-inset-bottom))!important;background:transparent!important}
.entityStudioViewport>.serviceStudioEditor.entityStudioActive{padding:20px 22px max(24px,env(safe-area-inset-bottom))!important;border-radius:0!important}
@media(max-width:1180px){.paymentsWorkspace>.paymentsSideStack{grid-template-columns:1fr 1fr}}
@media(max-width:760px){
  .entityStudioBackdrop{place-items:end center;padding:0 max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
  .entityStudioModal{width:100%;max-height:calc(100dvh - max(12px,env(safe-area-inset-top)));border-radius:25px 25px 15px 15px}
  .entityStudioChrome{padding:12px 14px}.entityStudioChrome>div{display:grid;gap:2px}.entityStudioChrome strong{font-size:11px}
  .entityStudioViewport>.client360Editor.entityStudioActive,
  .entityStudioViewport>.docProEditor.entityStudioActive,
  .entityStudioViewport>.paymentStudio.entityStudioActive,
  .entityStudioViewport>.recurringPlanForm.entityStudioActive,
  .entityStudioViewport>.projectStudio.entityStudioActive,
  .entityStudioViewport>.serviceStudioEditor.entityStudioActive{padding:16px 14px max(20px,env(safe-area-inset-bottom))!important}
  .paymentsWorkspace>.paymentsSideStack{grid-template-columns:1fr}
  .entityStudioLauncher{width:100%}
}

/* V17.12.2 — Detail editors also use the same focused workspace modal. */
.entityStudioViewport>.invoiceFullEditor.entityStudioActive,
.entityStudioViewport>.contractRevisionForm.entityStudioActive{padding:20px 22px max(24px,env(safe-area-inset-bottom))!important;background:transparent!important;border-radius:0!important}
@media(max-width:760px){
  .entityStudioViewport>.invoiceFullEditor.entityStudioActive,
  .entityStudioViewport>.contractRevisionForm.entityStudioActive{padding:16px 14px max(20px,env(safe-area-inset-bottom))!important}
}

/* V17.12.2 — Content-fit action controls
   Any anchor rendered as a button must receive the same breathing room as a native button.
   The box grows around the label; the label is never squeezed against the rounded edge. */
a.primary:not(.tiny),
a.ghost:not(.tiny),
a.success:not(.tiny),
a.danger:not(.tiny),
.button:not(.tiny){
  box-sizing:border-box;
  width:max-content;
  max-width:100%;
  min-width:max-content;
  padding:11px 18px!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:none!important;
  flex:0 0 auto;
}
a.tiny{
  box-sizing:border-box;
  width:max-content;
  max-width:100%;
  padding:9px 13px!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:none!important;
}

/* Hero/action pills use identical content-fit behavior whether they are <a> or <button>. */
.docProHeroActions>:is(a,button),
.dashQuickActions>:is(a,button),
.clients360Quick>:is(a,button),
.paymentsHeroActions>:is(a,button),
.proofsHeroActions>:is(a,button),
.projectWorkspaceActions>:is(a,button),
.settingsProActions>:is(a,button){
  width:max-content;
  max-width:100%;
  min-width:max-content;
  padding-left:18px!important;
  padding-right:18px!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  flex:0 0 auto;
}

@media(max-width:760px){
  /* Existing mobile layouts intentionally make action controls full width. */
  .docProHeroActions>:is(a,button),
  .dashQuickActions>:is(a,button),
  .clients360Quick>:is(a,button),
  .paymentsHeroActions>:is(a,button),
  .proofsHeroActions>:is(a,button),
  .projectWorkspaceActions>:is(a,button),
  .settingsProActions>:is(a,button){
    width:100%;
    min-width:0;
  }
}


/* V17.12.2 — Client Picker optical centering
   The modal is explicitly centered in the viewport and each horizontal client card
   centers avatar, label and action on the same vertical axis with even breathing room. */
@media(min-width:761px){
  .estimateClientPickerBackdrop{
    justify-items:center!important;
    align-items:center!important;
  }
  .estimateClientPickerModal{
    justify-self:center!important;
    align-self:center!important;
    margin-inline:auto!important;
  }
}
.estimateClientChoice{
  box-sizing:border-box;
  min-height:62px;
  align-items:center!important;
  padding-block:10px!important;
}
.estimateClientAvatar,
.estimateClientChoiceCopy,
.estimateClientChoose{
  align-self:center!important;
  margin-block:0!important;
}
.estimateClientChoiceCopy{
  display:flex;
  align-items:center!important;
  min-height:39px;
}
.estimateClientChoiceCopy strong{
  line-height:1.2!important;
  margin:0!important;
}

/* V17.12.2 — Contract approval gate + premium action confirmation */
body.premiumDecisionOpen{overflow:hidden!important}
.premiumDecisionBackdrop{
  position:fixed;inset:0;z-index:3200;display:grid;place-items:center;
  padding:max(20px,env(safe-area-inset-top)) 18px max(20px,env(safe-area-inset-bottom));
  background:rgba(2,7,16,.76);backdrop-filter:blur(18px) saturate(1.15);
  -webkit-backdrop-filter:blur(18px) saturate(1.15);opacity:0;transition:opacity .14s ease
}
.premiumDecisionBackdrop.open{opacity:1}
.premiumDecisionBackdrop.closing{opacity:0;pointer-events:none}
.premiumDecisionModal{
  width:min(720px,100%);max-height:calc(100dvh - 40px);overflow:auto;
  scrollbar-width:none;-ms-overflow-style:none;padding:22px!important;
  border:1px solid rgba(37,214,162,.32)!important;border-radius:28px!important;
  background:linear-gradient(180deg,rgba(17,29,52,.995),rgba(6,12,23,.995))!important;
  box-shadow:0 36px 110px rgba(0,0,0,.62),0 0 0 1px rgba(255,255,255,.02)!important;
  transform:translateY(12px) scale(.985);transition:transform .16s ease
}
.premiumDecisionBackdrop.open .premiumDecisionModal{transform:translateY(0) scale(1)}
.premiumDecisionModal::-webkit-scrollbar{width:0;height:0}
.premiumDecisionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:18px;border-bottom:1px solid rgba(148,163,184,.16)}
.premiumDecisionHead>div{min-width:0}
.premiumDecisionHead h2{margin:3px 0 5px;font-size:clamp(27px,4vw,38px);line-height:1.02;letter-spacing:-.035em}
.premiumDecisionHead .muted{margin:0;line-height:1.45;overflow-wrap:normal!important;word-break:normal!important}
.premiumDecisionSummary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:18px 0}
.premiumDecisionMetric{min-width:0;padding:14px 15px;border:1px solid rgba(148,163,184,.16);border-radius:18px;background:rgba(17,24,39,.7)}
.premiumDecisionMetric span,.premiumDecisionNotice span{display:block;color:#94a3b8;font-size:10px;font-weight:950;letter-spacing:.12em;text-transform:uppercase}
.premiumDecisionMetric strong{display:block;margin-top:5px;color:#f8fafc;font-size:17px;line-height:1.25;overflow-wrap:normal!important;word-break:normal!important}
.premiumDecisionMetric small{display:block;margin-top:5px;color:#94a3b8;font-size:11px;line-height:1.4;overflow-wrap:normal!important;word-break:normal!important}
.premiumDecisionNotice{padding:15px 16px;border:1px solid rgba(37,214,162,.23);border-radius:18px;background:linear-gradient(135deg,rgba(37,214,162,.085),rgba(96,165,250,.035))}
.premiumDecisionNotice p{margin:7px 0 0;color:#cbd5e1;font-size:13px;line-height:1.6;overflow-wrap:normal!important;word-break:normal!important}
.premiumDecisionActions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:18px}
.premiumDecisionActions button{min-height:42px;padding:10px 18px!important;white-space:nowrap;width:auto;max-width:100%}
.contractGenerateLocked[disabled]{opacity:.48;filter:saturate(.55);cursor:not-allowed;box-shadow:none!important}
.relatedContractAdminCard.locked{border-style:dashed!important;border-color:rgba(148,163,184,.20)!important;background:linear-gradient(135deg,rgba(148,163,184,.035),rgba(15,23,42,.18))!important}
.relatedContractAdminCard.ready{border-color:rgba(37,214,162,.24)!important;background:linear-gradient(135deg,rgba(37,214,162,.055),rgba(15,23,42,.18))!important}
@media(max-width:680px){
  .premiumDecisionBackdrop{align-items:end;padding:10px 10px max(10px,env(safe-area-inset-bottom))}
  .premiumDecisionModal{width:100%;max-height:calc(100dvh - max(12px,env(safe-area-inset-top)));padding:18px 15px max(17px,env(safe-area-inset-bottom))!important;border-radius:25px 25px 16px 16px!important}
  .premiumDecisionHead{gap:10px}.premiumDecisionHead h2{font-size:29px}
  .premiumDecisionSummary{grid-template-columns:1fr}
  .premiumDecisionActions{display:grid;grid-template-columns:1fr;gap:8px}
  .premiumDecisionActions button{width:100%}
}


/* V17.12.2 — Mobile signature pad hardening
   While the user signs, touch/pointer gestures belong to the canvas, not the page. */
.contractSignatureField{overscroll-behavior:contain}
.contractSignatureField canvas{contain:layout paint;pointer-events:auto}

/* V17.12.2 — Draft Estimate action gate */
.estimateActionLocked[disabled]{
  opacity:.38;
  filter:saturate(.35);
  cursor:not-allowed!important;
  box-shadow:none!important;
  transform:none!important;
}
.estimateDraftEditor .invoiceEditNotice{margin-bottom:4px}
.estimateDraftEditor .estimateEditTotals{margin-top:4px}

/* V17.13.0 — Contract-first estimate approval + evidence spacing */
.evidenceIdentity{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px!important;align-content:start;min-width:0}
.evidenceField{display:grid!important;gap:4px!important;min-width:0;padding:12px 13px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(3,9,20,.28)}
.evidenceField>span,.approvalEvidenceGrid>div>span,.evidenceHashCard>span{display:block!important;font-size:9px!important;line-height:1.2!important;text-transform:uppercase;letter-spacing:.1em;font-weight:900;color:#7f92b0}
.evidenceField>strong,.approvalEvidenceGrid>div>strong{display:block!important;margin:0!important;min-width:0;color:#f8fafc;font-size:14px!important;line-height:1.35!important;overflow-wrap:break-word}
.evidenceHashGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px;min-width:0}
.evidenceHashCard{display:grid;gap:8px;min-width:0;padding:13px 14px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(3,9,20,.30)}
.evidenceHashCard code{display:block;min-width:0;margin:0;color:#c7d2fe;font-size:10px;line-height:1.55;white-space:normal;overflow-wrap:anywhere;word-break:break-all}
.approvalEvidenceGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px;min-width:0}
.approvalEvidenceGrid.compact{margin:14px 0}
.approvalEvidenceGrid>div{display:grid;gap:5px;min-width:0;padding:13px 14px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(3,9,20,.28)}
.estimateApprovalGate{margin-top:14px;padding:20px!important;border-color:rgba(37,214,162,.25)!important;background:rgba(37,214,162,.045)!important}
.estimateContractConfirmation{margin-top:4px}
#approveEstimateAfterContract:disabled{opacity:.42;filter:saturate(.45);cursor:not-allowed;box-shadow:none}
.publicEstimateApprovalRecord{margin-top:14px}
.contractSignedGrid>.evidenceIdentity{align-self:stretch}
@media(max-width:720px){.evidenceIdentity,.evidenceHashGrid,.approvalEvidenceGrid{grid-template-columns:1fr}.evidenceField,.evidenceHashCard,.approvalEvidenceGrid>div{padding:12px}.estimateApprovalGate{padding:16px!important}}

/* V17.13.2 — Unified Invoice / Estimate Studio */
.invoiceComposerModal{width:min(920px,100%)!important}
.invoiceComposerForm{display:grid;gap:16px}
.invoiceClientAuxActions{display:flex;justify-content:flex-end;margin-top:2px}
.invoiceClientAuxActions .tiny{width:auto;min-height:34px;padding:7px 12px!important}
.invoiceComposerForm .quickInvoiceClient{margin-top:-4px;padding:14px;border:1px solid rgba(37,214,162,.18);border-radius:18px;background:rgba(6,16,31,.44)}
.invoiceComposerForm .docLineActionBar{margin-top:0}
.invoiceComposerForm .docLineEmpty{margin-top:0}
.invoiceComposerForm .invoiceTermsDates{margin-top:0}
.invoiceComposerForm .paymentDestinationChooser{margin-top:0}
.invoiceLibrarySolo{margin-top:0}
@media(max-width:680px){
  .invoiceClientAuxActions{justify-content:stretch}
  .invoiceClientAuxActions .tiny{width:100%}
  .invoiceComposerForm .quickInvoiceClient .split{grid-template-columns:1fr}
}


/* V17.13.3 — Estimate pre-delivery review: approve only after seeing the exact client-facing proposal */
.estimateApprovalReviewModal{width:min(980px,100%)!important;max-height:calc(100dvh - 40px)!important}
.estimateApprovalReviewIdentity{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0}
.estimateApprovalReviewIdentity>div,.estimateApprovalReviewTotals>div{min-width:0;padding:14px 15px;border:1px solid rgba(148,163,184,.16);border-radius:18px;background:rgba(17,24,39,.68)}
.estimateApprovalReviewIdentity span,.estimateApprovalReviewSectionHead span,.estimateApprovalReviewItem header span,.estimateApprovalReviewFacts span,.estimateApprovalReviewWarranty span,.estimateApprovalReviewTotals span{display:block;color:#94a3b8;font-size:10px;font-weight:950;letter-spacing:.11em;text-transform:uppercase}
.estimateApprovalReviewIdentity strong{display:block;margin-top:5px;color:#f8fafc;font-size:15px;line-height:1.35;overflow-wrap:anywhere}
.estimateApprovalReviewIdentity small{display:block;margin-top:4px;color:#94a3b8;font-size:11px;line-height:1.4;overflow-wrap:anywhere}
.estimateApprovalReviewSection{margin-top:15px;padding:16px;border:1px solid rgba(148,163,184,.16);border-radius:22px;background:rgba(2,8,20,.22)}
.estimateApprovalReviewSectionHead{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:12px}
.estimateApprovalReviewSectionHead h3{margin:3px 0 0;font-size:20px;line-height:1.15}
.estimateApprovalReviewSectionHead>strong{font-size:12px;color:#cbd5e1;white-space:nowrap}
.estimateApprovalReviewItems{display:grid;gap:11px}
.estimateApprovalReviewItem{padding:15px;border:1px solid rgba(37,214,162,.18);border-radius:18px;background:linear-gradient(135deg,rgba(37,214,162,.045),rgba(15,23,42,.35))}
.estimateApprovalReviewItem header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.estimateApprovalReviewItem header>div{min-width:0}
.estimateApprovalReviewItem header h3{margin:4px 0 0;color:#f8fafc;font-size:17px;line-height:1.25;overflow-wrap:normal!important;word-break:normal!important}
.estimateApprovalReviewItem header>strong{font-size:18px;white-space:nowrap;color:#f8fafc}
.estimateApprovalReviewDescription,.estimateApprovalReviewNotes{margin-top:12px;padding:13px 14px;border:1px solid rgba(148,163,184,.13);border-radius:15px;background:rgba(2,8,20,.35);color:#cbd5e1;font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:break-word!important;word-break:normal!important}
.estimateApprovalReviewFacts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}
.estimateApprovalReviewFacts>div{padding:10px 11px;border-radius:13px;background:rgba(15,23,42,.62);border:1px solid rgba(148,163,184,.11)}
.estimateApprovalReviewFacts b{display:block;margin-top:4px;color:#f8fafc;font-size:13px;overflow-wrap:normal!important;word-break:normal!important}
.estimateApprovalReviewWarranty{margin-top:10px;padding:11px 12px;border:1px solid rgba(245,158,11,.2);border-radius:14px;background:rgba(245,158,11,.055)}
.estimateApprovalReviewWarranty strong{display:block;margin-top:4px;font-size:13px}.estimateApprovalReviewWarranty p{margin:6px 0 0;color:#cbd5e1;font-size:12px;line-height:1.5}
.estimateApprovalReviewTotals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:15px}
.estimateApprovalReviewTotals strong{display:block;margin-top:5px;font-size:17px;color:#f8fafc}
.estimateApprovalReviewTotals .grand{border-color:rgba(37,214,162,.34);background:linear-gradient(135deg,rgba(37,214,162,.11),rgba(15,23,42,.52))}
.estimateApprovalReviewTotals .grand strong{font-size:22px;color:#5eead4}
.estimateApprovalReviewNotice{margin-top:15px}
.estimateApprovalReviewActions{position:sticky;bottom:-22px;margin:18px -22px -22px;padding:14px 22px 22px;background:linear-gradient(180deg,rgba(6,12,23,.12),rgba(6,12,23,.98) 35%);z-index:2}
.estimateApprovalReviewActions .estimateApprovalReviewApprove{box-shadow:0 12px 30px rgba(37,214,162,.14)}
.estimateApprovalReviewEmpty{padding:18px;border:1px dashed rgba(248,113,113,.35);border-radius:16px;color:#fecaca;text-align:center}
@media(max-width:760px){
  .estimateApprovalReviewModal{max-height:calc(100dvh - max(10px,env(safe-area-inset-top)))!important}
  .estimateApprovalReviewIdentity,.estimateApprovalReviewFacts,.estimateApprovalReviewTotals{grid-template-columns:1fr 1fr}
  .estimateApprovalReviewItem header{align-items:flex-start}.estimateApprovalReviewItem header>strong{font-size:16px}
  .estimateApprovalReviewActions{bottom:calc(-1 * max(17px,env(safe-area-inset-bottom)));margin:16px -15px calc(-1 * max(17px,env(safe-area-inset-bottom)));padding:13px 15px max(17px,env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr}
}
@media(max-width:460px){
  .estimateApprovalReviewIdentity,.estimateApprovalReviewFacts,.estimateApprovalReviewTotals{grid-template-columns:1fr}
}


/* V17.13.4 — Local Estimate Preview */
.previewEstimateLocal{border-color:rgba(96,165,250,.28)!important;background:rgba(59,130,246,.08)!important;color:#dbeafe!important}
.previewEstimateLocal:hover{border-color:rgba(96,165,250,.5)!important;background:rgba(59,130,246,.14)!important}
.estimateApprovalReviewBackdrop .estimateApprovalReviewModal{overscroll-behavior:contain}


/* V17.13.8 — Contract evidence hierarchy: signature first, agreement below */
.contractSignatureAdmin{grid-column:1/-1!important;padding:22px!important}
.contractSignatureAdmin .publicDocSectionHead{margin-bottom:16px}
.contractSignatureAdmin .contractSignedGrid{grid-template-columns:minmax(360px,1.25fr) minmax(320px,.75fr);gap:22px;align-items:stretch}
.contractSignatureAdmin .contractSignaturePreview{min-height:220px;padding:18px 24px;border-radius:20px}
.contractSignatureAdmin .contractSignatureSvg{max-height:205px}
.contractSignatureAdmin .evidenceIdentity{gap:14px!important}
.contractSignatureAdmin .evidenceField{padding:15px 16px;min-height:82px}
.contractSignatureAdmin .evidenceHashGrid{gap:14px;margin-top:18px}
.contractSignatureAdmin .evidenceHashCard{padding:15px 16px;min-height:86px}
.contractSignatureAdmin .evidenceHashCard code{display:block;margin-top:8px;line-height:1.55;overflow-wrap:anywhere;word-break:break-word}
.contractAgreementAdmin{grid-column:1/-1!important;max-height:none}
@media(max-width:900px){.contractSignatureAdmin .contractSignedGrid{grid-template-columns:1fr}.contractSignatureAdmin .contractSignaturePreview{min-height:180px}.contractSignatureAdmin .contractSignatureSvg{max-height:170px}}
@media(max-width:640px){.contractSignatureAdmin{padding:16px!important}.contractSignatureAdmin .evidenceIdentity,.contractSignatureAdmin .evidenceHashGrid{grid-template-columns:1fr!important}.contractSignatureAdmin .contractSignaturePreview{min-height:150px;padding:12px}.contractSignatureAdmin .contractSignatureSvg{max-height:145px}}
/* V17.14.8 — Direct Invoice Library popup viewer. */
.invoiceViewerBackdrop{position:fixed;inset:0;z-index:12000;display:grid;place-items:center;padding:max(14px,env(safe-area-inset-top)) 14px max(14px,env(safe-area-inset-bottom));background:rgba(2,8,18,.82);backdrop-filter:blur(14px);opacity:0;transition:opacity .18s ease}
.invoiceViewerBackdrop.show{opacity:1}
.invoiceViewerModal{width:min(1180px,96vw);height:min(900px,94dvh);display:grid;grid-template-rows:auto 1fr;overflow:hidden;border:1px solid rgba(45,212,191,.35);border-radius:24px;background:#07111f;box-shadow:0 30px 90px rgba(0,0,0,.65)}
.invoiceViewerModal>header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;border-bottom:1px solid rgba(148,163,184,.16);background:#0d1a2d}
.invoiceViewerModal>iframe{width:100%;height:100%;border:0;background:#06101d}
@media(max-width:820px){.invoiceViewerBackdrop{padding:max(8px,env(safe-area-inset-top)) 8px max(8px,env(safe-area-inset-bottom))}.invoiceViewerModal{width:100%;height:100%;border-radius:18px}.invoiceViewerModal>header{padding:10px 12px}}


/* V17.15.12 — Premium file upload controls (removes browser-default 90s styling). */
.proofForm input[type="file"]{
  width:100%;
  min-height:46px;
  padding:4px 6px;
  border:1px solid rgba(148,163,184,.18);
  border-radius:14px;
  background:linear-gradient(180deg,rgba(15,23,42,.78),rgba(8,15,28,.92));
  color:#94a3b8;
  font:inherit;
  cursor:pointer;
  overflow:hidden;
}
.proofForm input[type="file"]::file-selector-button{
  appearance:none;
  -webkit-appearance:none;
  border:1px solid rgba(45,212,191,.48);
  border-radius:10px;
  margin:0 11px 0 0;
  padding:9px 14px;
  background:linear-gradient(135deg,#2dd4bf,#22c9ad);
  color:#031611;
  font:inherit;
  font-weight:900;
  letter-spacing:-.01em;
  cursor:pointer;
  box-shadow:0 7px 18px rgba(45,212,191,.12);
  transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;
}
.proofForm input[type="file"]::-webkit-file-upload-button{
  -webkit-appearance:none;
  border:1px solid rgba(45,212,191,.48);
  border-radius:10px;
  margin:0 11px 0 0;
  padding:9px 14px;
  background:linear-gradient(135deg,#2dd4bf,#22c9ad);
  color:#031611;
  font:inherit;
  font-weight:900;
  cursor:pointer;
}
.proofForm input[type="file"]:hover::file-selector-button{filter:brightness(1.06);box-shadow:0 9px 24px rgba(45,212,191,.2)}
.proofForm input[type="file"]:focus-visible{outline:2px solid rgba(45,212,191,.7);outline-offset:2px;border-color:rgba(45,212,191,.5)}
@media(max-width:560px){
  .proofForm input[type="file"]{min-height:48px;font-size:12px}
  .proofForm input[type="file"]::file-selector-button{padding:10px 12px;margin-right:8px}
}
