Textes projet éditables suivant Grav + écriture atomique du store

- Champ Présentation prérempli avec le texte Grav, suivi modifié/synchro
  (textOverride undefined = suit Grav, sinon figé ; bouton Réinitialiser)
- Fix génération PDF : savePortfolio écrit en atomique (temp+rename) pour
  éviter la corruption de lecture par l'autosave concurrent du rendu print
- Toast d'échec de génération explicite (message serveur)
- Refonte architecture visuelle, fond unifié white/tint/full, dispositions
  couverture bandeau/colonne, instantané public complet, index 3 lignes
This commit is contained in:
2026-07-06 13:26:06 +02:00
parent 59dfbe4155
commit ef1f14335d
22 changed files with 750 additions and 334 deletions

View File

@@ -82,6 +82,7 @@
--fl-margin: 30.2px; /* 8 mm — marge extérieure */
--fl-gutter: 14.4px; /* 3,8 mm — gouttière des grilles */
--fl-strip: 18.9px; /* 5 mm — filet haut des pages grille */
--fl-strip-light: 7.6px; /* 2 mm — filet fin du mode clair (couverture + grille) */
--fl-band: 208px; /* 55 mm — bandeau des pages couverture */
}
@@ -100,8 +101,8 @@
.fl-page :is(h1, h2, h3) {
font-family: 'Syne', sans-serif;
font-weight: 700;
line-height: 1.1;
font-weight: 400; /* Syne toujours en Regular (seul « Figures Libres » reste en Bold) */
line-height: 1.05;
}
.fl-page img {
@@ -133,5 +134,5 @@
.fl-prose ul, .fl-prose ol { margin: 0 0 0.75em; padding-left: 1.2em; }
.fl-prose ul { list-style: disc; }
.fl-prose ol { list-style: decimal; }
.fl-prose strong { font-weight: 700; }
.fl-prose strong { font-weight: 400; } /* Syne en Regular : pas de graisse dans le corps de texte */
.fl-prose em { font-style: italic; }