/* Composition facturation : invoicing-bundle */
@layer components {
#stamina-invoicing-invoiceable-lines tr td p:last-child {
	margin-bottom: 0;
}


.stamina-invoicing-lines-group-header {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0; 
	max-width: 420px;
	height: 25px;
}

.stamina-invoicing-line-header {
    background-color: var(--color-surface) !important;
}

/* Le montant qui fait foi : le groupe du champ teinté, sans pastille ni légende. */
.stamina-invoicing-pivot-host:is(.input-group) {
    border-color: color-mix(in srgb, var(--color-accent) 55%, transparent);
    background: color-mix(in srgb, var(--color-accent) 6%, var(--color-surface));
}
.stamina-invoicing-pivot-host:is(.input-group) > .input { background: transparent; }

/* Panneau de ligne : à gauche la carte de l'article (deux tiers), à droite les cartes Achat, Vente, Remise,
   un champ par ligne, libellé à gauche. */
.stamina-invoicing-line-fields { container: line-fields / inline-size; }
.stamina-invoicing-line-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: .875rem; }
@container line-fields (min-width: 54rem) {
    .stamina-invoicing-line-layout { grid-template-columns: minmax(0, 2fr) minmax(21.5rem, 1fr); align-items: stretch; }
}
.stamina-invoicing-line-article { display: flex; flex-direction: column; min-width: 0; }
/* Référence, n° de série et famille comptable sur une ligne ; les commentaires dessous, sur toute la largeur */
.stamina-invoicing-line-ids { display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 1rem; }
@container line-fields (min-width: 40rem) { .stamina-invoicing-line-ids { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.stamina-invoicing-line-article > .form-row:has(.tox, [data-controller~="stamina-ui-rich-text"]) { flex: 1; }
.stamina-invoicing-line-side { display: grid; align-content: start; gap: .875rem; min-width: 0; }
.stamina-invoicing-line-side > .panel-section > .panel-section-title { display: flex; align-items: center; gap: .5rem; }
.stamina-invoicing-line-side > .panel-section > .panel-section-title > i { color: var(--color-accent); font-size: .8125rem; }
.stamina-invoicing-line-side .form-row > .form-row-layout {
    grid-template-columns: 7.75rem minmax(0, 1fr);
    align-items: center;
    gap: .625rem;
    padding-bottom: .625rem;
}
.stamina-invoicing-line-side .form-row > .form-row-layout > .form-row-label > .label { margin: 0; line-height: 1.2; }
.stamina-invoicing-line-side .form-row > .form-row-layout > .form-row-label > .hint { margin-top: .125rem; font-size: .6875rem; line-height: 1.2; }
.stamina-invoicing-line-side .form-row > .form-row-layout > .form-row-control > .segmented { min-height: 2.75rem; align-items: center; }
/* Quantité et unité dans un seul groupe */
/* Ni l'unité (suivie de sa datalist) ni la remise (suivie de l'autre valeur, masquée) ne sont le dernier enfant de leur
   groupe : sans rognage, leur coin carré mordrait sur l'arrondi. */
.stamina-invoicing-line-qty, .stamina-invoicing-line-discount-value { overflow: clip; }
.stamina-invoicing-line-qty > .input:first-child { flex: 0 0 45%; min-width: 0; }
.stamina-invoicing-line-qty > .input + .input { flex: 1; min-width: 0; border-left: 1px solid var(--color-field); }
/* Marge : le % | € dans le champ */
/* Le choix % | € posé dans le champ : une pilule entière. Le socle arrondit le dernier élément d'un groupe au rayon du champ
   (sélecteur :nth-last-child(1 of …), spécificité 0,4,1) : il faut passer au-dessus. */
.stamina-invoicing-line-fields .stamina-invoicing-line-side .input-group > .segmented.stamina-invoicing-line-seg { align-self: center; flex: none; height: auto; margin-inline: .3125rem; border-radius: 999px; }
.stamina-invoicing-line-side .segmented label { white-space: nowrap; }
.stamina-invoicing-line-seg label { height: 1.75rem; padding: 0 .625rem; }
/* Pièce verrouillée : les choix de remise ne se modifient plus non plus */
.stamina-invoicing-line-locked .stamina-invoicing-line-discount .segmented { opacity: .55; pointer-events: none; }
/* Totaux : en grand, sur un fond teinté */
.stamina-invoicing-line-totals { margin: .25rem -.5rem .5rem; padding: .625rem .5rem .0625rem; border-radius: .875rem; background: var(--color-tile); }
.stamina-invoicing-line-totals .label { font-size: .84375rem; color: var(--color-ink); }
.stamina-invoicing-line-totals .input-group { min-height: 3rem; }
.stamina-invoicing-line-totals .input { font-size: 1.125rem; font-weight: 700; letter-spacing: -.01em; }
.stamina-invoicing-line-facts { margin: 0; color: var(--color-muted); font-size: .75rem; line-height: 1.5; font-variant-numeric: tabular-nums; }
.stamina-invoicing-line-facts > span { white-space: nowrap; }
.stamina-invoicing-line-facts b { color: var(--color-ink-2); font-weight: 600; }
.stamina-invoicing-line-facts .is-margin { color: var(--color-success); }
/* Remise : une valeur (% ou €) et son choix dans le même champ, comme la marge */
.stamina-invoicing-line-discount-value > [data-discount-field] { flex: 1; min-width: 0; }
.stamina-invoicing-line-discount-value > [data-discount-field][hidden] { display: none; }
.stamina-invoicing-line-discount.is-on .stamina-invoicing-line-discount-value { border-color: color-mix(in srgb, var(--color-success) 55%, transparent); }
.stamina-invoicing-line-net { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: .125rem .625rem; padding-top: .625rem; border-top: 1px solid var(--color-line); font-variant-numeric: tabular-nums; }
.stamina-invoicing-line-net > span { grid-row: span 2; align-self: center; color: var(--color-ink-2); font-size: .78125rem; font-weight: 600; }
.stamina-invoicing-line-net > b { font-size: .9375rem; font-weight: 700; text-align: right; white-space: nowrap; }
.stamina-invoicing-line-net > b small { margin-left: .25rem; color: var(--color-muted); font-size: .71875rem; font-weight: 600; }


.ui-dialog.drawer .stamina-invoicing-line-fields :is(.input, .textarea):disabled,
.ui-dialog.drawer .stamina-invoicing-line-fields .select:disabled,
.ui-dialog.drawer .stamina-invoicing-line-fields textarea:disabled,
.ui-dialog.drawer .stamina-invoicing-line-fields select:disabled {
    color: var(--color-muted) !important;
    background-color: var(--color-line) !important;
    border-color: var(--color-field) !important;
    cursor: not-allowed;
    opacity: 1;
}


.ui-dialog.drawer .stamina-invoicing-line-fields :is(.input, .textarea):disabled + .addon,
.ui-dialog.drawer .stamina-invoicing-line-fields .select:disabled + .addon {
    color: var(--color-muted) !important;
    background-color: var(--color-line) !important;
    border-color: var(--color-field) !important;
    cursor: not-allowed;
}



.ui-dialog.drawer .stamina-invoicing-line-locked :is(.input, .textarea)[readonly],
.ui-dialog.drawer .stamina-invoicing-line-locked :is(.input, .textarea)[readonly] + .addon {
    color: var(--color-muted) !important;
    background-color: var(--color-line) !important;
    border-color: var(--color-field) !important;
    cursor: not-allowed;
    opacity: 1;
}



.stamina-invoicing-stamp-placer-frame {
    width: 100%;
    height: 60vh;
    min-height: 400px;
    border: 1px solid var(--color-field);
    border-radius: 0.475rem;
}

.stamina-invoicing-stamp-placer-hint {
    color: var(--color-ink-2);
}



body #stamina-invoicing-invoiceable-lines:not(#_) > thead > tr > th {
    padding: 8px 10px 10px !important;
    color: var(--color-muted) !important;
    font-size: var(--text-table-heading) !important;
    font-weight: 600 !important;
    letter-spacing: .05em;
    text-transform: uppercase;
    white-space: nowrap;
    vertical-align: bottom;
}
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr > td {
    padding: 12px 10px !important;
    border-top: 1px dashed var(--color-table-line) !important;
    border-bottom: 0 !important;
    color: var(--color-ink);
    font-size: var(--text-table);
    vertical-align: middle !important;
    transition: background-color .12s;
}
/* Pièce verrouillée : plus rien à saisir ni à déplacer, les lignes se lisent en version resserrée. */
body #stamina-invoicing-invoiceable-lines:not(#_).is-locked > tbody > tr > td { padding-block: 6px !important; }
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr:first-child > td { border-top-color: transparent !important; }
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr.stamina-invoicing-line:hover:not(.is-dragging) > td { background: #faf8ff !important; }
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr.stamina-invoicing-line:hover:not(.is-dragging) > td:first-child { box-shadow: inset 3px 0 0 var(--color-accent) !important; }
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr.is-off > td:not(.stamina-invoicing-line__grip):not(.stamina-invoicing-line__menu) { opacity: .45; }
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr.is-information > td { background: #fbfbfd; }


body #stamina-invoicing-invoiceable-lines:not(#_) > thead > tr > th:nth-child(4) { width: auto; }
body #stamina-invoicing-invoiceable-lines:not(#_) > thead > tr > th:nth-child(n+5) { width: 1%; }


body #stamina-invoicing-invoiceable-lines:not(#_) > :is(thead, tbody, tfoot) > tr > :is(td, th):nth-child(-n+2) {
    width: 30px;
    padding-left: 2px !important;
    padding-right: 2px !important;
    text-align: center;
}
body #stamina-invoicing-invoiceable-lines:not(#_) > :is(thead, tbody) > tr > :is(td, th):nth-child(3) { width: 24px; padding-left: 0 !important; padding-right: 6px !important; }
body #stamina-invoicing-invoiceable-lines:not(#_) :is(thead, tbody, tfoot) .form-check { display: flex; justify-content: center; padding: 0; min-height: 0; margin: 0; }
body #stamina-invoicing-invoiceable-lines:not(#_) :is(thead, tbody, tfoot) .form-check-input { margin: 0; float: none; }

body #stamina-invoicing-invoiceable-lines:not(#_) .form-check-input { width: 18px; height: 18px; border-radius: 6px; }
/* Case à cocher et pastille de famille : même carré, plus petit que le gabarit des tables, pour ne pas peser à la lecture. */
body #stamina-invoicing-invoiceable-lines:not(#_) { --size-checkbox: 1rem; }
body #stamina-invoicing-invoiceable-lines:not(#_) :is(thead, tbody) input[type=checkbox]:not(.switch, .hidden) { display: block; margin: 0 auto; border-radius: 4px; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__family { width: 24px; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__swatch { display: block; width: var(--size-checkbox); height: var(--size-checkbox); margin: 0 auto; border-radius: 4px; /* même gabarit que la case à cocher voisine */ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .06); }

body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__grip { padding: 0 !important; cursor: grab; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__grip > .fa-grip-dots-vertical { color: #d0cde0; font-size: 13px; transition: color .12s; }
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr:hover .stamina-invoicing-line__grip > .fa-grip-dots-vertical { color: var(--color-accent); }


/* Désignation en entier, comme sur le PDF et sur :8020 (pas de hauteur limitée) ; texte des tables du socle. */
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__designation {
    color: inherit;
    line-height: 1.5;
}
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__designation :is(p, div, ul, ol, h1, h2, h3, h4, h5, h6, table) { margin: 0 !important; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__designation :is(h1, h2, h3, h4, h5, h6) { font-size: inherit; font-weight: 700; line-height: inherit; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__designation :is(ul, ol) { padding-left: 1.15em; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__designation ul { list-style: disc; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__designation ol { list-style: decimal; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__designation img { max-height: 2.8em; width: auto; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__serial { margin-top: 3px; color: var(--color-ink); font-size: 12px; font-weight: 600; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__ref { display: inline-block; margin-bottom: 3px; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__ref {
    margin-right: 4px;
    padding: 1px 6px;
    border-radius: 6px;
    background: #f4efff;
    color: #6f42e0;
    font-family: ui-monospace, Menlo, monospace;
    font-size: 10.5px;
}


body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__num { white-space: nowrap; font-variant-numeric: tabular-nums; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__muted { color: #a1a5b7 !important; white-space: nowrap; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__total { color: var(--color-ink) !important; font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
body #stamina-invoicing-invoiceable-lines:not(#_) :is(.stamina-invoicing-line__num, .stamina-invoicing-line__total) .text-decoration-line-through { color: #a1a5b7; font-size: 11.5px; font-weight: 500; }


body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__divider { padding-top: 6px !important; padding-bottom: 6px !important; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__divider > span { display: flex; align-items: center; gap: 10px; color: #a1a5b7; font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__divider > span::after { content: ""; flex: 1; border-top: 2px dotted #e4e6ef; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__subtotal { color: #6f42e0 !important; font-weight: 700; white-space: nowrap; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__deduction { font-style: italic; }


body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__menu {
    width: 1%;
    padding: 0 14px 0 4px !important;
    text-align: right;
    white-space: nowrap;
}
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody .stamina-invoicing-line__menu > div { display: flex; align-items: center; justify-content: flex-end; gap: 4px; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__menu .btn {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    padding: 0;
    border-radius: 10px !important;
    background: transparent !important;
    color: #5e6278 !important;
    opacity: .55;
    transition: opacity .12s, background-color .12s, color .12s;
}
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__menu [data-stamina-ui-dropdown-target="trigger"] { background: var(--color-tile, #f7f6fa) !important; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__menu .btn :is(span, i) { color: inherit !important; font-size: 12px; }
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr:hover .stamina-invoicing-line__menu .btn { opacity: 1; }

body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__menu .btn:has(> .fa-history) { background: transparent !important; opacity: 0; }
body #stamina-invoicing-invoiceable-lines:not(#_) > tbody > tr:hover .stamina-invoicing-line__menu .btn:has(> .fa-history) { opacity: .8; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__menu .show > .btn:has(> .fa-history),
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__menu .btn.show:has(> .fa-history) { opacity: 1; }
body #stamina-invoicing-invoiceable-lines:not(#_) .stamina-invoicing-line__menu .btn:hover { background: #eadfff !important; color: #6f42e0 !important; }


.stamina-invoicing-cycle {
    --cycle-step-w: 150px;
    --cycle-dot: 9px;
    --cycle-line: color-mix(in srgb, var(--color-accent) 28%, #fff);
    --cycle-dot-done: color-mix(in srgb, var(--color-accent) 45%, #fff);
}
.stamina-invoicing-cycle__body {
    display: flex;
    align-items: center;
    gap: 14px 24px;
    padding: 14px 18px 14px 22px;
}
.stamina-invoicing-cycle__icon {
    flex-shrink: 0;
    color: var(--color-accent);
    font-size: 17px;
    align-self: center;
}
.stamina-invoicing-cycle__steps {
    display: flex;
    flex: 1 1 auto;
    min-width: 0;
    
    margin: -3px 0 -3px -3px;
    padding: 3px 0 5px 3px;
    list-style: none;
    overflow-x: auto;
    scrollbar-width: thin;
}
.stamina-invoicing-cycle__step {
    position: relative;
    display: flex;
    flex-direction: column;
    
    flex: 1 1 var(--cycle-step-w);
    min-width: 100px;
    max-width: var(--cycle-step-w);
    padding-top: calc(var(--cycle-dot) + 9px);
    line-height: 1.3;
}

.stamina-invoicing-cycle__step:last-child { flex: 0 0 auto; min-width: 0; max-width: none; }
.stamina-invoicing-cycle__step:last-child .stamina-invoicing-cycle__ref { padding-right: 0; }

.stamina-invoicing-cycle__step:not(:last-child)::after {
    content: "";
    position: absolute;
    top: calc(var(--cycle-dot) / 2 - 1px);
    left: calc(var(--cycle-dot) / 2);
    right: 0;
    height: 2px;
    border-radius: 1px;
    background: var(--cycle-line);
}
.stamina-invoicing-cycle__dot {
    position: absolute;
    z-index: 1;
    top: 0;
    left: 0;
    width: var(--cycle-dot);
    height: var(--cycle-dot);
    border-radius: 50%;
    background: var(--cycle-dot-done);
}
.stamina-invoicing-cycle__step.is-current .stamina-invoicing-cycle__dot {
    top: -1px;
    left: -1px;
    width: calc(var(--cycle-dot) + 2px);
    height: calc(var(--cycle-dot) + 2px);
    background: var(--color-surface, #fff);
    box-shadow: inset 0 0 0 2px var(--color-accent);
}
.stamina-invoicing-cycle__step.is-ghost .stamina-invoicing-cycle__dot {
    background: var(--color-surface, #fff);
    box-shadow: inset 0 0 0 1.5px var(--color-muted-2, #b7b6bd);
}
.stamina-invoicing-cycle__ref {
    overflow: hidden;
    padding-right: 12px;
    color: var(--color-ink-2, #3c3b42);
    font-size: 12.5px;
    font-weight: 500;
    text-overflow: ellipsis;
    white-space: nowrap;
}
a.stamina-invoicing-cycle__ref:hover { color: var(--color-ink, #16151a); text-decoration: underline; }
.stamina-invoicing-cycle__amount {
    color: var(--color-muted, #8b8a93);
    font-size: 11.5px;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.stamina-invoicing-cycle__step.is-current .stamina-invoicing-cycle__ref { color: var(--color-accent); font-weight: 700; }
.stamina-invoicing-cycle__step.is-current .stamina-invoicing-cycle__amount { color: color-mix(in srgb, var(--color-accent) 70%, #fff); }
.stamina-invoicing-cycle__step.is-ghost :is(.stamina-invoicing-cycle__ref, .stamina-invoicing-cycle__amount) { color: var(--color-muted-2, #b7b6bd); }
.stamina-invoicing-cycle__step.is-credit .stamina-invoicing-cycle__amount { color: var(--color-danger, #e5484d); }


.stamina-invoicing-cycle__gauges {
    display: flex;
    flex-shrink: 0;
    gap: 28px;
    margin-left: auto;
}
.stamina-invoicing-cycle__gauge { flex: 0 0 auto; min-width: 240px; }
.stamina-invoicing-cycle__gauge-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 7px;
    white-space: nowrap;
}
.stamina-invoicing-cycle__gauge-label {
    color: var(--color-muted, #8b8a93);
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.stamina-invoicing-cycle__gauge-value {
    display: inline-flex;
    align-items: baseline;
    gap: 5px;
    font-variant-numeric: tabular-nums;
}
.stamina-invoicing-cycle__gauge-value strong { color: var(--color-ink-2, #3c3b42); font-size: 13px; font-weight: 600; }
.stamina-invoicing-cycle__gauge-value small { color: var(--color-muted-2, #b7b6bd); font-size: 11px; }
.stamina-invoicing-cycle__gauge-value small.is-remaining { color: var(--color-danger, #e5484d); font-weight: 600; }
.stamina-invoicing-cycle__gauge-value small.is-settled { color: var(--color-success); font-weight: 600; }
.stamina-invoicing-cycle__gauge-value em { margin-left: 3px; color: var(--color-accent); font-size: 11px; font-style: normal; font-weight: 700; }
.stamina-invoicing-cycle__gauge-value .fa-circle-check { font-size: 12px; }
.stamina-invoicing-cycle__bar {
    height: 5px;
    overflow: hidden;
    border-radius: 3px;
    background: var(--color-field-hover, #ebe9f1);
}
.stamina-invoicing-cycle__bar > span { display: block; height: 100%; border-radius: 3px; }
.stamina-invoicing-cycle__bar > .is-invoiced { background: var(--color-accent); }
.stamina-invoicing-cycle__bar > .is-paid { background: var(--color-success); }

.stamina-invoicing-cycle__actions {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    gap: 8px;
}
@media (max-width: 1199.98px) {
    .stamina-invoicing-cycle__body { flex-wrap: wrap; }
    .stamina-invoicing-cycle__gauges { order: 3; width: 100%; margin-left: 0; }
    .stamina-invoicing-cycle__gauge { flex: 1 1 0; min-width: 0; }
}


body .stamina-content .stamina-invoicing-lines-toolbar .btn.btn-secondary:not(#_) {
    background-color: var(--color-surface, #fff) !important;
    border: 1px solid var(--color-field-hover, #ebe9f1) !important;
    color: var(--color-ink, #16151a) !important;
}
body .stamina-content .stamina-invoicing-lines-toolbar .btn.btn-secondary:not(#_):hover {
    background-color: var(--color-tile, #f7f6fa) !important;
    border-color: var(--color-field-hover, #cdcad6) !important;
}


.stamina-invoicing-summary {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 16px 32px;
    padding: 16px 20px 20px;
    border-top: 1px solid #eff0f4;
}
.stamina-invoicing-summary__rows {
    display: flex;
    flex-direction: column;
    gap: 7px;
    width: min(100%, 340px);
    margin-left: auto;
}


.stamina-invoicing-repartition { flex: 1 1 240px; max-width: 360px; min-width: 0; }
.stamina-invoicing-repartition__title {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
    color: var(--color-muted, #8b8a93);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.stamina-invoicing-repartition__title .fal { cursor: help; letter-spacing: 0; text-transform: none; }
.stamina-invoicing-repartition__bar {
    display: flex;
    gap: 2px;
    height: 6px;
    overflow: hidden;
    border-radius: 3px;
    background: var(--color-field-hover, #ebe9f1);
}
.stamina-invoicing-repartition__bar > span { min-width: 3px; }
.stamina-invoicing-repartition__legend { display: flex; flex-direction: column; gap: 4px; margin: 10px 0 0; padding: 0; list-style: none; }
.stamina-invoicing-repartition__legend > li { display: flex; align-items: center; gap: 8px; color: var(--color-ink-2, #3c3b42); font-size: 12.5px; }
.stamina-invoicing-repartition__dot { flex: none; width: 8px; height: 8px; border-radius: 50%; }
.stamina-invoicing-repartition__name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stamina-invoicing-repartition__value { flex: none; color: var(--color-muted, #8b8a93); font-variant-numeric: tabular-nums; white-space: nowrap; }
.stamina-invoicing-summary__row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    color: #5e6278;
    font-size: 13px;
}
.stamina-invoicing-summary__row > span:last-child { white-space: nowrap; }
.stamina-invoicing-summary__row small { color: #a1a5b7; font-size: 11.5px; }
.stamina-invoicing-summary__row.is-strong > span:last-child { color: var(--color-night, #1d1531); font-weight: 600; }
.stamina-invoicing-summary__row.is-margin { color: #1a9a5b; font-size: 12px; }
.stamina-invoicing-summary__row.is-margin .fad { margin-right: 4px; }
.stamina-invoicing-summary__grand {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-top: 4px;
    padding-top: 10px;
    border-top: 1px solid #eff0f4;
}
.stamina-invoicing-summary__grand > span { color: var(--color-night, #1d1531); font-size: 13px; font-weight: 600; }
.stamina-invoicing-summary__grand > strong {
    
    color: var(--color-night, #1d1531);
    font-size: 20px;
    font-weight: 700;
}

.stamina-invoicing-summary :is(.stamina-invoicing-summary__row > span:last-child, .stamina-invoicing-summary__grand > strong) { word-spacing: .08em; letter-spacing: .005em; }
.stamina-invoicing-summary__row.is-remaining { margin-top: 0; }
.stamina-invoicing-summary__row.is-remaining > span { color: var(--color-danger, #e5484d); font-weight: 700; }
.stamina-invoicing-summary__row.is-settled { color: #1a9a5b; font-weight: 600; }
.stamina-invoicing-summary__row.is-settled .fad { margin-right: 4px; }


body .stamina-content .btn.stamina-invoicing-email-send:not(#_) {
    
    
    
    white-space: nowrap;
}




.stamina-invoicing-cycle__tag {
    margin-left: 4px;
    padding: 0 6px;
    border-radius: 999px;
    background: var(--color-accent-soft, #efe9fd);
    color: var(--color-accent, #5b2bc4);
    font-size: 10.5px;
    font-weight: 600;
}
.stamina-invoicing-cycle__tag.is-deposit { background: color-mix(in srgb, var(--color-warning) 18%, transparent); color: color-mix(in srgb, var(--color-warning) 55%, #000); }
.stamina-invoicing-cycle__tag.is-final { background: color-mix(in srgb, var(--color-success) 14%, transparent); color: var(--color-success); }
[data-theme="dark"] .stamina-invoicing-cycle__tag { background: color-mix(in srgb, var(--color-accent) 26%, transparent); color: var(--color-ink, #fff); }
[data-theme="dark"] .stamina-invoicing-cycle__tag.is-deposit { color: var(--color-warning); }

/* Heatmap de saisonnalité (cockpit) : une tuile par mois, séparées par un fin blanc, montants sur une ligne.
   La table se resserre à sa largeur utile ; trop étroite, elle défile dans son .table-scroll. */
.table--heatmap {
    border-collapse: separate;
    border-spacing: 2px;
    font-variant-numeric: tabular-nums;
    th, td { border: 0; white-space: nowrap; }
    > thead > tr > th { padding-block: 0 .375rem; text-align: center; }
    > tbody > tr > * { height: 2.5rem; padding-block: 0; border-radius: .375rem; }
    > tbody > tr > td { padding-inline: .3125rem; color: var(--color-ink-2); }
    > :is(thead, tbody) > tr > :first-child { padding-left: 0; text-align: left; }
    > :is(thead, tbody) > tr > :last-child { padding-right: .75rem; text-align: right; }
}
}

/* Méthodes de paiement soudées en un groupe (comme .btn-group) sans enveloppe : le débordement
   (stamina-ui-overflow-menu) exige des enfants directs. Coins arrondis aux extrémités visibles seulement. */
.stamina-invoicing-payment-methods {
    gap: 0;
    > .btn { border-radius: 0; margin-inline-start: -1px; }
    > .btn:is(:hover, :focus-visible) { z-index: 1; }
    > .btn:first-child { margin-inline-start: 0; border-start-start-radius: var(--radius-pill); border-end-start-radius: var(--radius-pill); }
    > .btn:not(:has(~ .btn:not(.hidden))):has(~ .stamina-invoicing-payment-methods__more.hidden) { border-start-end-radius: var(--radius-pill); border-end-end-radius: var(--radius-pill); }
    /* « … » masqué tant que rien ne déborde (son inline-block l'emportait sur .hidden). */
    > .stamina-invoicing-payment-methods__more.hidden { display: none; }
    > .stamina-invoicing-payment-methods__more > .btn { margin-inline-start: -1px; border-radius: 0 var(--radius-pill) var(--radius-pill) 0; }
    > :last-child { margin-inline-start: calc(var(--spacing) * 2); }
}

/* Activation de la facturation électronique (ElectronicInvoicing/_activation) : bannière drapeau en
   soie sous un panneau de verre (badge, titre, bouton), puis corps : explication et avantages, frise
   des étapes. */
@layer components {
    .einvoice-card { overflow: hidden; border: 1px solid #E8E8EC; border-radius: 1.5rem; background: #fff; }

    .einvoice-banner {
        /* En étroit, le haut reste dégagé pour que le drapeau se voie au-dessus du panneau. */
        position: relative; isolation: isolate; display: flex; align-items: flex-end; min-height: 280px; padding: 88px 12px 12px; background: #F4F4F8;
        > svg { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; }
        @media (width >= 40rem) { min-height: 320px; padding: 28px; }
    }
    .einvoice-glass {
        position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 14px; width: 100%; max-width: 560px; padding: 20px;
        border: 1px solid rgb(255 255 255 / .6); border-radius: 20px; background: rgb(255 255 255 / .55);
        box-shadow: 0 24px 60px -24px rgb(10 10 11 / .4);
        -webkit-backdrop-filter: blur(20px) saturate(1.4); backdrop-filter: blur(20px) saturate(1.4);
        @media (width >= 40rem) { padding: 28px; }
    }
    .einvoice-badge { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding-inline: 10px; border-radius: 999px; background: rgb(10 10 11 / .06); color: #3A3A42; font-size: 12px; font-weight: 500; white-space: nowrap; }
    .einvoice-title {
        margin: 0; color: #0A0A0B; font-size: 28px; font-weight: 600; line-height: 1.06; letter-spacing: -.04em; text-wrap: balance;
        @media (width >= 40rem) { font-size: 36px; }
    }
    .einvoice-cta {
        display: inline-flex; align-items: center; gap: 8px; height: 48px; padding-inline: 22px; border: 0; border-radius: 999px;
        background: #0A0A0B; color: #fff; font-size: 15px; font-weight: 500; text-decoration: none; cursor: pointer;
        transition: transform .2s, background-color .2s;
        /* En étroit, le libellé passe sur deux lignes : bouton pleine largeur, hauteur libre. */
        @media (width < 40rem) { align-self: stretch; justify-content: center; height: auto; min-height: 48px; padding-block: 10px; line-height: 1.25; text-align: center; }
        &:hover { transform: translateY(-1px); background: #26262B; color: #fff; }
        &:focus-visible { outline: 2px solid #0A0A0B; outline-offset: 2px; }
        &:disabled { transform: none; background: #0A0A0B; cursor: not-allowed; opacity: .5; }
    }
    .einvoice-note { margin: 0; color: #3A3A42; font-size: 13px; }

    /* Corps pleine largeur : introduction (paragraphe | avantages) puis « Comment ça marche » sous un filet,
       en frise horizontale ; tout s'empile en étroit, la frise redevenant verticale. */
    .einvoice-body {
        display: flex; flex-direction: column; gap: 32px; padding: 28px 20px 32px;
        @media (width >= 48rem) { gap: 40px; padding: 44px 48px 48px; }
    }
    .einvoice-intro {
        display: grid; gap: 28px;
        @media (width >= 64rem) { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 56px; }
    }
    .einvoice-lead { max-width: 62ch; margin: 0; color: #3A3A42; font-size: 16px; line-height: 1.7; }
    .einvoice-perks {
        display: flex; flex-direction: column; gap: 14px; margin: 0; padding: 0; list-style: none;
        > li { display: flex; align-items: flex-start; gap: 12px; }
        > li > span:last-child { padding-top: 5px; color: #0A0A0B; font-size: 15px; line-height: 1.5; }
    }
    .einvoice-perk-icon { display: inline-flex; flex: none; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 10px; background: #F1F1F8; color: #000091; font-size: 16px; }

    .einvoice-how {
        display: flex; flex-direction: column; gap: 20px; padding-top: 32px; border-top: 1px solid #EDEDF1;
        @media (width >= 48rem) { gap: 24px; padding-top: 40px; }
    }
    .einvoice-steps-title { margin: 0; color: #6B6B76; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
    .einvoice-steps {
        margin: 0; padding: 0; list-style: none;
        @media (width >= 48rem) { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
    }
    .einvoice-step {
        display: flex; gap: 14px;
        @media (width >= 48rem) { flex-direction: column; }
    }
    /* Trait qui relie la pastille à la suivante (vertical en étroit, horizontal en large, jusqu'à la colonne
       voisine à travers l'espacement) ; aucun après la dernière étape. */
    .einvoice-step-rail {
        display: flex; flex: none; flex-direction: column; align-items: center;
        .einvoice-step:not(:last-child) > &::after { content: ""; flex: 1; width: 1px; margin-block: 4px; background: #E2E2E8; }
        @media (width >= 48rem) {
            flex-direction: row;
            .einvoice-step:not(:last-child) > &::after { width: auto; height: 1px; margin: 0 -20px 0 12px; }
        }
    }
    .einvoice-step-dot {
        display: inline-flex; flex: none; align-items: center; justify-content: center; width: 28px; height: 28px; border: 1px solid #D4D4DC; border-radius: 999px;
        background: #fff; color: #0A0A0B; font-size: 13px; font-weight: 600;
        &.is-first { border-color: #0A0A0B; background: #0A0A0B; color: #fff; }
    }
    .einvoice-step-copy {
        min-width: 0; padding: 3px 0 22px;
        .einvoice-step:last-child > & { padding-bottom: 0; }
        @media (width >= 48rem) { max-width: 36ch; padding: 0; }
    }
    .einvoice-step-title { display: block; color: #0A0A0B; font-size: 15px; font-weight: 600; line-height: 1.4; }
    .einvoice-step-text { margin: 4px 0 0; color: #4A4A55; font-size: 14px; line-height: 1.55; }
}

/* Carte « Client » (Invoiceable/edit.customer) : la bascule Facturation | Livraison reste sur la ligne du
   titre tant que la carte a la place ; sinon elle passe seule sur sa ligne, en deux moitiés égales, au lieu
   d'être calée à droite. Le titre ne réserve pas les 12rem de .disclosure-title, qui forçaient le retour à
   la ligne dans une colonne de ~360px. */
@layer components {
    .invoiceable-customer-card > .card-head {
        container: invoiceable-customer-head / inline-size;
        > .card-title { flex: 1 1 0; }
    }
    @container invoiceable-customer-head (width < 18rem) {
        .invoiceable-customer-card > .card-head {
            > .card-title { flex-basis: 100%; }
            > .card-tools { flex: 1 1 100%; }
            .tabs.tabs-pills { flex: 1 1 0; width: auto; }
            .tabs.tabs-pills > li { flex: 1 1 0; }
            .tabs.tabs-pills .tab { width: 100%; justify-content: center; }
        }
    }
}

/* Créer une facture d'acompte / partielle (InvoiceableFlow/create_deposit.offcanvas) — maquette propositions/acompte-2026-10-20 (v2).
   La commande en schéma : déjà facturé = fait (vert), cette facture = ce qu'on crée (violet), reste = à venir (pointillé, vide). */
.stamina-invoicing-deposit-schema, .stamina-invoicing-deposit-recap { --deposit-done: var(--color-success); --deposit-now: var(--color-accent); }
:is(.stamina-invoicing-deposit-schema, .stamina-invoicing-deposit-recap, .stamina-invoicing-deposit-amount-card) > .panel-section-title,
.ui-dialog form:has(.stamina-invoicing-deposit-schema) .panel-section > .panel-section-title { display: flex; align-items: center; gap: .5rem; }
.ui-dialog form:has(.stamina-invoicing-deposit-schema) .panel-section > .panel-section-title > i { color: var(--color-accent); font-size: .8125rem; }
.stamina-invoicing-deposit-schema > .panel-section-title > small { margin-left: auto; color: var(--color-muted); font-size: .78125rem; font-weight: 500; font-variant-numeric: tabular-nums; }
.stamina-invoicing-deposit-cols { display: grid; grid-template-columns: minmax(6.75rem, 30fr) minmax(6.75rem, 70fr); gap: .25rem; }
.stamina-invoicing-deposit-part { display: grid; align-content: start; gap: .0625rem; min-width: 0; }
.stamina-invoicing-deposit-part[hidden] { display: none; }
.stamina-invoicing-deposit-seg { display: grid; place-items: center; height: 1.625rem; margin-bottom: .5rem; border-radius: .5rem; color: #fff; font-size: .6875rem; }
.is-done > .stamina-invoicing-deposit-seg { background: var(--deposit-done); }
.is-now > .stamina-invoicing-deposit-seg { background: var(--deposit-now); box-shadow: 0 0 0 3px color-mix(in srgb, var(--deposit-now) 18%, transparent); }
.is-rest > .stamina-invoicing-deposit-seg { border: 1.5px dashed var(--color-field-hover, var(--color-field)); color: var(--color-muted); }
.stamina-invoicing-deposit-part > small { color: var(--color-muted); font-size: .75rem; font-weight: 500; white-space: nowrap; }
.stamina-invoicing-deposit-part.is-done > small { color: var(--deposit-done); }
.stamina-invoicing-deposit-part.is-now > small { color: var(--deposit-now); font-weight: 600; }
.stamina-invoicing-deposit-part > b { font-size: .9375rem; font-weight: 700; letter-spacing: -.01em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.stamina-invoicing-deposit-part.is-rest > b { color: var(--color-ink-2); font-weight: 600; }
.stamina-invoicing-deposit-part > em { color: var(--color-muted); font-size: .78125rem; font-style: normal; font-weight: 600; font-variant-numeric: tabular-nums; }
/* Le montant à facturer : un grand champ, le choix % | € dedans */
.stamina-invoicing-deposit-amount { min-height: 4rem; overflow: clip; }
.stamina-invoicing-deposit-amount > .input { flex: 1; min-width: 0; padding-left: 1rem; font-size: 1.625rem; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.stamina-invoicing-deposit-amount > .input.hidden { display: none; }
.ui-dialog .stamina-invoicing-deposit-amount > .segmented.stamina-invoicing-deposit-mode { align-self: center; flex: none; height: auto; margin-inline: .375rem; border-radius: 999px; }
.stamina-invoicing-deposit-mode label { height: 1.875rem; padding: 0 .75rem; }
.stamina-invoicing-deposit-presets { display: flex; flex-wrap: wrap; gap: .375rem; margin-top: .75rem; }
.stamina-invoicing-deposit-preset { height: 1.875rem; padding: 0 .75rem; border: 1px solid var(--color-field); border-radius: 999px; background: var(--color-surface); color: var(--color-ink-2); font-size: .78125rem; font-weight: 600; font-variant-numeric: tabular-nums; cursor: pointer; }
.stamina-invoicing-deposit-preset:hover { color: var(--color-ink); border-color: var(--color-field-hover, var(--color-field)); }
.stamina-invoicing-deposit-preset[aria-pressed="true"] { border-color: var(--color-accent); background: color-mix(in srgb, var(--color-accent) 10%, var(--color-surface)); color: var(--color-ink); }
/* Ce qui sera facturé : en grand */
.stamina-invoicing-deposit-total { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; padding-bottom: .875rem; border-bottom: 1px solid var(--color-line); }
.stamina-invoicing-deposit-total > span { color: var(--color-ink-2); font-size: .875rem; font-weight: 600; }
.stamina-invoicing-deposit-total > b { font-size: 2rem; font-weight: 700; line-height: 1.1; letter-spacing: -.02em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.stamina-invoicing-deposit-figures { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; padding-top: .875rem; }
.stamina-invoicing-deposit-figures > div { display: grid; gap: .125rem; min-width: 0; }
.stamina-invoicing-deposit-figures > div > span { color: var(--color-muted); font-size: .78125rem; font-weight: 500; white-space: nowrap; }
.stamina-invoicing-deposit-figures b { font-size: 1.125rem; font-weight: 700; letter-spacing: -.01em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.stamina-invoicing-deposit-vat { width: 100%; margin-top: .875rem; border-collapse: collapse; font-size: .78125rem; font-variant-numeric: tabular-nums; }
.stamina-invoicing-deposit-vat th { padding: 0 0 .3125rem; color: var(--color-muted); font-weight: 500; text-align: right; }
.stamina-invoicing-deposit-vat td { padding: .375rem 0; border-top: 1px solid var(--color-line); text-align: right; }
.stamina-invoicing-deposit-vat :is(th, td):first-child { text-align: left; }
/* Répartition du prix d'achat : une ligne, un interrupteur */
.stamina-invoicing-deposit-margin-row { display: flex; align-items: center; gap: .75rem; cursor: pointer; }
.stamina-invoicing-deposit-margin-row > span { flex: 1; min-width: 0; display: grid; gap: .125rem; }
.stamina-invoicing-deposit-margin-row strong { font-size: .84375rem; font-weight: 600; }
.stamina-invoicing-deposit-margin-row small { color: var(--color-muted); font-size: .78125rem; font-variant-numeric: tabular-nums; }
.stamina-invoicing-deposit-margin-row small.hidden { display: none; }
.stamina-invoicing-deposit-margin-row small b { color: var(--color-success); font-weight: 600; }
/* Pied sombre, comme la barre d'enregistrement ; le bouton porte le montant */
.ui-dialog .dialog-foot.stamina-invoicing-deposit-foot { background: var(--color-savebar); box-shadow: 0 .75rem 2rem -.75rem rgb(30 21 53 / .6); }
.stamina-invoicing-deposit-create { gap: .5rem; height: 2.5rem; padding: 0 1.25rem; border: 0; border-radius: 1.25rem; background: var(--gradient-save); color: #fff; font-size: .84375rem; font-weight: 600; box-shadow: 0 .375rem 1rem -.375rem rgb(117 86 204 / .55); }
.stamina-invoicing-deposit-create:hover { background: var(--gradient-save); color: #fff; filter: brightness(1.08); }
.stamina-invoicing-deposit-create > i { font-size: .75rem; }
.stamina-invoicing-deposit-amount > .input { -moz-appearance: textfield; }
.stamina-invoicing-deposit-amount > .input::-webkit-outer-spin-button, .stamina-invoicing-deposit-amount > .input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Aperçu d'une pièce, sans carte : la feuille dans le flux de la page (coins arrondis, ombre, hauteur réelle), et
   Imprimer / Télécharger dans une pilule sombre collée en bas de l'écran tant que la feuille est visible. */
.stamina-invoicing-sheet { position: relative; }
/* Largeur imposée : avec une hauteur posée, aspect-ratio recalculerait sinon la largeur depuis la hauteur. */
.stamina-invoicing-sheet__stage { width: 100%; aspect-ratio: 1 / 1.414; overflow: hidden; border-radius: var(--radius-card); background: #fff; box-shadow: 0 1px 2px rgb(30 21 53 / .06), 0 14px 36px -14px rgb(30 21 53 / .28); }
.stamina-invoicing-sheet__stage > iframe { display: block; }
/* La pilule a sa hauteur et remonte sur la feuille (marge négative) : collée en bas, elle ne sort jamais de la feuille. */
.stamina-invoicing-sheet__tools { position: sticky; bottom: 24px; z-index: 3; display: flex; justify-content: center; height: 46px; margin-top: -70px; pointer-events: none; }
.stamina-invoicing-sheet__tools > div { display: inline-flex; align-items: center; gap: 2px; height: 46px; padding: 4px; border-radius: var(--radius-pill); background: var(--color-savebar); box-shadow: 0 .75rem 2rem -.5rem rgb(30 21 53 / .55); opacity: 0; translate: 0 12px; transition: opacity .2s, translate .2s; }
.stamina-invoicing-sheet__tools.is-shown > div { opacity: 1; translate: 0; pointer-events: auto; }
@media (prefers-reduced-motion: reduce) { .stamina-invoicing-sheet__tools > div { transition: none; } }
.stamina-invoicing-sheet__tools > div > :is(a, span) { display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 16px; border-radius: var(--radius-pill); color: #fff; font-size: 13px; font-weight: 600; white-space: nowrap; }
.stamina-invoicing-sheet__tools > div > :is(a, span):hover { background: rgb(255 255 255 / .1); color: #fff; }
.stamina-invoicing-sheet__tools > div > :is(a, span) + :is(a, span) { position: relative; }
.stamina-invoicing-sheet__tools > div > a + :is(a, span)::before { content: ""; position: absolute; inset-inline-start: -2px; width: 1px; height: 18px; background: rgb(255 255 255 / .16); }
.stamina-invoicing-sheet__tools > div > .is-icon { width: 38px; justify-content: center; padding: 0; color: rgb(255 255 255 / .7); cursor: help; }
