Générateur de portfolios PDF Figures Libres (app Nuxt autonome)
App Nuxt 3 + Nuxt UI qui lit les projets du CMS Grav et compose des portfolios A3 paysage exportés en PDF (gabarit book_v3) : composeur WYSIWYG, templates cover/toc/projet/grille/page libre, pipeline Playwright + Ghostscript, gel du contenu à la génération, partage public opt-in. Dépôt autonome : Dockerfile (base Playwright + Ghostscript + ffmpeg + rsync) inclus. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
137
assets/css/theme.css
Normal file
137
assets/css/theme.css
Normal file
@@ -0,0 +1,137 @@
|
||||
/* Charte Figures Libres — fontes du thème Grav figureslibres-v2 et canvas
|
||||
de page A3 paysage (gabarit_book_v3 : 1190,55 × 841,89 pt), communs à
|
||||
l'aperçu et au PDF. 1 pt = 4/3 px → page = 1587,4 × 1122,5 px. */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Syne';
|
||||
src: url('/fonts/Syne-regular.woff2') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Syne';
|
||||
src: url('/fonts/Syne-bold.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Moche';
|
||||
src: url('/fonts/Moche-bold.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
src: url('/fonts/Lato-regular.woff2') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
src: url('/fonts/Lato-bold.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
src: url('/fonts/Lato-italic.woff2') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
font-display: block;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
src: url('/fonts/Lato-bold-italic.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
font-display: block;
|
||||
}
|
||||
/* Fontes de titre par « utilité » (mixins du thème Grav) */
|
||||
@font-face {
|
||||
font-family: 'Avara';
|
||||
src: url('/fonts/Avara-bold-italic.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
font-display: block;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'PlayfairDisplay';
|
||||
src: url('/fonts/PlayfairDisplay-italic.woff2') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
font-display: block;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'ManifontGrotesk';
|
||||
src: url('/fonts/ManifontGrotesk-bold-italic.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
font-display: block;
|
||||
}
|
||||
|
||||
/* ---- Canvas de page A3 paysage — métriques mesurées dans le gabarit ---- */
|
||||
|
||||
:root {
|
||||
--fl-page-w: 1587.4px; /* 420 mm */
|
||||
--fl-page-h: 1122.5px; /* 297 mm */
|
||||
--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-band: 208px; /* 55 mm — bandeau des pages couverture */
|
||||
}
|
||||
|
||||
.fl-page {
|
||||
position: relative;
|
||||
width: var(--fl-page-w);
|
||||
height: var(--fl-page-h);
|
||||
overflow: hidden;
|
||||
flex-shrink: 0;
|
||||
background: #ffffff;
|
||||
color: #000000;
|
||||
font-family: 'Syne', sans-serif;
|
||||
font-size: 16px; /* 12 pt */
|
||||
line-height: 21.33px; /* 16 pt */
|
||||
}
|
||||
|
||||
.fl-page :is(h1, h2, h3) {
|
||||
font-family: 'Syne', sans-serif;
|
||||
font-weight: 700;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.fl-page img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Fontes de titre par catégorie (utilité) — plus spécifiques que la règle
|
||||
Syne des h1/h2/h3 ci-dessus */
|
||||
.fl-page .fl-font-publique {
|
||||
font-family: 'PlayfairDisplay', serif;
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
.fl-page .fl-font-sociale {
|
||||
font-family: 'ManifontGrotesk', sans-serif;
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
.fl-page .fl-font-culturelle {
|
||||
font-family: 'Avara', serif;
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* Texte courant issu du Markdown — Syne 12 pt / interligne 16 pt (gabarit) */
|
||||
.fl-prose p { margin: 0 0 0.75em; }
|
||||
.fl-prose p:last-child { margin-bottom: 0; }
|
||||
.fl-prose a { text-decoration: underline; text-underline-offset: 2px; }
|
||||
.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 em { font-style: italic; }
|
||||
Reference in New Issue
Block a user