@font-face {
  font-family: "Nunito Sans";
  font-style: normal;
  font-weight: 200 1000;
  font-display: swap;
  src: url("/assets/vendor/nunito-sans/NunitoSans-Variable.ttf") format("truetype");
}

@font-face {
  font-family: "Nunito Sans";
  font-style: italic;
  font-weight: 200 1000;
  font-display: swap;
  src: url("/assets/vendor/nunito-sans/NunitoSans-Italic-Variable.ttf") format("truetype");
}

:root {
  color-scheme: light;
  --ink: #17211b;
  --muted: #647067;
  --paper: #fffef9;
  --canvas: #f3f5ef;
  --line: #dfe5dc;
  --line-strong: #c8d1c7;
  --brand: #17643d;
  --brand-strong: #0d4a2a;
  --brand-soft: #e1f1e6;
  --warning: #9a5807;
  --warning-soft: #fff0cf;
  --danger: #a02c2c;
  --danger-soft: #fce8e6;
  --info: #245e83;
  --info-soft: #e3f0f8;
  --shadow: 0 12px 34px rgb(30 50 36 / 8%);
  --radius: .8rem;
  font-family: "Nunito Sans", system-ui, sans-serif;
  font-synthesis: none;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }

html { background: var(--canvas); color: var(--ink); }

body { margin: 0; min-width: 20rem; line-height: 1.45; }

a { color: var(--brand-strong); text-decoration-thickness: .08em; text-underline-offset: .18em; }
a:hover { color: var(--brand); }

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

button, .button {
  display: inline-flex;
  min-height: 2.55rem;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .58rem .9rem;
  border: 1px solid transparent;
  border-radius: .58rem;
  background: var(--brand);
  color: white;
  font-weight: 750;
  line-height: 1.1;
  text-decoration: none;
  cursor: pointer;
}

button:hover, .button:hover { background: var(--brand-strong); color: white; }
button:disabled, .button[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }
.button.secondary, button.secondary { border-color: var(--line-strong); background: var(--paper); color: var(--ink); }
.button.secondary:hover, button.secondary:hover { border-color: var(--brand); color: var(--brand-strong); }
.button.danger, button.danger { background: var(--danger); }
.button.small, button.small { min-height: 2rem; padding: .38rem .58rem; font-size: .88rem; }
.icon-only { width: 2.55rem; padding: 0; }
.icon { width: 1.1rem; height: 1.1rem; stroke-width: 1.9; }

:focus-visible { outline: .2rem solid #67a9ff; outline-offset: .15rem; }

.shell { display: grid; min-height: 100vh; grid-template-columns: 15.5rem minmax(0, 1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; padding: 1.4rem 1rem; background: #173c2a; color: #f4fff7; }
.brand { display: flex; align-items: center; gap: .7rem; padding: .3rem .5rem 1.25rem; font-size: 1.15rem; font-weight: 850; }
.brand .mark { display: grid; width: 2rem; height: 2rem; place-items: center; border-radius: .55rem; background: #b5e6c4; color: #123823; }
.nav { display: grid; gap: .25rem; }
.nav a { display: flex; align-items: center; gap: .7rem; padding: .68rem .72rem; border-radius: .55rem; color: #e7f5ea; text-decoration: none; font-weight: 650; }
.nav a:hover, .nav a[aria-current="page"] { background: rgb(255 255 255 / 11%); color: white; }
.sidebar-footer { position: absolute; right: 1rem; bottom: 1.2rem; left: 1rem; }
.sidebar-footer button.secondary { width: 100%; border-color: rgb(255 255 255 / 32%); background: transparent; color: #f4fff7; }
.sidebar-footer button.secondary:hover, .sidebar-footer button.secondary:focus-visible { border-color: rgb(255 255 255 / 62%); background: rgb(255 255 255 / 11%); color: white; }

.content { min-width: 0; padding: 2rem clamp(1rem, 3vw, 3.2rem) 4rem; }
.breadcrumbs { margin: 0 0 .65rem; color: var(--muted); font-size: .9rem; font-weight: 650; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.breadcrumbs li { display: inline-flex; min-width: 0; align-items: center; gap: .35rem; }
.breadcrumbs li + li::before { content: "\203A"; color: var(--line-strong); font-size: 1.15em; font-weight: 850; }
.breadcrumbs a { color: var(--brand-strong); text-decoration: none; }
.breadcrumbs a:hover { color: var(--brand); text-decoration: underline; }
.breadcrumbs [aria-current="page"] { overflow-wrap: anywhere; color: var(--ink); font-weight: 750; }
.page-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.page-header h1 { margin: 0; font-size: clamp(1.6rem, 3vw, 2.25rem); letter-spacing: -.025em; }
.page-header p { max-width: 46rem; margin: .35rem 0 0; color: var(--muted); }
.actions { display: flex; flex-wrap: wrap; gap: .55rem; }
#document-send-action { display: contents; }

.card { border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); box-shadow: var(--shadow); }
.card-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.15rem; border-bottom: 1px solid var(--line); }
.card-header h2, .card-header h3 { margin: 0; font-size: 1.03rem; }
.card-body { padding: 1.15rem; }
.document-list-filters { display: block; }
.document-filters { display: grid; width: 100%; gap: .65rem; }
.document-filter-search { min-width: 0; }
.document-filter-row { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; }
.document-filter-row select { width: 12rem; }
.document-filter-row input[type="date"] { width: 10.75rem; }
.compact-date-filter { display: inline-flex; align-items: center; gap: .4rem; color: var(--muted); font-size: .82rem; font-weight: 800; }
.document-filter-row .search-status { min-width: 4.25rem; }
.grid { display: grid; gap: 1rem; }
.grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.client-detail-sections { display: grid; gap: 1.5rem; }
.client-missions-section { display: grid; gap: .7rem; }
.client-missions-heading { display: flex; align-items: center; justify-content: space-between; }
.client-missions-heading h2 { margin: 0; }
.client-notes-card .card-header { align-items: flex-start; }
.client-notes-card .card-header p { margin: .25rem 0 0; color: var(--muted); font-size: .84rem; }
.client-note-composer { position: relative; }
.client-note-composer > summary, .client-note-editor > summary { list-style: none; cursor: pointer; }
.client-note-composer > summary::-webkit-details-marker, .client-note-editor > summary::-webkit-details-marker { display: none; }
.client-note-composer > form {
  position: absolute;
  z-index: 30;
  top: calc(100% + .45rem);
  right: 0;
  width: min(28rem, calc(100vw - 3rem));
  padding: 1rem;
  border: 1px solid var(--line-strong);
  border-radius: .65rem;
  background: var(--paper);
  box-shadow: 0 18px 44px rgb(23 33 27 / 18%);
}
.client-note-composer textarea, .client-note-editor textarea { min-height: 7rem; }
.client-notes-list { display: grid; gap: .9rem; }
.client-note { padding: .9rem; border: 1px solid var(--line); border-radius: .65rem; background: var(--paper-soft); }
.client-note > header { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.client-note > header > div { color: var(--muted); font-size: .78rem; font-weight: 700; }
.client-note > p { margin: .75rem 0; }
.client-note-editor { border-top: 1px solid var(--line); padding-top: .65rem; }
.client-note-editor > summary { width: max-content; color: var(--brand-strong); font-size: .84rem; font-weight: 800; }
.client-note-editor > form { margin-top: .75rem; }
.document-detail-sections { display: grid; gap: 1.5rem; }
.quote-detail-primary { display: grid; grid-template-columns: minmax(19rem, .65fr) minmax(0, 1.35fr); gap: 1.5rem; }
.quote-summary-card, .quote-actions-card, .quote-detail-secondary > .card { min-width: 0; }
.quote-summary-card .card-header, .quote-actions-card .card-header { align-items: flex-start; }
.quote-summary-card .card-header h2, .quote-actions-card .card-header h2 { margin-top: .15rem; }
.quote-summary-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 1.5rem; }
.quote-summary-grid > section + section { padding-left: 1.5rem; border-left: 1px solid var(--line); }
.quote-summary-grid h3 { margin: 0 0 .85rem; font-size: .9rem; }
.quote-summary-grid .detail-list { grid-template-columns: minmax(8.5rem, 1fr) auto; }
.quote-summary-grid .detail-list dd { white-space: nowrap; font-variant-numeric: tabular-nums; }
.quote-summary-grid .totals-panel { width: 100%; }
.quote-actions-card { border-color: #b8d9c2; background: linear-gradient(145deg, var(--paper) 0%, #f2faf4 100%); }
.quote-action-help { margin: 0 0 1rem; color: var(--muted); }
.quote-action-primary form, .quote-action-primary button { width: 100%; }
.quote-action-primary button { min-height: 3.2rem; font-size: 1rem; }
.quote-secondary-actions.with-primary { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.quote-secondary-actions:empty { display: none; }
.quote-detail-secondary { gap: 1.5rem; }
.quote-detail-secondary .document-pdf-status { align-items: stretch; flex-direction: column; }
.quote-detail-secondary .document-pdf-status .button, .quote-detail-secondary .document-pdf-status form button { width: 100%; }
.invoice-detail-primary { display: grid; grid-template-columns: minmax(19rem, .65fr) minmax(0, 1.35fr); gap: 1.5rem; }
.invoice-detail-primary.without-actions { grid-template-columns: 1fr; }
.invoice-summary-card, .invoice-actions-card, .invoice-detail-secondary > .card { min-width: 0; }
.invoice-summary-card .card-header, .invoice-actions-card .card-header { align-items: flex-start; }
.invoice-summary-card .card-header h2, .invoice-actions-card .card-header h2 { margin-top: .15rem; }
.invoice-summary-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 1.5rem; }
.invoice-summary-grid > section + section { padding-left: 1.5rem; border-left: 1px solid var(--line); }
.invoice-summary-grid h3 { margin: 0 0 .85rem; font-size: .9rem; }
.invoice-summary-grid .detail-list { grid-template-columns: minmax(8.5rem, 1fr) auto; }
.invoice-summary-grid .detail-list dd { white-space: nowrap; font-variant-numeric: tabular-nums; }
.invoice-summary-grid .totals-panel { width: 100%; }
.invoice-actions-card { border-color: #b8d9c2; background: linear-gradient(145deg, var(--paper) 0%, #f2faf4 100%); }
.invoice-action-help { margin: 0 0 1rem; color: var(--muted); }
.invoice-action-primary form, .invoice-action-primary button { width: 100%; }
.invoice-action-primary button { min-height: 3.2rem; font-size: 1rem; }
.invoice-secondary-actions.with-primary { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.invoice-secondary-actions:not(.with-primary) > :first-child, .invoice-secondary-actions:not(.with-primary) > :first-child button { width: 100%; }
.invoice-secondary-actions:empty { display: none; }
.invoice-detail-secondary { gap: 1.5rem; }
.invoice-detail-secondary .document-pdf-status { align-items: stretch; flex-direction: column; }
.invoice-detail-secondary .document-pdf-status .button, .invoice-detail-secondary .document-pdf-status form button { width: 100%; }
.dashboard-period-filter { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; }
.dashboard-period-filter label { display: inline-flex; align-items: center; gap: .4rem; color: var(--muted); font-size: .86rem; font-weight: 800; }
.dashboard-period-filter input[type="date"] { width: 10.75rem; }
.dashboard-grid { display: grid; gap: 1rem; grid-template-columns: repeat(12, minmax(0, 1fr)); }
.dashboard-grid > * { grid-column: span 3; }
.dashboard-grid .wide { grid-column: span 8; }
#dashboard-results { margin-top: 1rem; }
.dashboard-grid + .grid { margin-top: 1.5rem; }

.metric { padding: 1.1rem; }
.metric span { color: var(--muted); font-size: .86rem; font-weight: 700; }
.metric strong { display: block; margin-top: .2rem; font-size: 1.7rem; font-variant-numeric: tabular-nums; }
.payment-summary-card { margin-bottom: 1rem; }
.payment-summary-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.payment-summary-grid > div { min-width: 0; padding: 1rem 1.15rem; }
.payment-summary-grid > div + div { border-left: 1px solid var(--line); }
.payment-summary-grid span { display: block; color: var(--muted); font-size: .82rem; font-weight: 750; }
.payment-summary-grid strong { display: block; margin-top: .2rem; font-size: 1.35rem; font-variant-numeric: tabular-nums; }
.payment-summary-grid .remaining strong { color: var(--brand-strong); }

.table-wrap { overflow-x: auto; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table th, .data-table td { padding: .75rem .8rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.data-table th { color: var(--muted); font-size: .8rem; letter-spacing: .035em; text-transform: uppercase; }
.data-table tbody tr:hover { background: #f7f9f4; }
.data-table .number { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.table-sort-button { min-height: auto; justify-content: flex-start; padding: .2rem 0; border: 0; border-radius: .25rem; background: transparent; color: inherit; font-size: inherit; font-weight: inherit; letter-spacing: inherit; line-height: inherit; text-align: inherit; text-transform: inherit; }
.table-sort-button:hover { background: transparent; color: var(--brand-strong); }
.table-sort-button .icon { width: .9rem; height: .9rem; }
.data-table th[aria-sort="ascending"] .table-sort-button, .data-table th[aria-sort="descending"] .table-sort-button { color: var(--brand-strong); }
.data-table th[aria-sort="ascending"] .table-sort-icon, .data-table th[aria-sort="descending"] .table-sort-icon { stroke-width: 3; }
.data-table th.number .table-sort-button { margin-left: auto; }
.schedule-cell { min-width: 10.5rem; }
.schedule-cell .schedule-date, .schedule-cell .schedule-copy { display: grid; justify-items: start; gap: .1rem; }
.schedule-cell .schedule-value { font-variant-numeric: tabular-nums; white-space: nowrap; }
.schedule-cell .deadline { display: flex; align-items: flex-start; gap: .4rem; }
.schedule-cell .deadline .icon { flex: 0 0 auto; margin-top: .1rem; }
.schedule-cell > div + div { margin-top: .55rem; }
.schedule-cell .deadline.warning { color: var(--warning); font-weight: 750; }
.schedule-cell .deadline.danger { color: var(--danger); font-weight: 800; }
.schedule-cell .deadline.warning .hint, .schedule-cell .deadline.danger .hint { color: currentColor; }
.pdf-cell { width: 4rem; text-align: center; }
.pdf-cell .icon-only { margin-inline: auto; }
.pdf-state { display: inline-grid; width: 2rem; height: 2rem; place-items: center; border-radius: 999px; }
.pdf-state.pending { background: var(--info-soft); color: var(--info); }
.pdf-state.failed { background: var(--danger-soft); color: var(--danger); }
.spin { animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.document-pdf-status { display: flex; min-height: 3.2rem; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem; border: 1px solid var(--line); border-radius: .65rem; background: #fafbf7; }
.document-pdf-status-copy { display: flex; min-width: 0; align-items: center; gap: .65rem; font-weight: 750; }
.document-pdf-status-copy .icon { flex: 0 0 auto; }
.document-pdf-status.ready { border-color: #b8d9c2; background: var(--brand-soft); color: var(--brand-strong); }
.document-pdf-status.pending { border-color: #bed6e5; background: var(--info-soft); color: var(--info); }
.document-pdf-status.failed { border-color: #efc0bc; background: var(--danger-soft); color: var(--danger); }
.revision-history { margin-top: 1rem; border-top: 1px solid var(--line); }
.revision-history > summary { padding: .9rem .15rem 0; color: var(--muted); font-weight: 750; cursor: pointer; }
.revision-history[open] > summary { padding-bottom: .7rem; }
.empty { padding: 2.2rem 1rem; color: var(--muted); text-align: center; }
.pre-line { overflow-wrap: anywhere; white-space: pre-line; }

.status { display: inline-flex; align-items: center; gap: .35rem; padding: .24rem .52rem; border-radius: 999px; background: #e9eee8; color: #3f4e44; font-size: .78rem; font-weight: 800; white-space: nowrap; }
.status.success { background: var(--brand-soft); color: var(--brand-strong); }
.status.warning { background: var(--warning-soft); color: var(--warning); }
.status.danger { background: var(--danger-soft); color: var(--danger); }
.status.info { background: var(--info-soft); color: var(--info); }

form { margin: 0; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.field { display: grid; align-content: start; gap: .38rem; }
.field.full { grid-column: 1 / -1; }
.field label, .legend { font-size: .86rem; font-weight: 800; }
.hint { color: var(--muted); font-size: .79rem; }
.search-status { align-self: center; color: var(--muted); font-size: .82rem; }
.htmx-indicator { display: none; }
.htmx-request .htmx-indicator, .htmx-request.htmx-indicator { display: inline-flex; }
.action-context-menu { position: fixed; z-index: 100; min-width: 13rem; padding: .35rem; border: 1px solid var(--line-strong); border-radius: .58rem; background: var(--paper); box-shadow: 0 16px 38px rgb(30 50 36 / 18%); }
.action-context-menu a { display: block; padding: .58rem .7rem; border-radius: .4rem; color: var(--ink); font-weight: 750; text-decoration: none; }
.action-context-menu a:hover, .action-context-menu a:focus-visible { background: var(--brand-soft); color: var(--brand-strong); }
.error { color: var(--danger); font-size: .82rem; font-weight: 700; }
.error-summary { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .75rem; margin: 0 0 1.25rem; padding: 1rem 1.1rem; border: 1px solid #d96d64; border-left: .32rem solid var(--danger); border-radius: .7rem; background: var(--danger-soft); color: #741f1f; box-shadow: 0 8px 22px rgb(160 44 44 / 10%); }
.error-summary:focus { outline: .18rem solid #d96d64; outline-offset: .14rem; }
.error-summary-icon { width: 1.35rem; height: 1.35rem; margin-top: .08rem; color: var(--danger); stroke-width: 2.4; }
.error-summary-copy { min-width: 0; }
.error-summary-copy > strong { display: block; color: var(--danger); font-size: 1rem; }
.error-summary-copy > p { margin: .12rem 0 0; }
.error-summary-copy > ul { margin: .65rem 0 0; padding-left: 1.2rem; }
.error-summary-copy li + li { margin-top: .28rem; }
input, textarea, select { width: 100%; min-height: 2.55rem; padding: .56rem .68rem; border: 1px solid var(--line-strong); border-radius: .5rem; background: white; color: var(--ink); }
textarea { min-height: 6rem; resize: vertical; }
[data-document-editor] textarea[data-document-auto-grow] { max-height: 200px; resize: none; overflow-y: hidden; }
input[aria-invalid="true"], textarea[aria-invalid="true"], select[aria-invalid="true"] { border-color: var(--danger); box-shadow: 0 0 0 .16rem var(--danger-soft); }
fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.check { display: flex; align-items: flex-start; gap: .55rem; }
.check input { width: 1.1rem; min-height: 1.1rem; margin-top: .18rem; }
.client-form { display: grid; gap: 1.5rem; }
.client-form-section { display: grid; min-width: 0; gap: 1rem; padding: 1.15rem; border: 1px solid var(--line); border-radius: .65rem; background: #fbfcf8; }
.client-form-section > h2 { margin: 0; font-size: 1.05rem; }
.client-form-section > legend { padding: 0 .25rem; font-size: 1.05rem; font-weight: 850; }
.optional-address-toggle { font-size: .86rem; font-weight: 800; }
.optional-address-fields { margin-top: 1rem; }
.optional-address:not(:has(.optional-address-toggle input:checked)) .optional-address-fields { display: none; }
.form-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .55rem; margin-top: 1.2rem; }
.settings-card-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .75rem; border-top: 1px solid var(--line); }
.settings-save-feedback { flex: 1 1 18rem; min-width: 0; }
.settings-save-feedback .error-summary { margin: 0; }
.settings-saved { display: inline-flex; align-items: center; gap: .4rem; color: var(--brand-strong); font-weight: 800; }
.settings-logo-layout { display: grid; grid-template-columns: 11rem minmax(0, 1fr); gap: 1.25rem; align-items: start; }
.settings-logo-preview { display: grid; place-items: center; min-height: 11rem; padding: 1rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-soft); }
.settings-logo-preview img { display: block; width: 100%; max-width: 9rem; aspect-ratio: 1; object-fit: contain; }
.settings-logo-placeholder { display: grid; justify-items: center; gap: .5rem; color: var(--muted); }
.settings-logo-placeholder .icon { width: 2rem; height: 2rem; }
.settings-logo-actions { display: grid; gap: 1rem; }
.settings-logo-actions p { margin: 0; }
.settings-logo-upload-form { display: grid; gap: .75rem; }
.settings-logo-file-picker { display: flex; min-width: 0; align-items: center; gap: .65rem; }
.settings-logo-file-name { min-width: 0; overflow: hidden; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; }
.settings-logo-button-row { display: flex; flex-wrap: wrap; align-items: center; gap: .65rem; }
.settings-logo-delete-form { display: inline-flex; }
button.settings-logo-remove { border-color: #dfaaa4; background: var(--paper); color: var(--danger); }
button.settings-logo-remove:hover, button.settings-logo-remove:focus-visible { border-color: var(--danger); background: var(--danger-soft); color: var(--danger); }
@media (max-width: 680px) { .settings-logo-layout { grid-template-columns: 1fr; } .settings-logo-preview { min-height: 9rem; } }

.custom-text-setting { padding: .85rem; border: 1px solid var(--line); border-radius: .65rem; background: #fbfcf8; }
.custom-text-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.field .custom-text-toggle-label { flex: 0 0 auto; color: var(--brand-strong); font-size: .82rem; }
.custom-text-setting textarea:disabled { background: var(--canvas); color: var(--muted); cursor: not-allowed; opacity: 1; }
.client-picker { width: min(100%, 38rem); margin-bottom: 1.25rem; }
.client-picker-search { position: relative; display: grid; gap: .38rem; }
.client-picker-search > label { font-size: .86rem; font-weight: 800; }
.client-picker-search-control { position: relative; }
.client-picker-search-control input { padding-right: 6.5rem; }
.client-picker-search-control .search-status { position: absolute; top: 50%; right: .7rem; padding-left: .45rem; background: white; transform: translateY(-50%); }
.client-picker-selected { display: flex; min-height: 3.25rem; align-items: center; justify-content: space-between; gap: 1rem; padding: .65rem .8rem; border: 1px solid var(--line-strong); border-radius: .65rem; background: var(--paper); }
.client-picker-selected-copy { display: grid; min-width: 0; }
.client-picker-selected-copy span { color: var(--muted); font-size: .76rem; font-weight: 750; }
.client-picker-selected-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
button.client-picker-change { min-height: auto; flex: 0 0 auto; padding: .2rem; border: 0; background: transparent; color: var(--brand-strong); font-size: .84rem; text-decoration: underline; text-underline-offset: .18em; }
button.client-picker-change:hover { background: transparent; color: var(--brand); }
.client-picker-suggestions { position: absolute; z-index: 30; top: calc(100% + .35rem); right: 0; left: 0; max-height: 18rem; overflow-y: auto; border: 1px solid var(--line-strong); border-radius: .65rem; background: white; box-shadow: 0 16px 38px rgb(30 50 36 / 16%); }
button.client-picker-suggestion { width: 100%; min-height: 2.7rem; justify-content: flex-start; gap: .75rem; overflow: hidden; padding: .65rem .8rem; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: white; color: var(--ink); text-align: left; text-overflow: ellipsis; white-space: nowrap; }
button.client-picker-suggestion > span { overflow: hidden; text-overflow: ellipsis; }
button.client-picker-suggestion > small { margin-left: auto; color: var(--muted); font-size: .78rem; font-weight: 600; }
button.client-picker-suggestion:last-child { border-bottom: 0; }
button.client-picker-suggestion:hover, button.client-picker-suggestion:focus-visible { background: var(--brand-soft); color: var(--brand-strong); }
.client-picker-empty { margin: 0; padding: .8rem; color: var(--muted); font-size: .86rem; }

.flash { margin-bottom: 1rem; padding: .82rem 1rem; border: 1px solid #a9d1b5; border-radius: .6rem; background: var(--brand-soft); }
.flash.error { border-color: #efb4ad; background: var(--danger-soft); }
.warning-box { padding: .8rem 1rem; border-left: .25rem solid var(--warning); background: var(--warning-soft); color: #6d420c; }
.created-token { display: inline-block; max-width: 100%; overflow-wrap: anywhere; word-break: break-word; white-space: normal; }
.scope-select-all { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .35rem 1rem; margin: .35rem 0 .8rem; padding: .7rem .8rem; border: 1px solid #b8d9c2; border-radius: .6rem; background: var(--brand-soft); }
.scope-select-all .check { color: var(--brand-strong); font-weight: 850; cursor: pointer; }
.scope-select-all .hint { margin-left: 1.65rem; }

.line-editor { display: grid; gap: .8rem; }
.line-item { display: grid; grid-template-columns: 2rem minmax(14rem, 1fr) 8rem 6rem 9rem 7rem 6rem auto; gap: .55rem; align-items: start; padding: .8rem; border: 1px solid var(--line); border-radius: .65rem; background: #fbfcf8; }
.line-position { display: grid; gap: .2rem; }
.line-position button { width: 2rem; min-height: 1.75rem; padding: 0; }
.line-position span { color: var(--muted); text-align: center; font-variant-numeric: tabular-nums; }
.line-actions { min-width: 8rem; }
.totals-panel { width: min(100%, 25rem); margin-left: auto; }
.totals-panel dl { display: grid; grid-template-columns: 1fr auto; gap: .5rem 1rem; margin: 0; }
.totals-panel dt, .totals-panel dd { margin: 0; }
.totals-panel dd { text-align: right; font-variant-numeric: tabular-nums; }
.totals-panel .total { padding-top: .6rem; border-top: 1px solid var(--line-strong); font-size: 1.2rem; font-weight: 850; }
.document-preview { margin-top: 1rem; }
.document-preview .card-header { align-items: center; }
.document-preview .card-header h2 { margin-bottom: .2rem; }
.document-preview .card-header p { margin: 0; color: var(--muted); font-size: .85rem; }
.document-preview-frame { display: block; width: 100%; height: min(75vh, 60rem); border: 0; border-top: 1px solid var(--line); background: #e9ecef; }
.document-preview-empty { display: grid; min-height: 12rem; place-items: center; color: var(--muted); text-align: center; }
.document-detail-preview { margin-top: 0; overflow: hidden; }
.document-detail-preview .card-header { align-items: flex-start; }
.document-detail-preview .document-preview-frame { overflow: hidden; }
.detail-list { display: grid; grid-template-columns: minmax(9rem, auto) 1fr; gap: .45rem 1rem; margin: 0; }
.detail-list dt { color: var(--muted); font-weight: 750; }
.detail-list dd { margin: 0; }

.timeline { display: grid; gap: .9rem; margin: 0; padding: 0; list-style: none; }
.timeline li { display: grid; grid-template-columns: .8rem 1fr; gap: .65rem; }
.timeline li::before { width: .65rem; height: .65rem; margin-top: .3rem; border-radius: 50%; background: var(--brand); content: ""; }
.timeline time { color: var(--muted); font-size: .8rem; }
.document-follow-up { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: .5rem 1rem; margin-bottom: 1rem; padding: .8rem; border: 1px solid var(--line); border-radius: .65rem; background: var(--canvas); }
.document-follow-up-status { display: grid; gap: .1rem; }
.document-follow-up-status span { color: var(--muted); font-size: .72rem; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.document-follow-up form { display: flex; align-items: end; gap: .45rem; margin: 0; }
.document-follow-up input[type="date"] { min-width: 9.5rem; }
.document-follow-up .field-error { grid-column: 1 / -1; margin: 0; }

@media (max-width: 42rem) {
  .document-follow-up { grid-template-columns: 1fr; align-items: stretch; }
  .document-follow-up form, .document-follow-up input[type="date"], .document-follow-up button { width: 100%; }
}

.mission-page-header { display: block; margin-bottom: 1rem; }
.mission-page-header-main { display: flex; min-width: 0; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.mission-page-header > p { max-width: none; }
.mission-page-header .actions { max-width: 100%; flex: 0 0 auto; flex-wrap: nowrap; overflow-x: auto; }
.mission-page-header .actions .button { flex: 0 0 auto; white-space: nowrap; }
.mission-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.mission-tabs { display: inline-flex; gap: .25rem; padding: .25rem; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); }
.mission-tabs a { padding: .45rem .85rem; border-radius: 999px; color: var(--muted); font-size: .9rem; font-weight: 800; text-decoration: none; }
.mission-tabs a[aria-current="page"] { background: var(--brand-soft); color: var(--brand-strong); }
.mission-filters { display: flex; flex: 1 1 auto; align-items: end; justify-content: flex-end; gap: .65rem; }
.mission-search { position: relative; width: min(26rem, 100%); }
.mission-search .icon { position: absolute; top: 50%; left: .8rem; width: 1rem; transform: translateY(-50%); color: var(--muted); pointer-events: none; }
.mission-search input { width: 100%; padding-left: 2.35rem; }
.mission-sort { display: grid; flex: 0 0 auto; gap: .2rem; }
.mission-sort label { color: var(--muted); font-size: .72rem; font-weight: 800; }
.mission-sort select { min-width: 13.5rem; }
.mission-list { display: grid; gap: .7rem; }
.mission-card { min-width: 0; padding: .9rem 1rem; box-shadow: 0 6px 18px rgba(25, 47, 36, .05); }
.mission-card-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.mission-heading { min-width: 0; flex: 1 1 auto; }
.mission-heading h2 { margin: 0 0 .1rem; font-size: 1.08rem; }
.mission-title-editor { width: 100%; min-width: 0; }
.mission-title-trigger { display: inline-flex; max-width: 100%; align-items: center; gap: .35rem; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; line-height: 1.25; text-align: left; box-shadow: none; }
.mission-title-trigger:hover { color: var(--brand-strong); background: transparent; }
.mission-title-trigger span { overflow: hidden; text-overflow: ellipsis; }
.mission-title-trigger .icon { width: .82rem; height: .82rem; flex: 0 0 auto; opacity: .55; }
.mission-title-form { display: grid; width: 100%; grid-template-columns: minmax(0, 1fr) auto auto; align-items: start; gap: .35rem; margin: 0 0 .2rem; }
.mission-title-form input[name="title_override"] { width: 100%; min-width: 0; height: 2.2rem; padding: .38rem .55rem; }
.mission-title-form .icon-only { width: 2.2rem; min-height: 2.2rem; padding: 0; }
.mission-title-error { grid-column: 1 / -1; }
.mission-client { color: var(--muted); font-size: .86rem; font-weight: 700; }
.mission-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .65rem; color: var(--muted); font-size: .8rem; }
.mission-meta > :not(:first-child)::before { margin-right: .65rem; color: var(--line-strong); content: "•"; }
.mission-billing-setting { position: relative; }
.mission-billing-setting summary { display: inline; cursor: pointer; font-weight: 700; list-style: none; }
.mission-billing-setting summary::-webkit-details-marker { display: none; }
.mission-billing-setting summary:hover { color: var(--brand-strong); }
.mission-billing-setting form { position: absolute; z-index: 20; top: calc(100% + .45rem); left: 0; display: grid; width: min(26rem, calc(100vw - 2rem)); grid-template-columns: minmax(8.5rem, 1fr) minmax(10rem, 1.25fr) auto; align-items: end; gap: .55rem; padding: .7rem; border: 1px solid var(--line); border-radius: .65rem; background: var(--paper); box-shadow: 0 12px 28px rgba(25, 47, 36, .16); color: var(--ink); }
.mission-billing-setting label { display: grid; gap: .2rem; font-size: .72rem; font-weight: 800; }
.mission-billing-setting select, .mission-billing-setting input { width: 100%; min-width: 0; height: 2.25rem; padding: .38rem .5rem; font-size: .82rem; }
.mission-billing-setting button { width: 2.25rem; min-height: 2.25rem; padding: 0; }
.mission-card-summary { display: flex; flex: 0 0 auto; align-items: center; gap: .85rem; }
.mission-total { display: grid; min-width: 7.25rem; justify-items: end; line-height: 1.15; }
.mission-total span { color: var(--muted); font-size: .7rem; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.mission-total strong { font-size: 1.12rem; white-space: nowrap; }
.mission-actions { display: flex; flex: 0 0 auto; align-items: center; gap: .5rem; }
.mission-actions form { margin: 0; }
.mission-expand-toggle { width: 2.2rem; min-height: 2.2rem; flex: 0 0 auto; padding: 0; border-radius: 50%; }
.mission-expand-toggle .icon { transition: transform .18s ease; }
.mission-card.is-expanded .mission-expand-toggle .icon { transform: rotate(180deg); }
.mission-card-footer { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; margin-top: .7rem; padding-top: .65rem; border-top: 1px solid var(--line); }
.mission-steps { display: flex; flex: 0 1 auto; align-items: center; margin: 0; padding: 0; overflow-x: auto; list-style: none; }
.mission-steps li { display: flex; flex: 0 0 auto; align-items: center; gap: .3rem; color: var(--muted); font-size: .76rem; font-weight: 750; white-space: nowrap; }
.mission-steps li:not(:last-child)::after { width: 1.25rem; height: 2px; margin: 0 .4rem; background: var(--line); content: ""; }
.mission-step-content { min-width: 0; }
.mission-step-label { display: block; }
.mission-step-follow-up { display: inline-flex; align-items: center; gap: .2rem; margin-left: .42rem; padding: .12rem .36rem; border-radius: 999px; background: var(--brand-soft); color: var(--brand-strong); font-size: .68rem; font-weight: 750; text-decoration: none; vertical-align: middle; }
.mission-step-follow-up:hover { background: var(--brand); color: white; }
.mission-step-follow-up .icon { width: .72rem; height: .72rem; }
.mission-step-quick-action { display: none; width: 1.35rem; height: 1.35rem; margin-left: .35rem; place-items: center; border-radius: 50%; background: var(--brand); color: white; text-decoration: none; vertical-align: middle; }
.mission-step-quick-action:hover { background: var(--brand-strong); color: white; }
.mission-step-quick-action .icon { width: .78rem; height: .78rem; stroke-width: 2.5; }
.mission-step-details { display: none; }
.mission-step-dot { display: grid; width: 1.2rem; height: 1.2rem; flex: 0 0 auto; place-items: center; border: 2px solid var(--line-strong); border-radius: 50%; background: var(--paper); }
.mission-step-dot .icon { width: .62rem; height: .62rem; }
.mission-steps li.done { color: var(--brand-strong); }
.mission-steps li.done::after { background: var(--brand); }
.mission-steps li.done .mission-step-dot { border-color: var(--brand); background: var(--brand); color: white; }
.mission-steps li.active { color: var(--ink); }
.mission-steps li.active .mission-step-dot { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-soft); color: var(--brand); }
.mission-steps li.skipped .mission-step-dot { border-color: var(--line-strong); background: var(--canvas); color: var(--muted); }
.mission-steps li.failed .mission-step-dot { border-color: var(--danger); background: var(--danger-soft); color: var(--danger); }
.mission-documents { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .35rem; margin-left: auto; }
.mission-documents a { display: inline-flex; align-items: center; gap: .3rem; padding: .28rem .45rem; border-radius: .4rem; background: var(--canvas); color: var(--ink); font-size: .76rem; font-weight: 750; text-decoration: none; }
.mission-documents a:hover { background: var(--brand-soft); color: var(--brand-strong); }
.mission-documents .icon { width: .9rem; height: .9rem; }
.mission-card.is-expanded .mission-card-footer { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: .8rem 1.2rem; }
.mission-card.is-expanded .mission-steps { display: grid; width: 100%; overflow: visible; }
.mission-card.is-expanded .mission-steps li { position: relative; display: grid; min-height: 2.4rem; grid-template-columns: 1.2rem minmax(0, 1fr); align-items: start; gap: .65rem; padding-bottom: .75rem; white-space: normal; }
.mission-card.is-expanded .mission-steps li:not(:last-child)::after { position: absolute; top: 1.2rem; bottom: 0; left: .55rem; width: 2px; height: auto; margin: 0; }
.mission-card.is-expanded .mission-step-label { color: inherit; font-size: .84rem; }
.mission-card.is-expanded .mission-step-quick-action { display: inline-grid; }
.mission-card.is-expanded .mission-step-details { display: flex; flex-wrap: wrap; gap: .2rem .85rem; margin-top: .18rem; color: var(--muted); font-size: .76rem; font-weight: 600; }
.mission-card.is-expanded .mission-step-details time { color: var(--ink); font-weight: 750; }
.mission-card.is-expanded .mission-documents { align-self: start; }
.mission-empty { display: grid; min-height: 19rem; place-items: center; align-content: center; gap: .55rem; padding: 2rem; color: var(--muted); text-align: center; }
.mission-empty > .icon { width: 2.5rem; height: 2.5rem; color: var(--brand); }
.mission-empty h2, .mission-empty p { margin: 0; }

@media (max-width: 760px) {
  .mission-toolbar, .mission-card-head, .mission-filters { align-items: stretch; flex-direction: column; }
  .mission-search { width: 100%; }
  .mission-sort select { width: 100%; }
  .mission-card-summary { justify-content: space-between; }
  .mission-total { min-width: 0; justify-items: start; }
  .mission-title-form { grid-template-columns: 1fr auto auto; }
  .mission-billing-setting form { position: fixed; top: auto; right: 1rem; bottom: 1rem; left: 1rem; width: auto; grid-template-columns: 1fr; }
  .mission-billing-setting button { width: 100%; }
  .mission-actions { align-items: stretch; flex-direction: column; }
  .mission-actions .button, .mission-actions button { width: 100%; }
  .mission-card-footer { align-items: flex-start; flex-direction: column; }
  .mission-steps { width: 100%; padding: .2rem 0 .35rem; }
  .mission-documents { justify-content: flex-start; margin-left: 0; }
  .mission-card.is-expanded .mission-card-footer { grid-template-columns: 1fr; }
}

.login-page { display: grid; min-height: 100vh; place-items: center; padding: 1rem; background: radial-gradient(circle at 15% 15%, #dceee1 0, transparent 36%), var(--canvas); }
.login-card { width: min(100%, 27rem); padding: 1.6rem; }
.login-card h1 { margin: 0 0 .35rem; }
.login-card > p { margin: 0 0 1.3rem; color: var(--muted); }

.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

@media (max-width: 70rem) {
  .dashboard-grid > *, .dashboard-grid .wide { grid-column: span 6; }
}

@media (min-width: 50rem) and (max-width: 90rem) {
  .line-item { grid-template-columns: 2rem minmax(12rem, 1fr) 7rem 6rem 8rem; }
  .line-item .line-position { grid-column: 1; grid-row: 1 / span 4; }
  .line-item .line-group { grid-column: 2 / -1; grid-row: 1; }
  .line-item .line-description { grid-column: 2 / -1; grid-row: 2; }
  .line-item .line-pricing { grid-column: 2; grid-row: 3; }
  .line-item .line-quantity { grid-column: 3; grid-row: 3; }
  .line-item .line-unit { grid-column: 4; grid-row: 3; }
  .line-item .line-amount { grid-column: 5; grid-row: 3; }
  .line-item .line-tax { grid-column: 2 / span 2; grid-row: 4; }
  .line-item .line-actions { grid-column: 4 / -1; grid-row: 4; }
}

@media (max-width: 50rem) {
  .shell { display: block; }
  .sidebar { position: static; width: auto; height: auto; }
  .nav { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .nav a { justify-content: center; padding: .55rem; font-size: .8rem; }
  .nav a .icon { display: none; }
  .sidebar-footer { position: static; margin-top: .7rem; }
  .content { padding-top: 1.25rem; }
  .page-header { flex-direction: column; }
  .mission-page-header-main { flex-direction: column; }
  .mission-page-header .actions { width: 100%; }
  .grid.two, .grid.three, .form-grid { grid-template-columns: 1fr; }
  .payment-summary-grid { grid-template-columns: 1fr; }
  .payment-summary-grid > div + div { border-top: 1px solid var(--line); border-left: 0; }
  .quote-detail-primary, .quote-summary-grid, .invoice-detail-primary, .invoice-summary-grid { grid-template-columns: 1fr; }
  .quote-summary-grid > section + section, .invoice-summary-grid > section + section { padding-top: 1.25rem; padding-left: 0; border-top: 1px solid var(--line); border-left: 0; }
  .field.full { grid-column: auto; }
  .dashboard-period-filter { display: grid; align-items: stretch; }
  .dashboard-period-filter label { display: grid; gap: .35rem; }
  .dashboard-period-filter input[type="date"] { width: 100%; }
  .dashboard-grid > *, .dashboard-grid .wide { grid-column: 1 / -1; }
  .line-item { grid-template-columns: 2rem 1fr; }
  .line-item > * { grid-column: 2; }
  .line-item .line-position { grid-column: 1; grid-row: 1 / span 8; }
  .line-item .line-group, .line-item .line-description, .line-item .line-pricing, .line-item .line-quantity, .line-item .line-unit, .line-item .line-amount, .line-item .line-tax, .line-item .line-actions { grid-column: 2; grid-row: auto; }
}

@media (prefers-reduced-motion: no-preference) {
  button, .button, .nav a { transition: background-color .15s ease, border-color .15s ease, color .15s ease; }
}

/* Document-first quote and invoice editor. */
.document-editor-header { align-items: center; margin-bottom: .75rem; }
.document-editor-title { min-width: 0; flex: 1 1 auto; }
.document-editor-title > div { min-width: 0; }
.document-editor-title h1 { margin-top: 0; white-space: nowrap; }
.document-editor-heading { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem .65rem; }
.document-editor-type { color: var(--muted); font-size: .86rem; font-weight: 750; }
.document-editor-actions { justify-content: flex-end; }
.document-history-actions { display: inline-flex; gap: .3rem; }
.document-save-status { align-self: center; color: var(--muted); font-size: .82rem; font-weight: 700; white-space: nowrap; }
.document-save-status[data-save-tone="dirty"], .document-save-status[data-save-tone="saving"] { color: var(--warning); }
.document-save-status[data-save-tone="saved"] { color: var(--brand-strong); }
.document-save-status[data-save-tone="error"] { color: var(--danger); }
.document-snapshot-banner { display: flex; align-items: center; justify-content: space-between; gap: .85rem 1.25rem; margin-bottom: .75rem; padding: .85rem 1rem; border: 1px solid #dfc489; border-left: .25rem solid var(--warning); border-radius: .65rem; background: var(--warning-soft); color: #6d420c; }
.document-snapshot-banner > div { min-width: 0; }
.document-snapshot-banner strong { display: block; margin-bottom: .15rem; }
.document-snapshot-banner p { margin: 0; font-size: .86rem; }
.document-snapshot-banner button { flex: 0 0 auto; }
.document-snapshot-banner.is-refreshed { border-color: #a9d1b5; border-left-color: var(--brand); background: var(--brand-soft); color: var(--brand-strong); }
.document-editor-shell { min-width: 0; }

@media (min-width: 80rem) {
  .document-editor-actions { flex-wrap: nowrap; gap: .4rem; }
  .document-editor-actions button, .document-editor-actions .button { padding-inline: .8rem; }
}

.document-stage {
  position: relative;
  min-width: 0;
}

.inspector-header .eyebrow { color: var(--muted); font-size: .72rem; font-weight: 850; letter-spacing: .065em; text-transform: uppercase; }
.document-stage #editor-live-output { min-width: 0; }
.document-stage .document-preview { position: relative; margin: 0; }
.document-stage .document-preview-frame { border: 0; background: var(--paper); transform-origin: top left; }

.document-popover {
  position: fixed;
  z-index: 70;
  top: var(--editor-popover-y, 1rem);
  left: var(--editor-popover-x, 1rem);
  display: grid;
  width: min(28rem, calc(100vw - 2rem));
  max-height: var(--editor-popover-max-height, calc(100vh - 2rem));
  min-width: 0;
  grid-template-rows: minmax(0, 1fr);
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: 0 24px 70px rgb(23 33 27 / 24%);
}
.document-popover[hidden] { display: none; }
.document-popover:has([data-editor-panel="lines"]:not([hidden])) { width: min(38rem, calc(100vw - 2rem)); }

.editor-popover-close {
  position: absolute;
  z-index: 2;
  top: .75rem;
  right: .75rem;
  width: 2.5rem;
  height: 2.5rem;
  padding: 0;
}

.inspector-content { min-width: 0; padding: 1rem; }
.editor-panel { min-width: 0; gap: 1rem; }
.editor-panel:not([hidden]) { display: grid; }
.editor-panel-heading { display: flex; min-height: 2.5rem; align-items: flex-start; justify-content: space-between; gap: .75rem; padding-right: 3.25rem; }
.editor-panel-heading h3 { margin: 0; font-size: 1.04rem; }
.editor-panel-heading p { margin: .2rem 0 0; color: var(--muted); font-size: .82rem; }
.document-popover .inspector-content { min-height: 0; max-height: inherit; overflow-y: auto; overscroll-behavior-y: auto; }
.document-popover .client-picker { width: 100%; margin: 0; }
.document-popover .inspector-form-grid { grid-template-columns: 1fr; }
.document-popover .editor-choice-list { display: grid; gap: .7rem; padding: .8rem; border: 1px solid var(--line); border-radius: .6rem; background: var(--canvas); }
.document-popover .editor-options { border: 1px solid var(--line); border-radius: .6rem; background: var(--paper); }
.document-popover .editor-options > summary { padding: .72rem .8rem; color: var(--brand-strong); font-weight: 800; cursor: pointer; }
.document-popover .editor-options[open] > summary { border-bottom: 1px solid var(--line); }
.document-popover .editor-options > :not(summary) { margin: .8rem; }
.input-suffix { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; }
.input-suffix > input { min-width: 0; border-radius: .5rem 0 0 .5rem; }
.input-suffix > span { display: grid; min-width: 2.6rem; place-items: center; border: 1px solid var(--line-strong); border-left: 0; border-radius: 0 .5rem .5rem 0; background: var(--canvas); color: var(--muted); font-weight: 800; }

.document-popover .line-editor { gap: 1rem; }
.document-popover .line-item { min-width: 0; border-color: var(--line-strong); background: var(--paper); }
.document-popover .line-item .field { min-width: 0; }
.document-popover .line-item textarea { min-height: 4.5rem; }
.document-popover .line-actions { min-width: 0; justify-content: flex-end; }

.line-columns {
  width: 100%;
}

.line-columns-options { display: grid; gap: .75rem; }
.line-columns .check { padding: .55rem; border-radius: .45rem; }
.line-columns .check:hover, .line-columns .check:focus-within { background: var(--brand-soft); color: var(--brand-strong); }

.editor-floating-add {
  z-index: 35;
  border-radius: 999px;
  box-shadow: 0 12px 30px rgb(30 50 36 / 22%);
}

.inline-client-dialog {
  width: min(46rem, calc(100% - 2rem));
  max-height: min(90vh, 52rem);
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius);
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 24px 70px rgb(23 33 27 / 24%);
}

.inline-client-dialog::backdrop { background: rgb(23 33 27 / 48%); }
.inline-client-dialog > form { display: flex; max-height: min(90vh, 52rem); flex-direction: column; }
.inline-client-dialog > header, .inline-client-dialog .inline-client-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 1rem 1.2rem; border-bottom: 1px solid var(--line); }
.inline-client-close { width: 2.5rem; height: 2.5rem; flex: 0 0 auto; padding: 0; }
.inline-client-dialog h2 { margin: 0; font-size: 1.2rem; }
.inline-client-dialog header p, .inline-client-dialog .inline-client-header p { margin: .25rem 0 0; color: var(--muted); font-size: .86rem; }
.inline-client-grid { display: grid; min-height: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; padding: 1.1rem 1.2rem; overflow-y: auto; }
.inline-client-grid .field.full { grid-column: 1 / -1; }
.inline-client-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .55rem; padding: .9rem 1.2rem; border-top: 1px solid var(--line); background: var(--paper); }
.inline-client-errors { margin: 1rem 1.2rem 0; padding: .75rem .85rem; border: 1px solid var(--danger); border-radius: .55rem; background: var(--danger-soft); color: var(--danger); font-size: .84rem; font-weight: 700; }
.inline-client-errors:empty { display: none; }
.quote-transition-dialog { width: min(36rem, calc(100% - 2rem)); }
.quote-transition-fields { display: grid; min-height: 0; gap: 1rem; padding: 1.1rem 1.2rem; overflow-y: auto; }
.quote-transition-dialog [data-quote-transition-errors]:not(:empty) { padding: 1rem 1.2rem 0; }
.quote-transition-dialog [data-quote-transition-errors] .error-summary { margin: 0; }
.quote-deposit-dialog { width: min(42rem, calc(100% - 2rem)); }
.quote-deposit-dialog [data-quote-deposit-errors]:not(:empty) { padding: 1rem 1.2rem 0; }
.quote-deposit-dialog [data-quote-deposit-errors] .error-summary { margin: 0; }
.quote-deposit-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-bottom: 1px solid var(--line); background: var(--brand-soft); }
.quote-deposit-summary > div { min-width: 0; padding: .85rem 1.2rem; }
.quote-deposit-summary > div + div { border-left: 1px solid var(--line); }
.quote-deposit-summary span { display: block; color: var(--muted); font-size: .8rem; font-weight: 750; }
.quote-deposit-summary strong { display: block; margin-top: .15rem; color: var(--brand-strong); font-size: 1.25rem; font-variant-numeric: tabular-nums; }
.quote-deposit-accounting-note { display: flex; align-items: flex-start; gap: .6rem; margin: 0; padding: 0 1.2rem 1.1rem; color: var(--muted); font-size: .82rem; }
.quote-deposit-accounting-note .icon { flex: 0 0 auto; color: var(--brand-strong); }
.mission-action-dialog { width: min(38rem, calc(100% - 2rem)); }
.mission-action-dialog > [data-mission-action-dialog-content], .mission-action-panel { display: flex; min-height: 0; max-height: min(90vh, 52rem); flex-direction: column; }
.mission-action-loading { display: flex; min-height: 10rem; align-items: center; justify-content: center; gap: .55rem; color: var(--muted); font-weight: 750; }
.mission-action-loading .icon { width: 1.1rem; height: 1.1rem; }
.mission-action-errors:empty { display: none; }
.mission-action-errors:not(:empty) { padding: 1rem 1.2rem 0; }
.mission-action-errors .error-summary, .mission-action-errors .field-error { margin: 0; }
.mission-action-form { display: flex; min-height: 0; flex: 1; flex-direction: column; }
.mission-action-fields { display: grid; min-height: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; padding: 1.1rem 1.2rem; overflow-y: auto; }
.mission-action-fields .field.full { grid-column: 1 / -1; }
.mission-action-current { display: grid; gap: .1rem; margin: 1rem 1.2rem 0; padding: .75rem .85rem; border: 1px solid var(--line); border-radius: .55rem; background: var(--canvas); }
.mission-action-current span { color: var(--muted); font-size: .72rem; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.mission-payment-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-bottom: 1px solid var(--line); background: var(--brand-soft); }
.mission-payment-summary > div { min-width: 0; padding: .8rem 1rem; }
.mission-payment-summary > div + div { border-left: 1px solid var(--line); }
.mission-payment-summary span, .mission-payment-summary strong { display: block; }
.mission-payment-summary span { color: var(--muted); font-size: .72rem; font-weight: 750; }
.mission-payment-summary strong { margin-top: .12rem; color: var(--brand-strong); font-size: 1rem; font-variant-numeric: tabular-nums; white-space: nowrap; }

@media (min-width: 70.001rem) {
  .shell:has(.document-editor-shell) { grid-template-columns: 13.5rem minmax(0, 1fr); }
  .content:has(.document-editor-shell) { padding-inline: clamp(1rem, 2vw, 2rem); }
  .document-editor-shell { display: block; min-width: 0; }
  .document-popover .client-picker-search-control { anchor-name: --document-client-search; }
  .document-popover .client-picker-suggestions {
    position: fixed;
    z-index: 80;
    position-anchor: --document-client-search;
    top: calc(anchor(bottom) + .35rem);
    right: auto;
    bottom: auto;
    left: anchor(left);
    width: anchor-size(width);
    max-width: calc(100vw - 2rem);
    position-try-fallbacks: flip-block;
  }
  .document-stage { min-height: calc(100vh - 10rem); }
  .document-stage #editor-live-output { overflow-x: auto; padding: 0; }
  .document-stage #editor-totals { display: none; }
  .document-stage .document-preview { width: calc(210mm + 2rem); max-width: none; margin-inline: auto; overflow: hidden; border: 0; background: var(--paper); }
  .document-stage .document-preview > .card-header { display: none; }
  .document-stage .document-preview-frame { width: calc(210mm + 2rem); height: calc(297mm + 2rem); max-width: none; }
  .document-stage .document-preview-empty { width: calc(210mm + 2rem); min-height: calc(297mm + 2rem); }

  .document-popover #line-editor { border: 0; background: transparent; box-shadow: none; }
  .document-popover #line-editor > .card-header { padding: 0 0 .85rem; }
  .document-popover #line-editor > .card-body { padding: 1rem 0 0; }
  .document-popover .line-item { grid-template-columns: 2rem minmax(0, 1fr) minmax(6.25rem, .65fr); }
  .document-popover .line-item .line-position { grid-column: 1; grid-row: 1 / span 6; }
  .document-popover .line-item .line-group { grid-column: 2 / -1; grid-row: 1; }
  .document-popover .line-item .line-description { grid-column: 2 / -1; grid-row: 2; }
  .document-popover .line-item .line-pricing { grid-column: 2; grid-row: 3; }
  .document-popover .line-item .line-quantity { grid-column: 3; grid-row: 3; }
  .document-popover .line-item .line-unit { grid-column: 2; grid-row: 4; }
  .document-popover .line-item .line-amount { grid-column: 3; grid-row: 4; }
  .document-popover .line-item .line-tax { grid-column: 2; grid-row: 5; }
  .document-popover .line-item .line-actions { grid-column: 2 / -1; grid-row: 6; }
  .editor-floating-add { position: fixed; right: 1.25rem; bottom: 1.25rem; }
}

@media (max-width: 70rem) {
  .document-editor-header { align-items: stretch; }
  .document-editor-actions { justify-content: flex-start; }
  .document-save-status { flex: 1 1 100%; }
  .document-snapshot-banner { align-items: flex-start; flex-direction: column; }
  .document-editor-shell { display: block; min-width: 0; }
  .document-stage #editor-live-output { overflow-x: hidden; padding: 0; }
  .document-stage #editor-totals { display: block; margin-bottom: .75rem; }
  .document-stage .totals-panel { margin-left: auto; }
  .document-stage .document-preview { width: 100%; max-width: 100%; }
  .document-stage .document-preview-frame { width: 100%; height: min(68vh, 42rem); }
  .document-stage .document-preview-empty { min-height: 20rem; }

  .document-popover { top: auto; right: .5rem; bottom: .5rem; left: .5rem; width: auto; max-height: min(72vh, 44rem); border-radius: .85rem; }
  .document-popover .inspector-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .editor-floating-add { position: fixed; right: 1rem; bottom: 1rem; }

  .inline-client-grid { grid-template-columns: 1fr; }
  .inline-client-grid .field.full { grid-column: auto; }
}

@media (max-width: 50rem) {
  .document-pdf-status { align-items: stretch; flex-direction: column; }
  .document-pdf-status .button, .document-pdf-status form button { width: 100%; }
  .document-filter-row > select, .compact-date-filter { width: 100%; }
  .compact-date-filter input[type="date"] { width: auto; flex: 1; }
  .document-filter-row .search-status { min-width: 0; }
  .document-popover .inspector-form-grid { grid-template-columns: 1fr; }
  .inline-client-dialog { width: calc(100% - 1rem); max-height: calc(100vh - 1rem); }
  .inline-client-dialog > form { max-height: calc(100vh - 1rem); }
  .inline-client-grid { padding: 1rem; }
  .inline-client-actions { padding: .8rem 1rem; }
  .quote-deposit-summary { grid-template-columns: 1fr; }
  .quote-deposit-summary > div + div { border-top: 1px solid var(--line); border-left: 0; }
  .mission-action-fields { grid-template-columns: 1fr; }
  .mission-payment-summary { grid-template-columns: 1fr; }
  .mission-payment-summary > div + div { border-top: 1px solid var(--line); border-left: 0; }
  .client-notes-card .card-header, .client-note > header { align-items: stretch; flex-direction: column; }
  .client-note-composer > form { position: static; width: 100%; margin-top: .65rem; box-shadow: none; }
  .editor-floating-add span { display: none; }
  .editor-floating-add { width: 3rem; height: 3rem; padding: 0; }
}

@media (forced-colors: active) {
  .editor-hitbox-key { border-color: CanvasText; }
}

/* Compact pricing controls inside the line popover. */
.document-popover .line-item { grid-template-columns: 2rem 7rem 8.5rem 12rem; justify-content: start; }
.document-popover .line-item .line-position { grid-column: 1; grid-row: 1 / span 4; }
.document-popover .line-item .line-description { grid-column: 2 / -1; grid-row: 1; }
.document-popover .line-item .line-pricing { grid-column: 2; grid-row: 2; }
.document-popover .line-item .line-amount { grid-column: 3; grid-row: 2; }
.document-popover .line-item .line-tax { grid-column: 4; grid-row: 2; }
.document-popover .line-item .line-quantity { grid-column: 2; grid-row: 3; }
.document-popover .line-item .line-unit { grid-column: 3; grid-row: 3; }
.document-popover .line-item .line-tax-custom { grid-column: 4; grid-row: 3; }
.document-popover .line-item .line-actions { grid-column: 2 / -1; grid-row: 4; }
.document-popover .line-item:has(.line-group) .line-position { grid-row: 1 / span 5; }
.document-popover .line-item:has(.line-group) .line-group { grid-column: 2 / -1; grid-row: 1; }
.document-popover .line-item:has(.line-group) .line-description { grid-row: 2; }
.document-popover .line-item:has(.line-group) .line-pricing,
.document-popover .line-item:has(.line-group) .line-amount,
.document-popover .line-item:has(.line-group) .line-tax { grid-row: 3; }
.document-popover .line-item:has(.line-group) .line-quantity,
.document-popover .line-item:has(.line-group) .line-unit,
.document-popover .line-item:has(.line-group) .line-tax-custom { grid-row: 4; }
.document-popover .line-item:has(.line-group) .line-actions { grid-row: 5; }
.input-inline-suffix { position: relative; min-width: 0; }
.input-inline-suffix > input { min-width: 0; padding-right: 2rem; }
.input-inline-suffix > span { position: absolute; top: 50%; right: .75rem; color: var(--muted); font-weight: 750; pointer-events: none; transform: translateY(-50%); }

@media (min-width: 70.001rem) {
  .document-popover:has([data-editor-panel="lines"]:not([hidden])) { width: min(36rem, calc(100vw - 2rem)); }
}

@media (max-width: 40rem) {
  .document-popover .line-item { grid-template-columns: 2rem minmax(0, 1fr) minmax(0, 1fr); }
  .document-popover .line-item .line-position { grid-row: 1 / span 6; }
  .document-popover .line-item .line-description { grid-column: 2 / -1; grid-row: 1; }
  .document-popover .line-item .line-pricing { grid-column: 2; grid-row: 2; }
  .document-popover .line-item .line-amount { grid-column: 3; grid-row: 2; }
  .document-popover .line-item .line-tax { grid-column: 2 / -1; grid-row: 3; }
  .document-popover .line-item .line-quantity { grid-column: 2; grid-row: 4; }
  .document-popover .line-item .line-unit { grid-column: 3; grid-row: 4; }
  .document-popover .line-item .line-tax-custom { grid-column: 2 / -1; grid-row: 5; }
  .document-popover .line-item .line-actions { grid-column: 2 / -1; grid-row: 6; }
  .document-popover .line-item:has(.line-group) .line-position { grid-row: 1 / span 7; }
  .document-popover .line-item:has(.line-group) .line-description { grid-row: 2; }
  .document-popover .line-item:has(.line-group) .line-pricing,
  .document-popover .line-item:has(.line-group) .line-amount { grid-row: 3; }
  .document-popover .line-item:has(.line-group) .line-tax { grid-row: 4; }
  .document-popover .line-item:has(.line-group) .line-quantity,
  .document-popover .line-item:has(.line-group) .line-unit { grid-row: 5; }
  .document-popover .line-item:has(.line-group) .line-tax-custom { grid-row: 6; }
  .document-popover .line-item:has(.line-group) .line-actions { grid-row: 7; }
}

/* Inline invoice deposits */
.editor-payment-section {
  display: grid;
  gap: .75rem;
  padding-top: .9rem;
  border-top: 1px solid var(--line);
  outline: none;
}
.editor-payment-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem;
}
.editor-payment-summary > div {
  display: grid;
  gap: .15rem;
  padding: .65rem .75rem;
  border: 1px solid var(--line);
  border-radius: .7rem;
  background: color-mix(in srgb, var(--paper) 82%, var(--brand-soft));
}
.editor-payment-summary span {
  color: var(--muted);
  font-size: .78rem;
}
.editor-payment-summary strong {
  font-size: 1rem;
}
.editor-payment-heading {
  display: flex;
  align-items: center;
  gap: .45rem;
}
button.editor-payment-add-toggle {
  display: inline-grid;
  flex: 0 0 1.65rem;
  place-items: center;
  width: 1.65rem;
  height: 1.65rem;
  min-height: 1.65rem;
  padding: 0;
  border: 1px solid var(--brand-strong);
  border-radius: 50%;
  background: var(--brand);
  color: white;
  box-shadow: none;
}
button.editor-payment-add-toggle:hover,
button.editor-payment-add-toggle:focus-visible {
  background: var(--brand-strong);
  color: white;
}
.editor-payment-add-toggle .icon {
  width: .95rem;
  height: .95rem;
}
.editor-payment-single {
  margin: .05rem 0 0;
  font-size: .9rem;
}
.editor-payment-list {
  display: grid;
  gap: .2rem;
  margin: .1rem 0 0;
  padding-left: 1.1rem;
  font-size: .9rem;
}
.editor-payment-create-card {
  padding: .8rem;
  border: 1px solid var(--line);
  border-radius: .7rem;
  background: color-mix(in srgb, var(--paper) 92%, var(--brand-soft));
}
.editor-payment-create-card .editor-payment-fields {
  padding: 0;
}
.editor-payment-feedback:empty {
  display: none;
}
.editor-payment-entry {
  border: 1px solid var(--line);
  border-radius: .7rem;
  background: var(--paper);
}
.editor-payment-entry > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .7rem .8rem;
  cursor: pointer;
  font-weight: 650;
}
.editor-payment-entry > summary::marker {
  color: var(--muted);
}
.editor-payment-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
  padding: 0 .8rem .8rem;
}
.editor-payment-fields .full {
  grid-column: 1 / -1;
}
.editor-payment-fields textarea {
  min-height: 3.5rem;
}
.editor-payment-actions {
  display: flex;
  justify-content: flex-end;
  gap: .5rem;
}
.editor-payment-actions button {
  min-height: 2.35rem;
}
.editor-deposit-shortcut {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .85rem;
  margin-top: .9rem;
  padding-top: .9rem;
  border-top: 1px solid var(--line);
}
.editor-deposit-shortcut h4,
.editor-deposit-shortcut p {
  margin: 0;
}
.editor-deposit-shortcut p {
  margin-top: .2rem;
  color: var(--muted);
  font-size: .84rem;
  line-height: 1.4;
}
button.editor-text-link {
  flex: 0 0 auto;
  min-height: auto;
  padding: .15rem 0;
  border: 0;
  background: transparent;
  color: var(--brand);
  box-shadow: none;
  white-space: nowrap;
}
button.editor-text-link:hover {
  background: transparent;
  color: var(--brand-strong);
  text-decoration: underline;
}
@media (min-width: 48rem) {
  .document-popover:has([data-editor-panel="payment"]:not([hidden])) {
    width: min(38rem, calc(100vw - 2rem));
  }
}
@media (max-width: 36rem) {
  .editor-payment-fields,
  .editor-payment-summary {
    grid-template-columns: 1fr;
  }
  .editor-deposit-shortcut {
    display: grid;
  }
  .editor-payment-actions {
    flex-wrap: wrap;
  }
}
.impersonation-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
  padding: .75rem 1rem;
  border: 1px solid #d4a72c;
  border-radius: var(--radius);
  background: #fff8df;
  color: #59430a;
}

.impersonation-banner > div {
  display: flex;
  align-items: center;
  gap: .55rem;
}

.admin-users-layout {
  display: grid;
  grid-template-columns: minmax(17rem, 24rem) minmax(0, 1fr);
  gap: 1rem;
  align-items: start;
}

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

.admin-admin-aside {
  display: grid;
  gap: 1rem;
}

.admin-user-rows {
  display: grid;
}

.admin-user-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem;
  border-top: 1px solid var(--line);
}

.admin-user-row:first-child {
  border-top: 0;
}

.admin-user-identity {
  min-width: 0;
}

.admin-user-title,
.admin-user-actions {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
}

.admin-user-title strong {
  overflow-wrap: anywhere;
}

.admin-user-actions {
  justify-content: flex-end;
}

.admin-user-actions details {
  position: relative;
}

.admin-user-actions summary {
  list-style: none;
  cursor: pointer;
}

.admin-user-actions summary::-webkit-details-marker {
  display: none;
}

.admin-password-form {
  position: absolute;
  z-index: 5;
  top: calc(100% + .5rem);
  right: 0;
  width: min(23rem, calc(100vw - 2rem));
  padding: 1rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: var(--shadow);
}

.admin-password-form .field + .field,
.admin-password-form .hint,
.admin-password-form button {
  margin-top: .75rem;
}

@media (max-width: 900px) {
  .admin-users-layout {
    grid-template-columns: 1fr;
  }

  .admin-user-row,
  .impersonation-banner {
    align-items: stretch;
    flex-direction: column;
  }

  .admin-user-actions {
    justify-content: flex-start;
  }

  .admin-password-form {
    left: 0;
    right: auto;
  }
}
