diff --git a/TODO.md b/TODO.md index bbceb4e..a402378 100644 --- a/TODO.md +++ b/TODO.md @@ -41,6 +41,7 @@ - [x] #docs-cleanup-changes [docs] Update docs for the cleanup-page + GC changes made: admin README cleanup.php entry -> "Cleanup page (Corbeille — restore/delete trashed files)"; deployment.md adds a paragraph explaining abandoned uploads are auto-GC'd hourly and the page (titled Nettoyage) now only shows the Corbeille; added `just cleanup-tmp-uploads` recipe and documented it in development.md alongside cleanup-drafts. ## Completed +- [x] #fix-content-page-bottom-spacing-firefox [!medium] Fix missing bottom spacing at scroll-end on apropos/licence/charte in Firefox. Root cause: `.page-content` is a nested scroll container (overflow-y:auto) inside html/body {height:100%; overflow:hidden} flex; Firefox drops/clips that container's own `padding-bottom` (and last-child margin) from the scrollable area while Chromium honours it — FF scrollHeight came out ~80px SHORTER and the last ~80px of content was unreachable (clipped). Fix: moved trailing space off the container padding (`padding-bottom: 0` at all breakpoints) onto a real content spacer `.page-content > article::after { display:block; height: var(--space-2xl) }` (`var(--space-xl)` below 768px), which both browsers count as scrollable content. VERIFIED via Playwright (Chromium + Firefox): before FF delta=−80 (clipped) vs Chrome 0; after both FF & Chrome delta=0 on licence/apropos and identical on charte; not-found page unaffected (loads its own not-found.min.css). 294 PHPUnit tests pass. - [x] #cleanup-toc [+admin] Add sidebar TOC to admin cleanup page; drop the "Fichiers temporaires" section level and promote "Téléversements abandonnés" / "Corbeille" from h3 to h2 top-level sections (now TOC entries). Made admin-toc.js rebuild on htmx swap/settle so async-loaded fragment sections enter the TOC. - [x] #audit-all-docs-and [!high] Audit all docs/ and classify accurate vs stale - [x] #rewrite-development-md-to-match [!high] Rewrite development.md to match current just dev / app/ layout / PHPUnit diff --git a/app/public/assets/css/content-page.css b/app/public/assets/css/content-page.css index 56e4689..6af482b 100644 --- a/app/public/assets/css/content-page.css +++ b/app/public/assets/css/content-page.css @@ -14,7 +14,11 @@ overflow-y: auto; overflow-x: hidden; scroll-behavior: smooth; - padding: var(--space-xl) var(--space-l) var(--space-2xl); + /* Bottom spacing lives on .page-content > article::after (below): Firefox + drops/clips the scroll container's own padding-bottom in this nested flex + layout, while Chromium honours it — moving the pad into a block pseudo + element keeps both browsers consistent. */ + padding: var(--space-xl) var(--space-l) 0; display: grid; grid-template-columns: 180px 1fr; gap: var(--space-2xl); @@ -36,7 +40,7 @@ .page-content { grid-template-columns: 1fr; gap: var(--space-l); - padding: var(--space-m) var(--space-s) var(--space-xl); + padding: var(--space-m) var(--space-s) 0; } .page-content > article { @@ -65,7 +69,19 @@ line-height: 1.6; color: var(--text-primary); font-weight: 300; - /* padding-bottom: var(--space-xl); */ +} + +/* Trailing bottom spacing. Pseudo-element (real content in the scroll area) + rather than the container's padding-bottom, which Firefox clips. */ +.page-content > article::after { + content: ""; + display: block; + height: var(--space-2xl); +} +@media (max-width: 767px) { + .page-content > article::after { + height: var(--space-xl); + } } .page-content > article * { @@ -259,7 +275,7 @@ @media (max-width: 600px) { .page-content { - padding: var(--space-m) var(--space-s) var(--space-xl); + padding: var(--space-m) var(--space-s) 0; } .page-content > article {