Landing was still advertising Yerres (91) + a planned Nantes relocation,
and a presence rule that omitted on-site work in the target zone.
- about paragraph + callout: zone replaces 'Localisation actuelle';
presence stated in order of preference — full remote, then hybrid or
on-site in the zone, Paris only as a fallback at 1-2 days/month max
- ZenQuality timeline entry: drop the 'Yerres' location, keep 'Full remote'
- CLAUDE.md content rules: geography note rewritten to match, with an
explicit 'never mention Yerres' guard
Verified: no 'Yerres' left outside the negative rule, CSP script hash
unchanged, headless render checked at 375px and 1440px.
CLAUDE.md requires the profile/job-search state to stay consistent across
index.html and the CV. The CV stated a concrete Nantes relocation + a
hybride-Nantes option the landing lacked. Per owner decision, the CV is
canonical: propagate those facts into the landing (about paragraph +
callout) and update CLAUDE.md's geography note to match. No invented claims
— mirrors what the CV already states. CV unchanged (no PDF regen).
The 'Me contacter' and 'Voir le CV' arrow SVGs were missing the
aria-hidden the sibling download arrow already carries; they are purely
decorative, so screen readers should skip them. Visual output unchanged.
index.html: drop unused .reveal.d6 rule (markup uses d1-d5 only).
CV_Bastien_Chanot.html:
- remove dead `position: running(siteFooter)` — no `element()` consumer,
and .footer-bar is `display:none` in @media print (the @page
auto-numbered footer replaces it); on screen running() is an invalid
position value, ignored.
- remove no-op `box-shadow: none` on .page (weasyprint ignores box-shadow;
.page sets a shadow nowhere).
- remove dead `.skills-grid { font-size: 8.4pt }` (every direct child is a
.skill-label/.skill-values div that sets its own size; no bare text).
- normalize stray blank lines.
Behavior-preserving: PDF regenerated from the edited HTML is byte-identical
to the pre-edit baseline (text sha256 + per-page PNG render hash match),
so CV_Bastien_Chanot.pdf is unchanged and the PDF=HTML invariant holds.
Shared chrome/hover/head/title/tag blocks for stack/project/theme cards +
methode items; per-class blocks keep only specifics. Zero HTML change,
cascade-order verified (no interfering rules between shared and specific
blocks). Net -60 lines; the audit's ~421 estimate was overstated.
- 5x background:#fff -> var(--page) (stack/project/theme/methode cards +
CV body) per CLAUDE.md 'no pure white background' (user-approved strict
conformity; visual change: cards now blend with parchment, border-kept)
- prefers-reduced-motion now also kills transitions (universal rule)
- dead .screen-label rule removed (no matching element)
- PDF regenerated via weasyprint (must match HTML invariant)
Brand pulse-dot translated to favicon: dark rounded square (#0d1b12) +
inner green dot (#6ab98a) + faint outer ring (#2d7a4f @60%). Identical
visual language to .brand::before in the nav.
Assets:
- favicon.svg — vector primary (modern browsers, scales)
- favicon-32.png — PNG hint
- favicon.ico — legacy multi-size (16/24/32/48)
- apple-touch-icon.png — iOS home-screen 180x180
PIL-generated PNG/ICO at 8x supersample + Lanczos downscale for clean
antialiasing. No external dependency added (PIL already on system).
index.html: 4 <link> tags wired in <head> (SVG, PNG 32, ICO alternate,
apple-touch). CV HTML left untouched; browser auto-fetches /favicon.ico
from root as fallback — TODO logged to mirror the link block when the
user finalizes CV edits.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Section title now anchors the "bas niveau" thread across both schools.
- Section intro: drop <em> for consistency with other section-intro blocks.
- École 42 description rewritten to surface kernel/memory/shell/security focus.
- TSRIT: remove false claim about stage transformed into CDI at CareGame
(CareGame internship dates from 2018-2019 during 42, not 2015 TSRIT).
Co-Authored-By: Claude <noreply@anthropic.com>
- New <section id="formation"> between Parcours and Contact, reusing timeline
+ card visual components from the existing system (palette, typos, animations).
- École 42 (2015–2019): 3 theme cards (Systèmes & Kernel · Bas niveau & Outils
système · Sécurité & Algorithmie) with project list + concise technical proof
for each entry (no scolarisms).
- TSRIT — Next Formation (2013–2015): BTS + "Félicitations du jury" badge,
réseau/TCP-IP/admin Linux fundamentals, stage transformed into CareGame CDI.
- Nav: "Formation" link inserted between Parcours and Contact.
- Contact: removed the old <aside class="contact-side"> Formation block and
the now-unused .contact-side / .education / 2-col contact-grid CSS;
.contact-list becomes 2-col on >=768px to fill the freed space.
Co-Authored-By: Claude <noreply@anthropic.com>
Single-page static site at bchanot.fr: landing (index.html) and CV
(HTML + PDF), pure HTML/CSS/JS, no build step. Includes project
conventions (CLAUDE.md), README, and .claude/ memory/tasks/audits
scaffolding.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>