226 lines
6.1 KiB
CSS
226 lines
6.1 KiB
CSS
/* ==========================================================================
|
|
print.css — Feuille de style d'impression
|
|
--------------------------------------------------------------------------
|
|
Chargée via media="print" : elle n'est pas téléchargée en priorité pour
|
|
l'affichage écran et ne pénalise donc pas le rendu initial.
|
|
|
|
Enjeu réel : un CV est imprimé et exporté en PDF. Une page web imprimée
|
|
sans feuille dédiée sort avec la navigation, des fonds gris qui vident
|
|
les cartouches, des liens dont on ne voit pas la cible, et des blocs
|
|
coupés au milieu.
|
|
|
|
Ce fichier n'utilise pas @layer : chargé en media="print", il doit
|
|
surcharger toutes les couches sans discussion.
|
|
========================================================================== */
|
|
|
|
/* --------------------------------------------------------------------------
|
|
FORMAT DE PAGE
|
|
-------------------------------------------------------------------------- */
|
|
@page {
|
|
size: A4 portrait;
|
|
margin: 15mm 14mm;
|
|
}
|
|
|
|
/* Première page : marge haute réduite, le nom fait office d'en-tête */
|
|
@page :first {
|
|
margin-block-start: 12mm;
|
|
}
|
|
|
|
/* --------------------------------------------------------------------------
|
|
MASQUAGE DES ÉLÉMENTS D'INTERFACE
|
|
Rien de ce qui sert à naviguer n'a de sens sur papier.
|
|
-------------------------------------------------------------------------- */
|
|
.site-header,
|
|
.skip-link,
|
|
.nav-toggle,
|
|
.site-nav,
|
|
.to-top,
|
|
.actions,
|
|
.screen-only {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Éléments réservés à l'impression */
|
|
.print-only { display: block !important; }
|
|
|
|
/* --------------------------------------------------------------------------
|
|
REMISE À PLAT DES COULEURS
|
|
Noir sur blanc : lisible sur toute imprimante, y compris monochrome.
|
|
-------------------------------------------------------------------------- */
|
|
body {
|
|
background: #fff;
|
|
color: #000;
|
|
font-size: 10.5pt;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.container {
|
|
max-inline-size: none;
|
|
padding-inline: 0;
|
|
}
|
|
|
|
/* --------------------------------------------------------------------------
|
|
GESTION DES SAUTS DE PAGE
|
|
Arbitrage important : on autorise une entrée de parcours (.entry) à se
|
|
couper entre deux pages, mais jamais une fiche individuelle (.course,
|
|
.project, .card).
|
|
|
|
Pourquoi ? Une entrée « Enseignement » contient quatre fiches de cours et
|
|
dépasse la demi-page. Si on interdit sa coupure, elle bascule en entier
|
|
sur la page suivante et laisse un vide de plusieurs centimètres. Coupée
|
|
entre deux fiches, elle reste parfaitement lisible et le document gagne
|
|
une à deux pages.
|
|
-------------------------------------------------------------------------- */
|
|
.course,
|
|
.project,
|
|
.card,
|
|
.education,
|
|
.contact-block {
|
|
break-inside: avoid;
|
|
}
|
|
|
|
/* Les titres ne restent jamais seuls en bas de page, séparés de leur contenu */
|
|
.section-title,
|
|
.entry__role,
|
|
.entry__org,
|
|
.project__title,
|
|
.card__title,
|
|
.education__degree {
|
|
break-after: avoid;
|
|
}
|
|
|
|
/* Une entrée ne démarre pas en toute fin de page pour n'y poser que sa date */
|
|
.entry__date {
|
|
break-after: avoid;
|
|
}
|
|
|
|
/* Limite les lignes isolées en haut ou en bas de page (veuves et orphelines) */
|
|
p, li {
|
|
orphans: 3;
|
|
widows: 3;
|
|
}
|
|
|
|
/* --------------------------------------------------------------------------
|
|
MISE EN PAGE
|
|
-------------------------------------------------------------------------- */
|
|
.masthead {
|
|
padding-block: 0 10pt;
|
|
border-block-end: 1pt solid #000;
|
|
}
|
|
|
|
.section {
|
|
padding-block: 10pt;
|
|
border-block-start: 0.5pt solid #ccc;
|
|
}
|
|
|
|
.intro { padding-block: 10pt; }
|
|
|
|
.intro__text--highlight {
|
|
border-inline-start: 2pt solid #666;
|
|
padding-inline-start: 8pt;
|
|
}
|
|
|
|
/* Grilles : deux colonnes fixes, plus compact que l'auto-fit écran */
|
|
.grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 8pt;
|
|
}
|
|
|
|
/* --------------------------------------------------------------------------
|
|
CARTES ET FICHES
|
|
Fonds supprimés, ombres supprimées, bordures fines.
|
|
-------------------------------------------------------------------------- */
|
|
.course,
|
|
.project,
|
|
.card,
|
|
.contact-block {
|
|
background: transparent;
|
|
border: 0.5pt solid #bbb;
|
|
box-shadow: none;
|
|
padding: 6pt 8pt;
|
|
margin-block-end: 5pt;
|
|
transform: none;
|
|
}
|
|
|
|
.entry {
|
|
border-inline-start: 0.5pt solid #999;
|
|
padding-block-end: 10pt;
|
|
}
|
|
|
|
.entry::before {
|
|
background: #fff;
|
|
border-color: #000;
|
|
}
|
|
|
|
.education { border-inline-start: 0.5pt solid #999; }
|
|
|
|
/* --------------------------------------------------------------------------
|
|
ACCENTS EN NIVEAUX DE GRIS
|
|
Le vert #05BC8A imprimé en monochrome donne un gris très clair,
|
|
quasi invisible. On force le noir sur tous les éléments porteurs
|
|
d'information.
|
|
-------------------------------------------------------------------------- */
|
|
.eyebrow,
|
|
.eyebrow::before,
|
|
.entry__date,
|
|
.section-title::before,
|
|
.course__name::before,
|
|
.marker-list li::before {
|
|
color: #000;
|
|
}
|
|
|
|
.badge {
|
|
background: transparent;
|
|
border: 0.5pt solid #999;
|
|
color: #333;
|
|
}
|
|
|
|
.project__stack li {
|
|
background: transparent;
|
|
border: 0.5pt solid #ccc;
|
|
color: #444;
|
|
}
|
|
|
|
/* Icônes SVG inline */
|
|
.card__icon,
|
|
.contact-list__icon {
|
|
stroke: #000;
|
|
}
|
|
|
|
/* --------------------------------------------------------------------------
|
|
LIENS
|
|
Sur papier, un lien dont on ne voit pas la cible est inutile.
|
|
On affiche l'URL entre parenthèses — sauf pour mailto et les ancres
|
|
internes, où l'adresse est déjà visible ou sans objet.
|
|
-------------------------------------------------------------------------- */
|
|
a {
|
|
color: #000;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.contact-list a[href^="http"]::after,
|
|
.site-footer a[href^="http"]::after {
|
|
content: " (" attr(href) ")";
|
|
font-size: 8pt;
|
|
color: #555;
|
|
word-break: break-all;
|
|
}
|
|
|
|
a[href^="#"]::after,
|
|
a[href^="mailto:"]::after,
|
|
a[href^="tel:"]::after {
|
|
content: "";
|
|
}
|
|
|
|
/* --------------------------------------------------------------------------
|
|
PIED DE PAGE
|
|
-------------------------------------------------------------------------- */
|
|
.site-footer {
|
|
border-block-start: 0.5pt solid #ccc;
|
|
padding-block: 6pt 0;
|
|
}
|
|
|
|
.site-footer__inner { font-size: 8pt; }
|
|
.site-footer__links { display: none; }
|