/* Prêt entre proches — outil en 3 étapes (s'appuie sur les jetons de styles.css). */
.pp [hidden] { display: none !important; }

/* Fil des étapes */
.pp-fil { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 0; margin: 0 0 26px; }
.pp-fil-etape { width: 100%; display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 14px; cursor: pointer;
  border: 1px solid var(--bord); background: var(--fond); color: var(--doux); font: 600 .98rem/1.2 var(--police-texte); text-align: left;
  transition: border-color .2s, background .2s, color .2s; }
.pp-fil-etape:hover { border-color: color-mix(in srgb, var(--accent) 40%, var(--bord)); color: var(--texte); }
.pp-fil-num { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; flex: none;
  background: var(--fond-2); color: var(--doux); font-weight: 700; border: 1px solid var(--bord); }
.pp-fil-etape.actif { border-color: var(--accent); background: var(--accent-doux); color: var(--texte); }
.pp-fil-etape.actif .pp-fil-num { background: var(--accent); border-color: var(--accent); color: #fff; }
.pp-fil-etape.fait .pp-fil-num { background: color-mix(in srgb, var(--succes) 16%, var(--carte)); color: var(--succes); border-color: transparent; }
@media (max-width: 620px) { .pp-fil-libelle { font-size: .86rem; } .pp-fil-etape { flex-direction: column; gap: 6px; text-align: center; padding: 10px 6px; } }

/* Mise en page de l'étape 1 */
.pp-grille { display: grid; grid-template-columns: 1.15fr .85fr; gap: 26px; align-items: start; }
@media (max-width: 900px) { .pp-grille { grid-template-columns: 1fr; } }
.pp-formulaire { display: grid; gap: 18px; }
.pp-ligne { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 560px) { .pp-ligne { grid-template-columns: 1fr; } }
.pp-champ { display: grid; gap: 7px; }
.pp-libelle { font-weight: 600; font-size: .94rem; }
.pp-aide { color: var(--doux); font-size: .85rem; }
.pp-suffixe { position: relative; display: block; }
.pp-suffixe input { padding-right: 64px !important; }
.pp-unite { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); color: var(--doux); font-weight: 600; pointer-events: none; }
.pp-montant input { min-height: 60px !important; font-size: 1.6rem !important; font-weight: 700; letter-spacing: -.01em; }
.pp-montant .pp-unite { font-size: 1.3rem; }
.pp-puces { display: flex; flex-wrap: wrap; gap: 6px; }
.pp-puce { border: 1px solid var(--bord); background: var(--fond); color: var(--texte); border-radius: 999px; padding: 6px 12px;
  font: 600 .86rem/1 var(--police-texte); cursor: pointer; transition: border-color .15s, background .15s; }
.pp-puce:hover { border-color: var(--accent); background: var(--accent-doux); }
.pp-erreurs { color: var(--erreur); font-weight: 600; margin: 0; min-height: 1.2em; }

/* Résumé en direct */
.pp-resume { position: sticky; top: 92px; background: linear-gradient(170deg, var(--accent-doux), transparent 60%), var(--fond-2);
  border: 1px solid var(--bord); border-radius: 20px; padding: 22px; }
.pp-resume-vide { color: var(--doux); margin: 0; }
.pp-resume-tete { display: grid; gap: 2px; margin-bottom: 16px; }
.pp-resume-etiquette { text-transform: uppercase; letter-spacing: .08em; font-size: .78rem; font-weight: 700; color: var(--accent-fort); }
.pp-resume-valeur { font: 800 clamp(2rem, 4.5vw, 2.6rem)/1.05 var(--police-titres); letter-spacing: -.02em; }
.pp-resume-sous { color: var(--doux); font-size: .92rem; }
.pp-chiffres { display: grid; gap: 0; margin: 0 0 18px; border-top: 1px solid var(--bord); }
.pp-chiffres div { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--bord); }
.pp-chiffres dt { color: var(--doux); }
.pp-chiffres dd { margin: 0; font-weight: 700; font-variant-numeric: tabular-nums; }
.pp-graphique { display: block; width: 100%; height: 90px; }
.pp-graphique rect { fill: var(--accent); opacity: .85; }
.pp-graphe-legende { color: var(--doux); font-size: .8rem; margin: 6px 0 18px; }
.pp-formalites-titre { font-size: 1rem; margin: 0 0 10px; }
.pp-formalites { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.pp-formalites li { display: flex; gap: 10px; align-items: flex-start; font-size: .9rem; line-height: 1.45; padding: 10px 12px;
  border-radius: 12px; background: var(--carte); border: 1px solid var(--bord); }
.pp-formalites li .icone { width: 18px; height: 18px; margin-top: 1px; color: var(--accent-fort); }
.pp-formalites li.important { border-color: color-mix(in srgb, var(--alerte) 40%, var(--bord)); background: color-mix(in srgb, var(--alerte) 8%, var(--carte)); }
.pp-formalites li.important .icone { color: var(--alerte); }
.pp-sources { color: var(--doux); font-size: .78rem; margin: 10px 0 0; }

/* Échéancier */
.pp-tableau-zone { margin-top: 22px; border: 1px solid var(--bord); border-radius: 16px; padding: 0 16px; }
.pp-tableau-zone summary { cursor: pointer; padding: 14px 0; font-weight: 650; color: var(--accent-fort); }
.pp-defilement { overflow-x: auto; margin-bottom: 14px; }
.pp-echeancier { border-collapse: collapse; width: 100%; font-size: .9rem; font-variant-numeric: tabular-nums; }
.pp-echeancier th { background: var(--fond-2); font-weight: 650; color: var(--doux); font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; }
.pp-echeancier th, .pp-echeancier td { border-bottom: 1px solid var(--bord); padding: 8px 10px; text-align: right; white-space: nowrap; }
.pp-echeancier th:nth-child(-n+2), .pp-echeancier td:nth-child(-n+2) { text-align: left; }
.pp-echeancier tr.paye td { color: var(--doux); text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--succes) 70%, transparent); }
.pp-echeancier input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--succes); }

/* Étape 2 */
.pp-personnes { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 18px; }
@media (max-width: 820px) { .pp-personnes { grid-template-columns: 1fr; } }
.pp-carte-personne { border: 1px solid var(--bord); border-radius: 18px; padding: 18px 18px 6px; margin: 0; display: grid; gap: 14px; background: var(--fond-2); }
.pp-carte-personne legend { font: 700 1.05rem/1 var(--police-titres); padding: 0 8px; }
.pp-ville { max-width: 380px; }

/* Navigation */
.pp-nav { display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--bord); }
.pp-nav .bouton.fantome { margin-right: auto; }

/* Étape 3 : document */
.pp-barre-doc { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }
.pp-verrou { width: 100%; display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; align-items: start; padding: 18px 20px;
  border-radius: 16px; background: var(--accent-doux); border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--bord)); }
.pp-verrou > .icone { color: var(--accent-fort); margin-top: 2px; }
.pp-verrou p { margin: 0; }
.pp-verrou-actions { grid-column: 2; display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; }
.pp-document { position: relative; overflow: hidden; background: #fff; color: #1a1a1a; border: 1px solid #e3e3e0; border-radius: 6px;
  padding: clamp(24px, 5vw, 56px); font-family: Georgia, "Times New Roman", serif; line-height: 1.75; font-size: 1rem;
  box-shadow: 0 1px 0 #e9e9e6, 0 18px 50px rgb(16 24 40 / .14); max-width: 820px; margin: 0 auto; }
.pp-document h2 { text-align: center; letter-spacing: .14em; font-size: 1.3rem; margin-bottom: 28px; font-family: inherit; }
.pp-document h3 { font-family: inherit; margin-top: 28px; }
.pp-document .pp-echeancier th { background: #f4f4f2; color: #444; }
.pp-document .pp-echeancier th, .pp-document .pp-echeancier td { border-color: #ddd; color: #1a1a1a; font-family: system-ui, sans-serif; font-size: .8rem; }
.pp-document.verrouille::after { content: attr(data-filigrane); position: absolute; inset: 0; display: grid; place-items: center;
  font: 800 clamp(4rem, 14vw, 9rem)/1 system-ui, sans-serif; letter-spacing: .1em; color: rgb(15 118 110 / .1);
  transform: rotate(-24deg); pointer-events: none; }
.pp-mention { margin-top: 28px; font-style: italic; }
.pp-lignes { height: 84px; background: repeating-linear-gradient(#fff 0, #fff 27px, #bbb 28px); }
.pp-signatures { display: flex; justify-content: space-between; gap: 24px; margin: 28px 0 72px; }
.pp-signatures div { flex: 1; border-top: 1px solid #999; padding-top: 6px; font-size: .9rem; }
.pp-avertissement { font-size: .8rem; color: #555; margin-top: 24px; }
.pp-impression-refusee { display: none; }
.pp-suivi { margin-top: 28px; }
.pp-suivi:empty { display: none; }

/* Pied de l'outil */
.pp-pied { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-top: 22px;
  padding-top: 16px; border-top: 1px dashed var(--bord); }
.pp-confidentialite { display: flex; gap: 8px; align-items: center; color: var(--doux); font-size: .88rem; margin: 0; }
.pp-confidentialite .icone { width: 18px; height: 18px; color: var(--succes); }
.pp-lien { display: inline-flex; gap: 6px; align-items: center; border: 0; background: none; color: var(--doux); cursor: pointer;
  font: 500 .88rem/1 var(--police-texte); padding: 6px; border-radius: 8px; }
.pp-lien:hover { color: var(--erreur); background: color-mix(in srgb, var(--erreur) 8%, transparent); }
.pp-lien .icone { width: 16px; height: 16px; }

/* Impression : uniquement le document, et seulement en version complète */
@media print {
  body > *:not(main), main .conteneur > *:not(#outil), .pp > *:not(.pp-panneau),
  .pp-panneau > *:not(.pp-document):not(.pp-impression-refusee) { display: none !important; }
  .outil { border: 0; padding: 0; margin: 0; background: none; box-shadow: none; }
  .pp-document { border: 0; border-radius: 0; margin: 0; padding: 0; box-shadow: none; max-width: none; }
  .pp-document.verrouille { display: none !important; }
  .pp-document.verrouille + .pp-impression-refusee { display: block !important; font: 14pt/1.5 system-ui, sans-serif; }
  .pp-echeancier { page-break-inside: auto; }
  .pp-echeancier tr { page-break-inside: avoid; }
}
