/* =====================================================================
   Documents A4 (factures, devis, contrats, bulletins, rapports)
   Même rendu à l'écran (aperçu) et à l'impression / export PDF.
   Couleurs pilotées par le modèle : --p (primaire), --s (secondaire),
   --t (texte), --m (gris), --a (accent/crème), --soft, --soft2.
   ===================================================================== */
.doc-page {
  --p: #FD7E01; --s: #00746D; --t: #575859; --m: #8A8B8D; --a: #FFE494; --soft: #FFF6DA; --soft2: #E3F1EF; --strong: #3A3B3C;
  width: 210mm; min-height: 297mm; background: #fff; position: relative; overflow: hidden; box-sizing: border-box;
  padding: 15mm 20mm 27mm; font-family: var(--doc-font, 'Poppins'), 'Segoe UI', sans-serif; font-size: 9.3pt; line-height: 1.52;
  color: var(--t); text-align: left;
  -webkit-print-color-adjust: exact; print-color-adjust: exact; /* fonds de couleur des mises en page conservés à l'impression */
}
.doc-page * { box-sizing: border-box; }
.doc-page p { margin: 0 0 2.2mm; }
.d-band { position: absolute; left: 0; right: 0; background: linear-gradient(90deg, var(--p) 0 55%, var(--a) 55% 67%, var(--s) 67% 100%); }
.d-band.top { top: 0; height: 3.6mm; }
.d-band.bottom { bottom: 0; height: 3mm; }
.d-watermark { position: absolute; right: -14mm; bottom: 6mm; width: 95mm; pointer-events: none; z-index: 0; }
.d-watermark.faded { opacity: .06; }
.doc-page > *:not(.d-band):not(.d-watermark):not(.d-foot):not(.d-stamp):not(.d-draft) { position: relative; z-index: 1; }

/* En-tête : logo à gauche, bloc d'identité officiel aligné à droite */
.d-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10mm; }
.d-head.logo-droite { flex-direction: row-reverse; }
.d-head.logo-droite .d-identity { text-align: left; }
.d-head.logo-centre { flex-direction: column; align-items: center; gap: 3mm; }
.d-head.logo-centre .d-identity { text-align: center; }
.d-logo img { display: block; width: var(--logo-w, 64mm); max-height: 32mm; object-fit: contain; object-position: left center; }
.d-head.logo-droite .d-logo img { object-position: right center; }
.d-head.logo-centre .d-logo img { object-position: center; }
.d-logo .d-logo-text { font-size: 16pt; font-weight: 700; color: var(--strong); }
.d-identity { text-align: right; font-size: 7.5pt; font-weight: 500; line-height: 1.6; white-space: pre-line; color: var(--t); }
.d-identity b { font-weight: 700; font-size: 8.4pt; color: var(--strong); }
.d-rule { position: relative; border-top: .8pt solid var(--a); margin: 5mm 0 6.5mm; }
.d-rule::before { content: ""; position: absolute; left: 0; top: -.8pt; width: 14mm; border-top: .8pt solid var(--p); }

/* Titre et références */
.d-title-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 8mm; margin-bottom: 6mm; }
.d-kicker { display: flex; align-items: center; gap: 3mm; color: var(--p); font-weight: 500; font-size: 9pt; letter-spacing: .3pt; }
.d-kicker::before { content: ""; width: 12mm; border-top: 1.2pt solid var(--p); }
.d-title { font-size: 25pt; font-weight: 700; color: var(--s); line-height: 1.05; margin-top: 2mm; letter-spacing: -.2pt; }
.d-subject { font-size: 9.5pt; color: var(--strong); margin-top: 1.5mm; font-weight: 500; }
.d-tiles { display: flex; gap: 3mm; }
.d-tile { border: 1px solid #E6E6E6; border-top: 1.6mm solid var(--p); padding: 1.8mm 3.2mm 2.2mm; min-width: 29mm; background: #fff; }
.d-tile:nth-child(2) { border-top-color: var(--s); }
.d-tile:nth-child(3) { border-top-color: var(--a); }
.d-tile .tl { font-size: 6.4pt; text-transform: uppercase; letter-spacing: .8pt; color: var(--m); font-weight: 600; }
.d-tile .tv { font-size: 9.6pt; font-weight: 700; color: var(--strong); white-space: nowrap; }

/* Parties */
.d-parties { display: grid; grid-template-columns: 55% 1fr; gap: 4mm; margin-bottom: 6mm; }
.d-party { background: var(--soft); border-left: 3pt solid var(--p); padding: 3mm 4mm; font-size: 8.6pt; line-height: 1.5; }
.d-party.to { background: var(--soft2); border-left-color: var(--s); }
.d-party .pl { font-size: 6.6pt; font-weight: 600; letter-spacing: 1pt; color: var(--p); text-transform: uppercase; margin-bottom: .8mm; }
.d-party.to .pl { color: var(--s); }
.d-party .pn { font-weight: 700; font-size: 11pt; color: var(--strong); line-height: 1.3; }

/* Lignes */
.d-lines { width: 100%; border-collapse: collapse; font-size: 8.8pt; }
.d-lines th { text-align: left; font-size: 6.9pt; text-transform: uppercase; letter-spacing: .6pt; color: var(--s); font-weight: 700; padding: 2.2mm 2mm; border-bottom: 1.1pt solid var(--s); white-space: nowrap; }
.d-lines td { padding: 2.3mm 2mm; border-bottom: .5pt solid #ECECEC; vertical-align: top; color: var(--strong); }
.d-lines tbody tr:nth-child(even) td { background: #FCFCFA; }
.d-lines .n { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.d-lines .desc { width: 100%; }
.d-lines .desc small { display: block; color: var(--m); font-size: 7.6pt; }

/* Totaux */
.d-summary { display: flex; justify-content: space-between; gap: 8mm; margin-top: 5mm; align-items: flex-start; }
.d-summary .d-left { flex: 1; font-size: 8.4pt; }
.d-totals { width: 74mm; font-size: 9pt; flex: none; }
.d-totals .r { display: flex; justify-content: space-between; padding: 1.1mm 3mm; }
.d-totals .r span:last-child { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--strong); }
.d-totals .grand { background: var(--p); color: #fff; font-weight: 700; font-size: 11pt; padding: 2.6mm 3mm; margin-top: 1.5mm; }
.d-totals .grand span:last-child { color: #fff; }
.d-totals .due { border: 1pt solid var(--s); color: var(--s); margin-top: 1.5mm; font-weight: 700; }
.d-totals .due span:last-child { color: var(--s); }

/* Sections (titre à carré numéroté, comme la charte) */
.d-sec { display: flex; align-items: center; gap: 3mm; margin: 7mm 0 3mm; padding-bottom: 1.8mm; border-bottom: .8pt solid var(--a); break-after: avoid; }
.d-sq { width: 6.5mm; height: 6.5mm; background: var(--p); color: #fff; font-weight: 700; font-size: 7.8pt; display: grid; place-items: center; flex: none; }
.d-st { font-weight: 700; font-size: 9.8pt; color: var(--s); text-transform: uppercase; letter-spacing: .3pt; }
.d-pay { background: var(--soft2); border-left: 3pt solid var(--s); padding: 3mm 4mm; display: grid; grid-template-columns: repeat(3, auto); gap: 2mm 8mm; break-inside: avoid; justify-content: start; }
.d-pay .pi { display: flex; flex-direction: column; }
.d-pay .pl { font-size: 6.5pt; font-weight: 500; color: var(--s); text-transform: uppercase; letter-spacing: .6pt; }
.d-pay .pv { font-weight: 700; font-size: 9.3pt; color: var(--strong); }
.d-pay .free { grid-column: 1 / -1; white-space: pre-line; font-weight: 500; color: var(--strong); }
.d-terms { font-size: 8.5pt; margin-top: 3mm; color: var(--strong); }
.d-terms b { color: var(--s); }
.d-notes { font-size: 8.4pt; margin-top: 3mm; white-space: pre-line; }
.d-legal { font-size: 6.9pt; color: var(--m); margin-top: 4mm; white-space: pre-line; line-height: 1.5; }
.d-sign { margin-top: 7mm; display: flex; justify-content: flex-end; break-inside: avoid; }
.d-sign .box { width: 64mm; text-align: center; font-size: 7.8pt; color: var(--m); }
.d-sign .space { height: 20mm; border-bottom: .6pt solid #cfcfcf; margin-bottom: 1.5mm; }

/* Cachet et signature de l'entreprise (factures payées, contrats) : la signature passe sur le cachet, comme sur un original. */
.d-signed { position: relative; height: 24mm; border-bottom: .6pt solid #cfcfcf; margin-bottom: 1.5mm; }
.d-signed img { position: absolute; top: 50%; left: 50%; object-fit: contain; mix-blend-mode: multiply; }
.d-signed .seal { width: 30mm; height: 27mm; transform: translate(-72%, -50%) rotate(-9deg); opacity: .92; }
.d-signed .sig { width: 44mm; height: 19mm; transform: translate(-36%, -42%); }
.d-signed img:only-child { transform: translate(-50%, -50%); }
.d-signer { display: flex; flex-direction: column; line-height: 1.35; margin-bottom: 1mm; color: var(--strong); font-size: 8pt; }
.d-signer b { font-weight: 700; }
.d-signer span { color: var(--m); font-size: 7.3pt; }
.d-signatures { margin-top: 6mm; break-inside: avoid; }
.d-signatures .d-sec { margin-top: 0; }
.d-signatures .d-done { background: var(--soft); border-left: 3pt solid var(--p); padding: 2.4mm 4mm; font-size: 8.8pt; color: var(--strong); margin-bottom: 5mm; }
.d-signatures .cols { display: grid; grid-template-columns: 1fr 1fr; gap: 10mm; }
.d-signatures .who { background: var(--p); color: #fff; font-size: 6.8pt; font-weight: 700; letter-spacing: 1pt; text-transform: uppercase; padding: 1.2mm 3mm; }
.d-signatures .other .who { background: var(--s); }
.d-signatures .name { font-weight: 700; font-size: 10pt; color: var(--strong); margin: 2mm 0 .5mm; }
.d-signatures .mention { font-size: 7.8pt; color: var(--m); font-style: italic; }
.d-signatures .d-signed { height: 30mm; }
.d-signatures .lbl { font-size: 7.3pt; color: var(--m); text-align: center; }

/* Pied de page officiel (3 lignes) + numéro de page */
.d-foot { position: absolute; left: 20mm; right: 20mm; bottom: 7.5mm; display: flex; justify-content: space-between; align-items: flex-end; gap: 6mm; font-size: 6.3pt; color: var(--m); line-height: 1.55; z-index: 1; }
.d-foot .l1 { font-weight: 500; font-size: 6.8pt; color: var(--t); }
.d-foot .pg { font-weight: 700; font-size: 7.5pt; color: var(--s); white-space: nowrap; }
.d-foot .free { white-space: pre-line; }

/* Tampons */
.d-stamp { position: absolute; top: 64mm; right: 24mm; transform: rotate(-11deg); border: 2.6pt solid var(--s); color: var(--s); font-weight: 800; font-size: 19pt; padding: .8mm 5mm; border-radius: 2.5mm; opacity: .78; letter-spacing: 2pt; z-index: 2; background: rgba(255, 255, 255, .6); }
.d-stamp.cancelled { border-color: #B35900; color: #B35900; }
.d-draft { position: absolute; inset: 0; display: grid; place-items: center; font-size: 78pt; font-weight: 800; color: rgba(58, 59, 60, .05); transform: rotate(-28deg); pointer-events: none; z-index: 0; letter-spacing: 6pt; }

/* ---------------- Variante « classique » */
.layout-classique .d-band { display: none; }
.layout-classique .d-head { padding-bottom: 4mm; border-bottom: 2pt solid var(--p); }
.layout-classique .d-rule { display: none; }
.layout-classique .d-title-row { margin-top: 6mm; }
.layout-classique .d-title { color: var(--p); }
.layout-classique .d-kicker { color: var(--s); }
.layout-classique .d-kicker::before { border-color: var(--s); }
.layout-classique .d-tile { border-top-color: var(--p) !important; }
.layout-classique .d-party, .layout-classique .d-party.to { background: #F7F7F5; border-left-color: var(--p); }
.layout-classique .d-party .pl, .layout-classique .d-party.to .pl { color: var(--p); }
.layout-classique .d-lines th { background: var(--p); color: #fff; border: 0; }
.layout-classique .d-sq { background: var(--s); }
.layout-classique .d-st { color: var(--p); }
.layout-classique .d-pay { background: #F7F7F5; border-left-color: var(--p); }
.layout-classique .d-pay .pl { color: var(--p); }
.layout-classique .d-foot { justify-content: center; text-align: center; }
.layout-classique .d-foot .pg { position: absolute; right: 0; bottom: 0; }

/* ---------------- Variante « minimal » */
.layout-minimal .d-band, .layout-minimal .d-rule::before { display: none; }
.layout-minimal .d-rule { border-color: #E6E6E6; }
.layout-minimal .d-title { color: var(--strong); font-weight: 600; font-size: 22pt; }
.layout-minimal .d-kicker { color: var(--m); }
.layout-minimal .d-kicker::before { border-color: var(--m); }
.layout-minimal .d-tile { border: 0; border-left: 1.2pt solid var(--s); border-top: 0 !important; padding: .5mm 3mm; }
.layout-minimal .d-party, .layout-minimal .d-party.to { background: none; border-left: 1.2pt solid #E0E0E0; }
.layout-minimal .d-party .pl, .layout-minimal .d-party.to .pl { color: var(--m); }
.layout-minimal .d-lines th { color: var(--m); border-bottom: .8pt solid var(--strong); }
.layout-minimal .d-lines tbody tr:nth-child(even) td { background: none; }
.layout-minimal .d-totals .grand { background: none; color: var(--strong); border-top: 1.5pt solid var(--strong); }
.layout-minimal .d-totals .grand span:last-child { color: var(--strong); }
.layout-minimal .d-sq { display: none; }
.layout-minimal .d-st { color: var(--strong); }
.layout-minimal .d-sec { border-bottom-color: #E6E6E6; }
.layout-minimal .d-pay { background: none; border-left: 1.2pt solid var(--s); }

/* ---------------- Variante « moderne » : en-tête pleine largeur teinté, grand titre, blocs arrondis */
.layout-moderne .d-band, .layout-moderne .d-rule { display: none; }
.layout-moderne .d-head { margin: -15mm -20mm 0; padding: 11mm 20mm 8mm; background: var(--soft); border-bottom: 1.6mm solid var(--p); }
.layout-moderne .d-title-row { margin-top: 8mm; }
.layout-moderne .d-title { font-size: 30pt; font-weight: 800; color: var(--p); }
.layout-moderne .d-kicker { color: var(--s); }
.layout-moderne .d-kicker::before { border-color: var(--s); }
.layout-moderne .d-tile { border: 0; border-top: 0 !important; border-radius: 2mm; background: var(--soft2); }
.layout-moderne .d-party, .layout-moderne .d-party.to { border-left: 0; border-radius: 2mm; }
.layout-moderne .d-lines th { background: var(--s); color: #fff; border: 0; }
.layout-moderne .d-lines th:first-child { border-radius: 1.5mm 0 0 1.5mm; }
.layout-moderne .d-lines th:last-child { border-radius: 0 1.5mm 1.5mm 0; }
.layout-moderne .d-totals .grand { background: var(--s); border-radius: 1.5mm; }
.layout-moderne .d-sq { border-radius: 50%; }
.layout-moderne .d-pay { border-left: 0; border-radius: 2mm; }

/* ---------------- Variante « élégant » : composition centrée, filets fins, titres espacés */
.layout-elegant .d-band, .layout-elegant .d-rule::before, .layout-elegant .d-kicker::before, .layout-elegant .d-sq { display: none; }
.layout-elegant .d-head { flex-direction: column; align-items: center; gap: 3mm; }
.layout-elegant .d-identity { text-align: center; }
.layout-elegant .d-logo img { object-position: center; }
.layout-elegant .d-rule { border-top: .5pt solid var(--p); border-bottom: .5pt solid var(--p); height: 1.2mm; margin: 5mm 0 7mm; }
.layout-elegant .d-title-row { flex-direction: column; align-items: center; text-align: center; gap: 4mm; }
.layout-elegant .d-kicker { justify-content: center; color: var(--m); letter-spacing: 1.5pt; text-transform: uppercase; font-size: 7.5pt; }
.layout-elegant .d-title { color: var(--p); font-weight: 400; letter-spacing: 6pt; text-transform: uppercase; font-size: 24pt; }
.layout-elegant .d-tile { border: 0; border-top: 0 !important; border-left: .5pt solid #D9D9D9; text-align: center; background: none; }
.layout-elegant .d-tile:first-child { border-left: 0; }
.layout-elegant .d-party, .layout-elegant .d-party.to { background: none; border-left: 0; border-top: .5pt solid var(--p); padding: 3mm 0 0; }
.layout-elegant .d-party .pl, .layout-elegant .d-party.to .pl { color: var(--p); letter-spacing: 2pt; }
.layout-elegant .d-lines th { color: var(--p); border-top: .5pt solid var(--p); border-bottom: .5pt solid var(--p); letter-spacing: 1.5pt; font-weight: 600; }
.layout-elegant .d-lines tbody tr:nth-child(even) td { background: none; }
.layout-elegant .d-totals .grand { background: none; color: var(--p); border-top: .5pt solid var(--p); border-bottom: .5pt solid var(--p); }
.layout-elegant .d-totals .grand span:last-child { color: var(--p); }
.layout-elegant .d-sec { justify-content: center; border-bottom-color: var(--p); }
.layout-elegant .d-st { color: var(--p); letter-spacing: 2pt; }
.layout-elegant .d-pay { background: none; border-left: 0; border-top: .5pt solid #DDD; justify-content: center; }
.layout-elegant .d-foot { justify-content: center; text-align: center; }
.layout-elegant .d-foot .pg { position: absolute; right: 0; bottom: 0; }

/* ---------------- Variante « corporate » : bandeau d'en-tête plein dans la couleur secondaire */
.layout-corporate .d-band { display: none; }
.layout-corporate .d-head { margin: -15mm -20mm 0; padding: 9mm 20mm; background: var(--s); }
.layout-corporate .d-identity, .layout-corporate .d-identity b, .layout-corporate .d-logo .d-logo-text { color: #fff; }
.layout-corporate .d-logo img { background: #fff; padding: 2mm 3mm; border-radius: 1.5mm; }
.layout-corporate .d-rule { border-top: 1.4mm solid var(--p); margin: 0 -20mm 7mm; }
.layout-corporate .d-rule::before { display: none; }
.layout-corporate .d-title { color: var(--s); text-transform: uppercase; font-size: 22pt; }
.layout-corporate .d-tile { background: #F7F7F5; border-color: transparent; border-top-color: var(--s) !important; }
.layout-corporate .d-party, .layout-corporate .d-party.to { background: #F7F7F5; border-left-color: var(--s); }
.layout-corporate .d-party .pl, .layout-corporate .d-party.to .pl { color: var(--s); }
.layout-corporate .d-lines th { background: var(--s); color: #fff; border: 0; }
.layout-corporate .d-totals .grand, .layout-corporate .d-sq { background: var(--s); }
.layout-corporate .d-foot { border-top: .6pt solid #DDD; padding-top: 2mm; }

/* ---------------- Variante « bandeau latéral » : colonne de couleur sur toute la hauteur, à gauche */
.layout-lateral { padding-left: 30mm; background: linear-gradient(90deg, var(--p) 0 9mm, var(--a) 9mm 10.5mm, #fff 10.5mm); }
.layout-lateral .d-band { display: none; }
.layout-lateral .d-foot { left: 30mm; }
.layout-lateral .d-title { color: var(--p); }
.layout-lateral .d-rule::before { border-color: var(--s); }
.layout-lateral .d-lines th { color: var(--p); border-bottom-color: var(--p); }
.layout-lateral .d-party { background: var(--soft2); border-left-color: var(--s); }
.layout-lateral .d-party .pl { color: var(--s); }
.layout-lateral .d-party.to { background: var(--soft); border-left-color: var(--p); }
.layout-lateral .d-party.to .pl { color: var(--p); }

/* ---------------- Variante « compact » : marges et police réduites, pour tenir sur une page */
.layout-compact { padding: 11mm 14mm 22mm; font-size: 8.4pt; line-height: 1.4; }
.layout-compact .d-band.top, .layout-compact .d-band.bottom { height: 2mm; }
.layout-compact .d-rule { margin: 3mm 0 4mm; }
.layout-compact .d-title { font-size: 18pt; }
.layout-compact .d-title-row { margin-bottom: 4mm; }
.layout-compact .d-tile { min-width: 24mm; padding: 1.2mm 2.4mm; }
.layout-compact .d-parties { grid-template-columns: 1fr 1fr; margin-bottom: 4mm; }
.layout-compact .d-party { padding: 2mm 3mm; font-size: 8pt; }
.layout-compact .d-party .pn { font-size: 9.5pt; }
.layout-compact .d-lines { font-size: 8pt; }
.layout-compact .d-lines th, .layout-compact .d-lines td { padding: 1.4mm 1.6mm; }
.layout-compact .d-totals { width: 64mm; font-size: 8.4pt; }
.layout-compact .d-sec { margin: 4mm 0 2mm; }
.layout-compact .d-sign { margin-top: 4mm; }
.layout-compact .d-sign .space { height: 14mm; }
.layout-compact .d-foot { left: 14mm; right: 14mm; bottom: 5mm; }

/* ---------------- Variante « géométrique » : triangles de couleur dans les coins, formes biseautées */
.layout-geometrique .d-band { display: none; }
.layout-geometrique::before, .layout-geometrique::after { content: ""; position: absolute; z-index: 0; pointer-events: none; }
.layout-geometrique::before { top: 0; right: 0; width: 48mm; height: 34mm; background: linear-gradient(225deg, var(--p) 0 34%, var(--a) 34% 39%, transparent 39%); }
.layout-geometrique::after { bottom: 0; left: 0; width: 34mm; height: 24mm; background: linear-gradient(45deg, var(--s) 0 30%, transparent 30%); }
.layout-geometrique .d-head { margin-right: 14mm; }
.layout-geometrique .d-title { color: var(--p); }
.layout-geometrique .d-tile { border: 0; border-top: 0 !important; background: var(--soft); clip-path: polygon(0 0, 100% 0, 92% 100%, 0 100%); padding-right: 5mm; }
.layout-geometrique .d-lines th { border-bottom: 2pt solid var(--p); color: var(--p); }
.layout-geometrique .d-totals .grand { clip-path: polygon(4mm 0, 100% 0, 100% 100%, 0 100%); padding-left: 6mm; }
.layout-geometrique .d-sq { clip-path: polygon(0 0, 100% 0, 100% 100%); }

/* ---------------- Variante « encadré » : page bordée, blocs à bords arrondis */
.layout-encadre { padding: 16mm 22mm 28mm; }
.layout-encadre .d-band, .layout-encadre .d-rule::before { display: none; }
.layout-encadre::before { content: ""; position: absolute; inset: 7mm; border: 1.2pt solid var(--p); border-radius: 3mm; pointer-events: none; z-index: 0; }
.layout-encadre .d-rule { border-top: 1pt dotted var(--p); }
.layout-encadre .d-tile { border: 1pt solid var(--p); border-top: 1pt solid var(--p) !important; border-radius: 2mm; }
.layout-encadre .d-party, .layout-encadre .d-party.to { background: #fff; border: 1pt solid #E2E2E2; border-radius: 2mm; }
.layout-encadre .d-lines { border: 1pt solid var(--p); border-radius: 2mm; border-collapse: separate; border-spacing: 0; overflow: hidden; }
.layout-encadre .d-lines th { background: var(--soft); color: var(--p); border-bottom: 1pt solid var(--p); }
.layout-encadre .d-lines tbody tr:last-child td { border-bottom: 0; }
.layout-encadre .d-totals { border: 1pt solid var(--p); border-radius: 2mm; overflow: hidden; padding-top: 1mm; }
.layout-encadre .d-pay { border: 1pt solid var(--s); border-radius: 2mm; }
.layout-encadre .d-foot { left: 22mm; right: 22mm; bottom: 10mm; }

/* ---------------- Variante « ruban » : titre et références sur un ruban de couleur pleine largeur */
.layout-ruban .d-band, .layout-ruban .d-rule { display: none; }
.layout-ruban .d-title-row { margin: 6mm -20mm 7mm; padding: 5mm 20mm; background: var(--p); align-items: center; }
.layout-ruban .d-title, .layout-ruban .d-subject { color: #fff; }
.layout-ruban .d-kicker { color: #fff; opacity: .92; }
.layout-ruban .d-kicker::before { border-color: #fff; }
.layout-ruban .d-tile { border: 0; border-top: 0 !important; border-radius: 1.5mm; background: rgba(255, 255, 255, .95); }
.layout-ruban .d-lines th { color: var(--p); border-bottom-color: var(--p); }
.layout-ruban .d-party .pl { color: var(--p); }
.layout-ruban .d-totals .grand { background: var(--s); }

/* ---------------- Variante « contraste » : en-tête, tableau et total sombres, accents dans la couleur principale */
.layout-contraste { --dark: #23252A; }
.layout-contraste .d-band, .layout-contraste .d-rule { display: none; }
.layout-contraste .d-head { margin: -15mm -20mm 0; padding: 10mm 20mm 9mm; background: var(--dark); border-bottom: 1.4mm solid var(--p); }
.layout-contraste .d-identity { color: #E4E4E4; }
.layout-contraste .d-identity b, .layout-contraste .d-logo .d-logo-text { color: #fff; }
.layout-contraste .d-logo img { background: #fff; padding: 2mm 3mm; border-radius: 1.5mm; }
.layout-contraste .d-title-row { margin-top: 8mm; }
.layout-contraste .d-title { color: var(--dark); }
.layout-contraste .d-tile { background: var(--dark); border: 0; border-top: 0 !important; border-bottom: 1mm solid var(--p); }
.layout-contraste .d-tile .tl { color: #BDBDBD; }
.layout-contraste .d-tile .tv { color: #fff; }
.layout-contraste .d-party { background: #F4F4F4; border-left-color: var(--dark); }
.layout-contraste .d-party .pl { color: var(--dark); }
.layout-contraste .d-party.to { border-left-color: var(--p); }
.layout-contraste .d-party.to .pl { color: var(--p); }
.layout-contraste .d-lines th { background: var(--dark); color: #fff; border: 0; }
.layout-contraste .d-totals .grand, .layout-contraste .d-sq { background: var(--dark); }
.layout-contraste .d-st { color: var(--dark); }
.layout-contraste .d-foot .pg { color: var(--p); }

/* ---------------- Documents longs (contrats, rapports, bulletins) */
.doc-page.letter { min-height: 297mm; padding-bottom: 30mm; }
.d-doc-title { font-size: 17pt; font-weight: 700; color: var(--s); margin: 0 0 1.5mm; line-height: 1.2; }
.d-doc-ref { font-size: 8pt; color: var(--m); margin-bottom: 5mm; }
.d-body { font-size: 9.3pt; line-height: 1.55; text-align: justify; color: var(--t); }
.d-body h1 { font-size: 14pt; color: var(--s); margin: 0 0 3mm; text-align: left; }
.d-body h2 { font-size: 10.5pt; color: var(--s); text-transform: uppercase; margin: 5mm 0 2mm; padding-bottom: 1.2mm; border-bottom: .8pt solid var(--a); text-align: left; break-after: avoid; letter-spacing: .2pt; }
.d-body h3 { font-size: 9.8pt; color: var(--strong); margin: 4mm 0 1.5mm; text-align: left; break-after: avoid; }
.d-body h4 { font-size: 9.3pt; color: var(--strong); margin: 3mm 0 1mm; }
.d-body p { margin: 0 0 2.4mm; }
.d-body ul, .d-body ol { margin: 0 0 2.5mm; padding-left: 5mm; }
.d-body li { margin: .6mm 0; }
.d-body li::marker { color: var(--p); }
.d-body strong { color: var(--strong); }
.d-body em { color: var(--m); }
.d-body table { width: 100%; border-collapse: collapse; margin: 2mm 0 4mm; font-size: 8.6pt; text-align: left; }
.d-body th { font-size: 7pt; text-transform: uppercase; color: var(--s); border-bottom: 1pt solid var(--s); padding: 1.6mm 2mm; letter-spacing: .5pt; }
.d-body td { border-bottom: .5pt solid #ECECEC; padding: 1.6mm 2mm; }
.d-body blockquote { margin: 2mm 0; padding: 2mm 4mm; background: var(--soft); border-left: 3pt solid var(--p); }
.d-body hr { border: 0; border-top: .8pt solid #E6E6E6; margin: 4mm 0; }
.d-slip { width: 100%; border-collapse: collapse; font-size: 8.8pt; margin-top: 3mm; }
.d-slip th { text-align: left; font-size: 6.9pt; text-transform: uppercase; letter-spacing: .6pt; color: var(--s); border-bottom: 1.1pt solid var(--s); padding: 2mm; }
.d-slip td { padding: 1.9mm 2mm; border-bottom: .5pt solid #ECECEC; }
.d-slip .n { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.d-slip tr.total td { font-weight: 700; color: var(--strong); background: var(--soft); border-bottom: 0; }
.d-slip tr.net td { font-weight: 700; color: #fff; background: var(--p); font-size: 10pt; }

/* Impression */
@media print {
  @page { size: A4; margin: 0; }
  html, body { margin: 0; background: #fff; }
  .doc-page { page-break-after: always; break-after: page; box-shadow: none !important; }
  .doc-page:last-child { page-break-after: auto; break-after: auto; }
  .doc-page.letter { min-height: 0; }
}
