mirror of
https://github.com/IliesAllali/parenthese.git
synced 2026-11-10 07:52:13 +00:00
- text-wrap-style pretty sur les paragraphes, listes, légendes et chapôs, balance sur les titres (landing, guides statiques, base pz.css de l'app). Longhand pour ne pas réactiver le retour à la ligne là où white-space: nowrap est posé. Les noms de l'arbre sont sur le canvas, non touchés. - Espaces insécables du français dans le texte visible : fine insécable avant ? ! ;, insécable avant : et dans les guillemets, entre un nombre et son unité (Mo, Go, €, dpi). Landing (i18n.js, bloc fr hors meta) et pages guides FR (corps de page, hors script). - App : frenchTypography() appliquée par t() en français, avant le remplacement des variables ; le dictionnaire anglais reste indexé sur le français tel qu'écrit. Tests mis à jour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
103 lines
6.4 KiB
CSS
103 lines
6.4 KiB
CSS
/* Pages guides statiques de parenthese.io : même DA que la landing (accent terracotta, Newsreader + DM Sans).
|
||
Polices chargées par Google Fonts dans le <head> de chaque page. Tokens repris de landing/src/index.css. */
|
||
:root {
|
||
--grege: #fbfaf7; --papier: #ffffff;
|
||
--a50: #fcf3ef; --a100: #f8e4db; --a200: #f4d6c9; --a300: #edb6a4; --a500: #d2694a; --a700: #93402a; --a800: #7a3421;
|
||
--encre: #2a2622; --encre2: #4f4841; --doux: #6b645d; --trait: #ebe6df; --trait-l: #efe3dc;
|
||
--ombre: 0 1px 2px rgba(42,38,34,.05), 0 8px 24px rgba(42,38,34,.07);
|
||
--serif: 'Newsreader', Georgia, 'Times New Roman', serif;
|
||
--sans: 'DM Sans', system-ui, -apple-system, sans-serif;
|
||
--ease-out: cubic-bezier(.23,1,.32,1);
|
||
color-scheme: light;
|
||
}
|
||
* { box-sizing: border-box; }
|
||
html { background: var(--grege); scroll-padding-top: 84px; }
|
||
body { margin: 0; color: var(--encre); background: var(--grege); font: 400 17px/1.65 var(--sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
|
||
:focus-visible { outline: 2px solid var(--a500); outline-offset: 3px; border-radius: 6px; }
|
||
::selection { background: var(--a200); }
|
||
a { color: var(--a700); text-decoration: underline; text-decoration-color: var(--a300); text-underline-offset: 3px; text-decoration-thickness: 1px; }
|
||
a:hover { color: var(--a800); text-decoration-color: currentColor; }
|
||
|
||
.wrap { width: min(100% - 32px, 720px); margin: 0 auto; }
|
||
|
||
/* Header, calé sur .site-nav de la landing */
|
||
header.top { position: sticky; top: 0; z-index: 10; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); background: rgba(251, 250, 247, 0.86); border-bottom: 1px solid var(--trait); }
|
||
header.top .wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; height: 68px; }
|
||
.brand { display: inline-flex; align-items: center; color: var(--encre); text-decoration: none; }
|
||
.brand img { display: block; height: 22px; width: auto; }
|
||
|
||
/* Boutons, calés sur .btn.p / .btn.s de la landing (fond encre : le blanc sur a500 ne passe pas AA) */
|
||
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 16px; border-radius: 999px; background: var(--encre); color: #fff; font: 500 14px/1 var(--sans); text-decoration: none; white-space: nowrap; transition: transform 140ms var(--ease-out), background-color 180ms ease; }
|
||
.btn:hover { background: #3d3731; color: #fff; text-decoration: none; }
|
||
.btn:active { transform: scale(0.97); }
|
||
.btn.ghost { background: transparent; color: var(--encre); box-shadow: inset 0 0 0 1px var(--a300); }
|
||
.btn.ghost:hover { background: var(--a50); }
|
||
|
||
/* Article */
|
||
main { padding: 56px 0 24px; }
|
||
.eyebrow { display: inline-block; font: 500 12px/1.3 var(--sans); letter-spacing: 0.1em; text-transform: uppercase; color: var(--doux); margin-bottom: 16px; }
|
||
h1, h2, h3 { font-family: var(--serif); color: var(--encre); }
|
||
/* Pas de mot ni de signe seul en fin de paragraphe, titres équilibrés sur leurs lignes */
|
||
h1, h2, h3, h4 { text-wrap-style: balance; }
|
||
p, li, blockquote, figcaption, dd, td, .lead, .note { text-wrap-style: pretty; }
|
||
h1 { font-size: clamp(36px, 5vw, 54px); line-height: 1.06; font-weight: 300; margin: 0 0 20px; letter-spacing: -0.02em; }
|
||
.lead { font-size: 20px; line-height: 1.55; color: var(--encre2); margin: 0 0 40px; }
|
||
h2 { font-size: 30px; line-height: 1.2; font-weight: 400; margin: 52px 0 14px; letter-spacing: -0.01em; }
|
||
h3 { font-size: 23px; line-height: 1.25; font-weight: 400; margin: 32px 0 8px; }
|
||
h1 em, h2 em, h3 em, em.s { font-style: italic; font-weight: 300; }
|
||
p { margin: 0 0 16px; }
|
||
ul, ol { padding-left: 22px; margin: 0 0 16px; }
|
||
li { margin-bottom: 6px; }
|
||
li::marker { color: var(--a500); }
|
||
strong { font-weight: 600; }
|
||
.note { padding: 18px 22px; border-left: 3px solid var(--a500); background: var(--a50); border-radius: 0 14px 14px 0; margin: 24px 0; }
|
||
.note p:last-child { margin-bottom: 0; }
|
||
|
||
/* Captures d'écran de téléphone (mode d'emploi) */
|
||
.shots { display: flex; flex-wrap: wrap; gap: 20px; margin: 20px 0 28px; }
|
||
.shots figure { margin: 0; flex: 0 1 250px; }
|
||
.shots img { display: block; width: 100%; height: auto; border-radius: 26px; border: 1px solid var(--trait); box-shadow: 0 10px 30px rgba(42, 38, 34, .08); }
|
||
|
||
table { width: 100%; border-collapse: collapse; margin: 16px 0 28px; font-size: 15px; line-height: 1.5; }
|
||
th, td { text-align: left; vertical-align: top; padding: 12px 10px; border-bottom: 1px solid var(--trait); }
|
||
th { font: 500 12px/1.3 var(--sans); letter-spacing: 0.08em; text-transform: uppercase; color: var(--doux); border-bottom-color: var(--a300); }
|
||
td:first-child { font-weight: 500; }
|
||
th:first-child, td:first-child { padding-left: 0; }
|
||
|
||
.faq details { border-bottom: 1px solid var(--trait); padding: 14px 0; }
|
||
.faq summary { text-wrap: pretty; cursor: pointer; font: 400 21px/1.3 var(--serif); list-style: none; display: flex; justify-content: space-between; gap: 16px; }
|
||
.faq summary::-webkit-details-marker { display: none; }
|
||
.faq summary::after { content: '+'; font-family: var(--sans); color: var(--a700); flex: none; }
|
||
.faq details[open] summary::after { content: '−'; }
|
||
.faq p { margin: 10px 0 4px; color: var(--encre2); }
|
||
|
||
/* Encart final, calé sur .final de la landing */
|
||
.cta { margin: 64px 0 24px; padding: 40px 32px; border-radius: 22px; background: var(--a100); text-align: center; }
|
||
.cta h2 { margin-top: 0; font-weight: 300; font-size: clamp(28px, 4vw, 36px); line-height: 1.1; }
|
||
.cta p { color: var(--encre2); margin-bottom: 22px; }
|
||
.cta .btn { padding: 15px 24px; font-size: 15px; }
|
||
|
||
footer { border-top: 1px solid var(--trait); padding: 28px 0 40px; font: 400 13px/1.6 var(--sans); color: var(--doux); }
|
||
footer .wrap { display: flex; flex-wrap: wrap; gap: 14px 28px; align-items: center; justify-content: space-between; }
|
||
footer nav { display: flex; flex-wrap: wrap; gap: 6px 18px; }
|
||
footer a { color: inherit; text-decoration: none; }
|
||
footer a:hover { color: var(--encre); }
|
||
|
||
@media (max-width: 600px) {
|
||
.shots figure { flex-basis: calc(50% - 10px); }
|
||
body { font-size: 16px; }
|
||
main { padding-top: 40px; }
|
||
.lead { font-size: 18px; }
|
||
h2 { font-size: 26px; margin-top: 44px; }
|
||
h3 { font-size: 21px; }
|
||
.brand img { height: 20px; }
|
||
.btn span.long { display: none; }
|
||
table { font-size: 14px; }
|
||
th, td { padding: 10px 6px; }
|
||
th:last-child, td:last-child { padding-right: 0; }
|
||
th { font-size: 11px; letter-spacing: 0.04em; }
|
||
.faq summary { font-size: 19px; }
|
||
.cta { padding: 32px 20px; }
|
||
}
|
||
@media (prefers-reduced-motion: reduce) { .btn { transition: none; } }
|