/* Rendu A4 des contrats : feuilles de 210 × 297 mm sur papier jaune pâle, cadre doré, sceau du cabinet.
   Mise en page en mm/pt, identique à l'écran et à l'impression ; les feuilles sont créées par
   Contract.paginate (contract.js). Partagé par l'application et la page publique de signature. */
.pages {
  --c-paper: #fbf1cd;
  --c-paper-2: #f6e7b4;
  --c-ink: #1e1a12;
  --c-navy: #14213d;
  --c-gold: #a8841a;
  --c-gold-soft: #d9c07a;
  --c-rule: #d8c48a;
  --c-muted: #6e6442;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  color-scheme: light;
}
.a4-measure { position: absolute; left: -10000px; top: 0; visibility: hidden; pointer-events: none; }

.a4 {
  zoom: var(--a4-zoom, 1);
  width: 210mm;
  height: 297mm;
  flex: none;
  padding: 9mm;
  background:
    radial-gradient(ellipse at 15% 0%, rgb(255 255 255 / 55%), transparent 55%),
    linear-gradient(180deg, var(--c-paper), var(--c-paper-2));
  color: var(--c-ink);
  box-shadow: 0 1px 2px rgb(60 45 0 / 18%), 0 18px 50px rgb(0 0 0 / 30%);
  overflow: hidden;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.a4-measure .a4 { zoom: 1; }
.a4-frame {
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  padding: 8mm 10mm 4mm;
  border: 1.4pt solid var(--c-gold);
  outline: .6pt solid var(--c-gold-soft);
  outline-offset: -1.6mm;
}
.a4-body { flex: 1; min-height: 0; overflow: hidden; }
.a4-run { display: flex; justify-content: space-between; gap: 6mm; padding-bottom: 1.6mm; margin-bottom: 4mm; border-bottom: .6pt solid var(--c-rule); font: 600 6.5pt Inter, system-ui, sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--c-muted); }
.a4-run span:first-child { color: var(--c-navy); }
.a4-foot { display: flex; align-items: center; justify-content: space-between; gap: 4mm; padding-top: 2mm; margin-top: 2mm; border-top: .6pt solid var(--c-rule); font: 500 6.5pt Inter, system-ui, sans-serif; letter-spacing: .08em; text-transform: uppercase; color: var(--c-muted); }
.a4-num { font-weight: 700; color: var(--c-navy); }
.a4-paraphes { display: flex; align-items: center; gap: 1.6mm; }
.a4-paraphes i { width: 9mm; height: 6mm; border: .6pt solid var(--c-gold-soft); background: rgb(255 255 255 / 35%); }

/* filigrane */
.c-watermark { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; color: var(--c-gold); opacity: .06; z-index: 0; }
.c-watermark svg { width: 120mm; }
.a4-frame > :not(.c-watermark) { position: relative; z-index: 1; }

/* texte */
.contrat {
  font-family: "Cormorant Garamond", Georgia, "Times New Roman", serif;
  font-size: 10.5pt;
  line-height: 1.42;
  font-variant-numeric: lining-nums;
}
.contrat p { margin: .32em 0; text-align: justify; hyphens: auto; }
.contrat strong { font-weight: 700; }

/* en-tête (page 1) */
.c-head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 4mm; align-items: center; padding-bottom: 3mm; border-bottom: 1.5pt solid var(--c-navy); box-shadow: 0 2.2pt 0 -.8pt var(--c-gold); }
.c-seal { width: 17mm; height: 17mm; color: var(--c-navy); }
.c-seal svg { width: 100%; height: 100%; }
.c-firm-name { font-size: 1.6em; font-weight: 700; color: var(--c-navy); letter-spacing: .02em; line-height: 1.1; }
.c-firm-sub { font: 500 6.5pt Inter, system-ui, sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #5f5638; margin-top: 1mm; }
.c-meta { margin: 0; font: 500 7pt Inter, system-ui, sans-serif; border: .6pt solid var(--c-rule); background: rgb(255 255 255 / 35%); }
.c-meta div { display: grid; grid-template-columns: auto auto; gap: 3mm; padding: .7mm 2.4mm; justify-content: space-between; }
.c-meta div + div { border-top: .6pt solid var(--c-rule); }
.c-meta dt { color: var(--c-muted); text-transform: uppercase; letter-spacing: .08em; font-size: .86em; align-self: center; }
.c-meta dd { margin: 0; font-weight: 600; color: var(--c-navy); text-align: right; font-variant-numeric: tabular-nums; }

/* titre */
.c-titleblock { text-align: center; margin: 6mm 0 2mm; }
.c-kicker { font: 600 6.5pt Inter, system-ui, sans-serif; letter-spacing: .32em; text-transform: uppercase; color: var(--c-gold); }
.c-title { font-size: 1.85em; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--c-navy); margin: 1.4mm 0 1mm; line-height: 1.2; }
.c-ornament { display: flex; align-items: center; justify-content: center; gap: 2.6mm; color: var(--c-gold); font-size: .75em; }
.c-ornament span { width: 18mm; height: .6pt; background: linear-gradient(90deg, transparent, var(--c-gold)); }
.c-ornament span:last-child { transform: scaleX(-1); }
.contrat .c-sub { text-align: center; font-style: italic; color: #5f5638; margin: 1mm 0 0; }

.c-h2 { font-size: 1em; font-weight: 700; text-transform: uppercase; letter-spacing: .16em; color: var(--c-navy); text-align: center; margin: 5mm 0 3mm; display: flex; align-items: center; gap: 3mm; }
.c-h2::before, .c-h2::after { content: ""; flex: 1; height: .6pt; background: var(--c-rule); }

/* parties */
.c-parties { display: grid; grid-template-columns: 1fr 1fr; gap: 3mm; }
.c-party { border: .6pt solid var(--c-rule); border-top: 2pt solid var(--c-navy); background: rgb(255 255 255 / 38%); padding: 2.4mm 3mm 2mm; }
.c-party-role { font: 700 6.3pt Inter, system-ui, sans-serif; letter-spacing: .2em; text-transform: uppercase; color: var(--c-gold); }
.c-party-name { font-size: 1.25em; font-weight: 700; color: var(--c-navy); margin: .3mm 0 1.4mm; line-height: 1.2; }
.c-party dl { margin: 0; }
.c-row { display: grid; grid-template-columns: 25mm minmax(0, 1fr); gap: 2mm; padding: .4mm 0; border-bottom: .5pt dotted var(--c-rule); font-size: .95em; line-height: 1.3; }
.c-row dt { font: 500 6pt Inter, system-ui, sans-serif; text-transform: uppercase; letter-spacing: .06em; color: var(--c-muted); align-self: center; }
.c-row dd { margin: 0; }
.contrat .c-party-note { font-size: .86em; font-style: italic; color: #4e472f; margin: 1.4mm 0 0; text-align: left; line-height: 1.3; }
.contrat .c-pre { font-style: italic; margin-top: 4mm; }

/* articles */
.c-art { margin-top: 3.2mm; }
.c-art.is-cont { margin-top: 0; }
.c-art-num { font: 700 6.2pt Inter, system-ui, sans-serif; letter-spacing: .24em; text-transform: uppercase; color: var(--c-gold); }
.c-art h3 { font-size: 1.1em; font-weight: 700; color: var(--c-navy); margin: 0 0 .6mm; padding-bottom: .4mm; border-bottom: .6pt solid var(--c-rule); }
.contrat .c-art-intro { font-style: italic; }
.contrat .bloc { padding: .8mm 0 .8mm 3mm; border-left: 1.4pt solid var(--c-gold-soft); text-align: left; }

/* clôture et signatures */
.c-closing { margin-top: 5mm; }
.c-fait { font-style: italic; }
.c-signatures { display: grid; grid-template-columns: repeat(auto-fit, minmax(40mm, 1fr)); gap: 3mm; margin-top: 3mm; }
.c-sign { border: .6pt solid var(--c-rule); background: rgb(255 255 255 / 45%); padding: 2mm 2.6mm; display: flex; flex-direction: column; min-height: 38mm; }
.c-sign-label { font: 700 6.3pt Inter, system-ui, sans-serif; letter-spacing: .18em; text-transform: uppercase; color: var(--c-gold); }
.c-sign-name { font-weight: 700; color: var(--c-navy); }
.c-sign-name span { display: block; font-weight: 400; font-style: italic; font-size: .9em; color: #5f5638; }
.c-sign-area { flex: 1; min-height: 15mm; border-bottom: .6pt solid #8f7f4e; margin: 1mm 0; display: grid; place-items: center; }
.c-sign-area img { max-width: 100%; max-height: 18mm; }
.c-sign-mention { font-size: .78em; font-style: italic; color: var(--c-muted); line-height: 1.3; }
.c-sign.is-signed { border-color: #6f9b6f; background: rgb(236 248 230 / 55%); }
.c-hash { font-family: ui-monospace, Consolas, monospace; font-style: normal; font-size: .85em; color: var(--c-muted); }

.c-visa { display: grid; grid-template-columns: 16mm minmax(0, 1fr) 46mm; gap: 3mm; align-items: center; margin-top: 3mm; padding: 2mm 3mm; border: .6pt solid var(--c-gold); background: rgb(255 255 255 / 45%); }
.c-visa-seal { width: 16mm; height: 16mm; color: var(--c-gold); }
.c-visa-seal svg { width: 100%; height: 100%; }
.c-visa-text { font-size: .9em; line-height: 1.35; }
.c-visa-text .c-hash { display: block; }
.c-visa-sign { height: 16mm; display: grid; place-items: center; border-bottom: .6pt solid #8f7f4e; }
.c-visa-sign img { max-width: 100%; max-height: 15mm; }

/* annexes */
.c-annexe > .c-h2:first-child { margin-top: 0; }
.contrat .c-annexe p { margin: .15em 0; }
.contrat .c-annexe .c-gap { height: .6em; margin: 0; }
.contrat .c-annexe-intro { font-style: italic; text-align: center; color: #5f5638; font-size: .92em; }
.annexe-art { margin: 2mm 0; padding: 1.8mm 3mm; background: rgb(255 255 255 / 42%); border-left: 2pt solid var(--c-gold); font-size: .94em; }
.annexe-ref { font: 700 6.3pt Inter, system-ui, sans-serif; text-transform: uppercase; letter-spacing: .08em; color: var(--c-navy); margin-bottom: .5mm; }

/* impression : une feuille par page, sans marge ni réduction */
@page { size: A4; margin: 0; }
@media print {
  html, body { background: #fbf1cd !important; margin: 0 !important; }
  .pages { display: block; gap: 0; }
  .a4 { zoom: 1 !important; box-shadow: none; break-after: page; page-break-after: always; }
  .a4:last-child { break-after: auto; page-break-after: auto; }
}
