<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Louis Fortin</title><link>https://beta.lfortin.ovh/</link><description>Un site personnel construit pour être lisible par tout le monde : à l'œil, à la loupe, et à l'oreille.</description><language>fr-ca</language><copyright>2026-2026 Louis Fortin</copyright><generator>Hugo 0.164.0</generator><lastBuildDate>Sun, 02 Aug 2026 10:00:00 -0400</lastBuildDate><atom:link href="https://beta.lfortin.ovh/flux.xml" rel="self" type="application/rss+xml"/><item><title>Banc d'essai du thème</title><link>https://beta.lfortin.ovh/blog/banc-d-essai/</link><guid isPermaLink="true">https://beta.lfortin.ovh/blog/banc-d-essai/</guid><pubDate>Sun, 02 Aug 2026 10:00:00 -0400</pubDate><dc:creator>Louis Fortin</dc:creator><category>Accessibilité</category><category>Hugo</category><category>CSS</category><category>Thème</category><description>Un billet qui emploie tous les éléments que le thème sait rendre, pour que rien ne se casse en silence.</description><content:encoded><![CDATA[<p>Ce billet n&rsquo;a pas grand-chose à dire. Son travail est ailleurs : il emploie
<strong>tous</strong> les éléments que le thème sait rendre, dans un seul document. Quand
une modification casse quelque chose, elle le casse ici, visiblement, plutôt
que trois mois plus tard sur un vrai billet.</p>
<p>Gardez-le. C&rsquo;est le banc d&rsquo;essai permanent du site.</p>
<div class="titre-avec-ancre">
  <h2 id="le-texte-courant">Le texte courant</h2>
  
</div>
<p>Du texte ordinaire, avec du <strong>gras</strong>, de l&rsaquo;<em>italique</em>, du <code>code court</code>, et une
abréviation expliquée : les règles du
<abbr title="World Wide Web Consortium">W3C</abbr>
 servent de base au
standard québécois.</p>
<p>Un terme anglais reçoit son propre attribut de langue, pour que la synthèse
vocale change de règles de prononciation :
<span lang="en">screen reader</span>
.</p>
<p>Un lien interne vers la <a href="https://beta.lfortin.ovh/a-propos/">page À propos</a>
, et un lien externe vers
le <a href="https://www.quebec.ca/gouvernement/ministeres-organismes/cybersecurite-numerique/publications/standard-accessibilite-sites-web" rel="noopener noreferrer">standard SGQRI 008 3.0<svg class="lien-externe__icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M15 3h6v6"/>
<path d="M10 14 21 3"/>
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/>
</svg><span class="lecteur-seul"> (site externe)</span></a>
,
qui reçoit son icône et sa mention réservée au lecteur d&rsquo;écran.</p>
<div class="titre-avec-ancre">
  <h3 id="un-titre-de-troisième-niveau">Un titre de troisième niveau</h3>
  
</div>
<p>Pour vérifier que le plan de titres ne saute aucun niveau et que la table des
matières s&rsquo;arrête bien à h3.</p>
<div class="titre-avec-ancre">
  <h2 id="les-listes">Les listes</h2>
  
</div>
<p>Une liste à puces :</p>
<ul>
<li>Un premier élément.</li>
<li>Un deuxième, avec une sous-liste :
<ul>
<li>un élément imbriqué,</li>
<li>un autre.</li>
</ul>
</li>
<li>Un troisième.</li>
</ul>
<p>Une liste numérotée :</p>
<ol>
<li>D&rsquo;abord ceci.</li>
<li>Ensuite cela.</li>
<li>Enfin le reste.</li>
</ol>
<p>Une liste de définitions :</p>
<dl>
<dt>Point de repère</dt>
<dd>Une région de la page qu&rsquo;un lecteur d&rsquo;écran peut atteindre directement.</dd>
<dt>Région live</dt>
<dd>Une zone dont les changements sont annoncés sans déplacer le focus.</dd>
</dl>
<div class="titre-avec-ancre">
  <h2 id="les-encadrés">Les encadrés</h2>
  
</div>
<div class="encadre encadre--note" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="9.5"/>
<path d="M12 16.5v-5"/>
<path d="M12 7.9h.01"/>
</svg>Note
    </p>
    <p>Un encadré d&rsquo;information. Le mot « Note » est écrit, l&rsquo;icône le double, et la
barre latérale le triple. Retirez la couleur : le sens tient encore.</p>
  </div><div class="encadre encadre--astuce" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M9.5 18.5h5"/>
<path d="M10.5 21.5h3"/>
<path d="M15.1 14c.2-1 .7-1.7 1.4-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.8 1.2 1.5 1.4 2.5"/>
</svg>Astuce
    </p>
    <p>Une astuce, en sarcelle.</p>
  </div><div class="encadre encadre--important" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M20.5 4.5v10a1 1 0 0 1-1 1H8l-4 4v-15a1 1 0 0 1 1-1h14.5a1 1 0 0 1 1 1z"/>
<path d="M12.25 6.5v3.5"/>
<path d="M12.25 12.6h.01"/>
</svg>Important
    </p>
    <p>Quelque chose à ne pas manquer.</p>
  </div><div class="encadre encadre--avertissement" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m10.3 3.9-8.5 14.2A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/>
<path d="M12 9.5v4"/>
<path d="M12 17.2h.01"/>
</svg>Avertissement
    </p>
    <p>Un avertissement. Sa barre latérale est plus épaisse, parce que la hiérarchie
ne doit pas reposer sur la seule teinte.</p>
  </div><div class="encadre encadre--attention" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M7.86 2.5h8.28L22 8.36v8.28L16.14 22.5H7.86L2 16.64V8.36z"/>
<path d="M12 8v4.5"/>
<path d="M12 16.2h.01"/>
</svg>Attention
    </p>
    <p>Une mise en garde, le niveau le plus haut.</p>
  </div><p>Et une citation ordinaire, sans type :</p>
<blockquote>
    <p>Le focus est la position du lecteur dans l&rsquo;interface. Un anneau caché est un
chemin caché.</p>

  </blockquote><div class="titre-avec-ancre">
  <h2 id="un-tableau">Un tableau</h2>
  
</div>
<table caption="Quatre critères que ce thème applique">
	<thead>
			<tr>
					<th>Critère</th>
					<th>Niveau</th>
					<th>Ce qu&rsquo;il demande</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>1.1.1</td>
					<td>A</td>
					<td>Un texte de remplacement pour tout contenu non textuel</td>
			</tr>
			<tr>
					<td>1.4.3</td>
					<td>AA</td>
					<td>Un contraste de 4,5:1 pour le texte courant</td>
			</tr>
			<tr>
					<td>2.4.11</td>
					<td>AA</td>
					<td>Le focus n&rsquo;est pas masqué</td>
			</tr>
			<tr>
					<td>2.4.13</td>
					<td>AAA</td>
					<td>Un anneau de focus d&rsquo;au moins 2 px à 3:1</td>
			</tr>
	</tbody>
</table>
<div class="titre-avec-ancre">
  <h2 id="du-code">Du code</h2>
  
</div>
<p>Un bloc en CSS :</p>
<div class="bloc-code"
  data-copier="Copier le code"
  data-copie="Code copié."
  data-copie-impossible="La copie n&#39;a pas fonctionné. Sélectionnez le texte du bloc et copiez-le avec le clavier."
  data-icone-copier="

"
  data-icone-coche="
">

  <div class="bloc-code__barre">
    <span class="bloc-code__langage">CSS</span>
  </div><pre tabindex="0" role="region" aria-label="Bloc de code en CSS"><code class="langage-css"><span class="line"><span class="cl"><span class="p">:</span><span class="nd">focus-visible</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="k">outline</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="n">focus</span><span class="o">-</span><span class="n">epaisseur</span><span class="p">)</span> <span class="kc">solid</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="n">couleur</span><span class="o">-</span><span class="n">focus</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="k">outline-offset</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="n">focus</span><span class="o">-</span><span class="n">decalage</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div>
<p>Un bloc en gabarit Go, avec un commentaire, une chaîne et un nombre :</p>
<div class="bloc-code"
  data-copier="Copier le code"
  data-copie="Code copié."
  data-copie-impossible="La copie n&#39;a pas fonctionné. Sélectionnez le texte du bloc et copiez-le avec le clavier."
  data-icone-copier="

"
  data-icone-coche="
">

  <div class="bloc-code__barre">
    <span class="bloc-code__langage">Go</span>
  </div><pre tabindex="0" role="region" aria-label="Bloc de code en Go"><code class="langage-go"><span class="line"><span class="cl"><span class="c1">// Vérifie le contraste avant de rendre.</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">func</span><span class="w"> </span><span class="nf">rapport</span><span class="p">(</span><span class="nx">avant</span><span class="p">,</span><span class="w"> </span><span class="nx">fond</span><span class="w"> </span><span class="nx">Couleur</span><span class="p">)</span><span class="w"> </span><span class="kt">float64</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">const</span><span class="w"> </span><span class="nx">decalage</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mf">0.05</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="nf">luminance</span><span class="p">(</span><span class="nx">avant</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">decalage</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nf">luminance</span><span class="p">(</span><span class="nx">fond</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">decalage</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div>
<p>Un bloc sans langage déclaré :</p>
<div class="bloc-code"
  data-copier="Copier le code"
  data-copie="Code copié."
  data-copie-impossible="La copie n&#39;a pas fonctionné. Sélectionnez le texte du bloc et copiez-le avec le clavier."
  data-icone-copier="

"
  data-icone-coche="
">

  <div class="bloc-code__barre">
    <span class="bloc-code__langage">Bloc de code</span>
  </div><pre tabindex="0" role="region" aria-label="Bloc de code"><code>Aucune coloration ici. Le texte reste lisible,
et le bloc défile toujours au clavier.</code></pre></div>
<div class="titre-avec-ancre">
  <h2 id="un-bloc-quon-ouvre">Un bloc qu&rsquo;on ouvre</h2>
  
</div>
<details>
  <summary>Pourquoi la table des matières n&#39;est pas dans une colonne latérale</summary>
  <p>Parce qu&rsquo;une colonne latérale ferait diverger l&rsquo;ordre visuel de l&rsquo;ordre du
document. Ce qu&rsquo;on voit à droite du billet arrive, dans le code, soit avant
soit après le contenu, jamais à côté. Une personne qui écoute la page reçoit
donc un ordre que la mise en page dément.</p>
<p>Au-dessus du billet, les deux ordres coïncident à toutes les largeurs.</p>

</details>

<div class="titre-avec-ancre">
  <h2 id="une-note-de-bas-de-page">Une note de bas de page</h2>
  
</div>
<p>Le thème gère aussi les notes de bas de page<sup id="fnref:1"><a href="https://beta.lfortin.ovh/blog/banc-d-essai/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, qui produisent des liens
aller-retour corrects.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Comme celle-ci. Le lien de retour ramène exactement à l&rsquo;endroit quitté.&#160;<a href="https://beta.lfortin.ovh/blog/banc-d-essai/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>Ce site et son thème</title><link>https://beta.lfortin.ovh/projets/ce-site/</link><guid isPermaLink="true">https://beta.lfortin.ovh/projets/ce-site/</guid><pubDate>Sun, 02 Aug 2026 08:00:00 -0400</pubDate><dc:creator>Louis Fortin</dc:creator><category>Accessibilité</category><category>Hugo</category><category>CSS</category><category>Thème</category><description>Un site Hugo et un thème maison qui visent le niveau AA du W3C, plus les critères supplémentaires du standard québécois.</description><content:encoded><![CDATA[<!-- TEXTE DE DÉPART, à remplacer ou à garder, comme vous voulez. -->
<p>Le site que vous lisez, et le thème qui le rend.</p>
<div class="titre-avec-ancre">
  <h2 id="ce-quil-vise">Ce qu&rsquo;il vise</h2>
  
</div>
<p>Le niveau AA des règles du W3C, plus les critères supplémentaires que le
standard québécois rend obligatoires, dont deux de niveau AAA : l&rsquo;apparence du
focus et les abréviations expliquées.</p>
<p>La page <a href="https://beta.lfortin.ovh/accessibilite/">Accessibilité</a>
 dit précisément ce qui a été vérifié
et avec quoi.</p>
<div class="titre-avec-ancre">
  <h2 id="ce-quil-na-pas">Ce qu&rsquo;il n&rsquo;a pas</h2>
  
</div>
<p>Aucune dépendance. Ni Sass, ni Node, ni bibliothèque JavaScript, ni police
chargée depuis un serveur tiers, ni service d&rsquo;analyse. La construction complète
tient en deux binaires, et la configuration interdit à Hugo toute requête
sortante : une ressource distante fait échouer le build au lieu de créer une
dépendance silencieuse.</p>
<div class="titre-avec-ancre">
  <h2 id="ce-quil-fait-de-particulier">Ce qu&rsquo;il fait de particulier</h2>
  
</div>
<ul>
<li>Une image sans texte de remplacement <strong>arrête la construction</strong>.</li>
<li>Un lien dont le texte est « cliquez ici » ou une URL nue déclenche un
avertissement nommé, avec le fichier fautif.</li>
<li>Un nom d&rsquo;icône inconnu arrête la construction, et le fichier qui déclare les
icônes alimente aussi le tableau descriptif que le standard québécois exige.</li>
<li>Les contrastes des deux thèmes sont mesurés par un script, pas estimés à
l&rsquo;œil.</li>
</ul>
]]></content:encoded></item><item><title>Pourquoi l'anneau de focus n'est pas une verrue</title><link>https://beta.lfortin.ovh/blog/pourquoi-le-focus-compte/</link><guid isPermaLink="true">https://beta.lfortin.ovh/blog/pourquoi-le-focus-compte/</guid><pubDate>Sat, 18 Jul 2026 09:00:00 -0400</pubDate><dc:creator>Louis Fortin</dc:creator><category>Accessibilité</category><category>CSS</category><category>Clavier</category><description>Le contour bleu que tout le monde veut supprimer est, pour une partie des gens, la seule façon de savoir où ils sont.</description><content:encoded><![CDATA[<!-- TEXTE DE DÉPART, à remplacer ou à garder, comme vous voulez. -->
<p>Il existe une ligne de CSS que presque tout le monde a écrite au moins une
fois :</p>
<div class="bloc-code"
  data-copier="Copier le code"
  data-copie="Code copié."
  data-copie-impossible="La copie n&#39;a pas fonctionné. Sélectionnez le texte du bloc et copiez-le avec le clavier."
  data-icone-copier="

"
  data-icone-coche="
">

  <div class="bloc-code__barre">
    <span class="bloc-code__langage">CSS</span>
  </div><pre tabindex="0" role="region" aria-label="Bloc de code en CSS"><code class="langage-css"><span class="line"><span class="cl"><span class="p">:</span><span class="nd">focus</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="k">outline</span><span class="p">:</span> <span class="kc">none</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div>
<p>Elle a l&rsquo;air inoffensive. Elle retire un contour bleu que le navigateur dessine
autour du bouton qu&rsquo;on vient d&rsquo;atteindre, et que beaucoup de gens trouvent laid.</p>
<div class="titre-avec-ancre">
  <h2 id="ce-quelle-retire-vraiment">Ce qu&rsquo;elle retire vraiment</h2>
  
</div>
<p>Pour qui se sert d&rsquo;une souris, le focus est presque invisible : le pointeur
indique la position, et le contour ne fait que doubler une information qu&rsquo;on a
déjà.</p>
<p>Pour qui navigue au clavier, à la commande vocale, ou avec un contacteur, le
focus <strong>est</strong> la position. C&rsquo;est le seul endroit où la prochaine touche va
agir. Sans indicateur visible, il faut appuyer sur Tab et deviner. C&rsquo;est comme
déplacer un curseur de texte invisible.</p>
<div class="encadre encadre--avertissement" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m10.3 3.9-8.5 14.2A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/>
<path d="M12 9.5v4"/>
<path d="M12 17.2h.01"/>
</svg>Avertissement
    </p>
    <p>Un contour retiré sans remplacement fait échouer le critère 2.4.7 des règles
du W3C. Ce n&rsquo;est pas une préférence esthétique, c&rsquo;est un manquement mesurable.</p>
  </div><div class="titre-avec-ancre">
  <h2 id="ce-quil-faut-faire-à-la-place">Ce qu&rsquo;il faut faire à la place</h2>
  
</div>
<p>Ne pas retirer le contour : le dessiner mieux. Depuis que <code>:focus-visible</code>
existe, le navigateur sait déjà distinguer un focus donné par le clavier d&rsquo;un
focus donné par un clic. Le contour n&rsquo;apparaît donc que quand il sert.</p>
<div class="bloc-code"
  data-copier="Copier le code"
  data-copie="Code copié."
  data-copie-impossible="La copie n&#39;a pas fonctionné. Sélectionnez le texte du bloc et copiez-le avec le clavier."
  data-icone-copier="

"
  data-icone-coche="
">

  <div class="bloc-code__barre">
    <span class="bloc-code__langage">CSS</span>
  </div><pre tabindex="0" role="region" aria-label="Bloc de code en CSS"><code class="langage-css"><span class="line"><span class="cl"><span class="p">:</span><span class="nd">focus-visible</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="k">outline</span><span class="p">:</span> <span class="mi">3</span><span class="kt">px</span> <span class="kc">solid</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="n">couleur</span><span class="o">-</span><span class="n">focus</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="k">outline-offset</span><span class="p">:</span> <span class="mi">3</span><span class="kt">px</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div>
<p>Le décalage n&rsquo;est pas cosmétique. Il fait que la couleur voisine de l&rsquo;anneau
est toujours le fond de la page, jamais celui du bouton entouré. Sans lui, un
anneau bleu autour d&rsquo;un bouton bleu n&rsquo;a aucun contraste avec ce qu&rsquo;il entoure.</p>
<p>C&rsquo;est exactement ce que fait ce site, et vous pouvez le vérifier : appuyez sur
Tab.</p>
]]></content:encoded></item><item><title>Faire échouer la construction sur une image muette</title><link>https://beta.lfortin.ovh/blog/une-image-sans-alt/</link><guid isPermaLink="true">https://beta.lfortin.ovh/blog/une-image-sans-alt/</guid><pubDate>Fri, 05 Jun 2026 14:30:00 -0400</pubDate><dc:creator>Louis Fortin</dc:creator><category>Accessibilité</category><category>Hugo</category><category>Outils</category><description>Un avertissement se perd dans un journal que personne ne relit. Une construction qui s'arrête, elle, se remarque.</description><content:encoded><![CDATA[<!-- TEXTE DE DÉPART, à remplacer ou à garder, comme vous voulez. -->
<p>L&rsquo;image sans texte de remplacement est la violation d&rsquo;accessibilité la plus
fréquente du web. Elle se produit toujours de la même façon : quelqu&rsquo;un écrit
vite, oublie l&rsquo;attribut, et personne ne s&rsquo;en aperçoit parce que la page a l&rsquo;air
parfaite.</p>
<div class="titre-avec-ancre">
  <h2 id="lavertissement-ne-suffit-pas">L&rsquo;avertissement ne suffit pas</h2>
  
</div>
<p>La réponse habituelle est un contrôle qui signale le problème. Un
avertissement, une ligne dans un rapport, un point orange dans un tableau de
bord.</p>
<p>Ça ne marche pas, pour une raison simple : un avertissement défile dans un
journal que personne ne relit. Le site se publie quand même. Le défaut part en
production, et il y reste.</p>
<div class="titre-avec-ancre">
  <h2 id="arrêter-la-construction">Arrêter la construction</h2>
  
</div>
<p>Ce site prend l&rsquo;option inverse. Le crochet de rendu des images vérifie le texte
de remplacement, et <strong>fait échouer la construction</strong> s&rsquo;il manque. Rien n&rsquo;est
publié.</p>
<p>L&rsquo;échange est le bon : on remplace un défaut invisible et permanent par un
défaut visible et immédiat. Le second se règle en trente secondes.</p>
<div class="encadre encadre--note" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="9.5"/>
<path d="M12 16.5v-5"/>
<path d="M12 7.9h.01"/>
</svg>Note
    </p>
    <p>Il reste une sortie de secours pour les images réellement décoratives. Elle
demande d&rsquo;écrire <code>{role=&quot;presentation&quot;}</code> sous l&rsquo;image, c&rsquo;est-à-dire de
déclarer une intention. C&rsquo;est exactement la différence qu&rsquo;on cherche à rendre
visible : un oubli et une décision ne doivent pas se ressembler.</p>
  </div><div class="titre-avec-ancre">
  <h2 id="ce-que-ça-change-à-lécriture">Ce que ça change à l&rsquo;écriture</h2>
  
</div>
<p>Rien, sauf qu&rsquo;on décrit ses images. Et décrire une image oblige à se demander
ce qu&rsquo;elle apporte, ce qui est aussi la bonne question à se poser avant de
l&rsquo;ajouter.</p>
]]></content:encoded></item><item><title>À propos</title><link>https://beta.lfortin.ovh/a-propos/</link><guid isPermaLink="true">https://beta.lfortin.ovh/a-propos/</guid><dc:creator>Louis Fortin</dc:creator><description>Qui je suis, ce que je fais, et pourquoi ce site est construit comme il l'est.</description><content:encoded><![CDATA[<!--
  TEXTE À REMPLACER.

  Ce qui suit est une structure, pas une biographie. Je ne peux pas écrire
  votre parcours à votre place : gardez les intertitres qui vous servent,
  supprimez les autres, et remplacez le corps du texte par le vôtre.

  La page fonctionne telle quelle, donc rien ne presse.
-->
<div class="titre-avec-ancre">
  <h2 id="ce-que-je-fais">Ce que je fais</h2>
  
</div>
<p>Remplacez ce paragraphe. Une ou deux phrases suffisent pour dire ce à quoi
vous passez vos journées, sans titre de poste ni jargon de métier.</p>
<div class="titre-avec-ancre">
  <h2 id="pourquoi-ce-site-est-construit-comme-ça">Pourquoi ce site est construit comme ça</h2>
  
</div>
<p>Je suis non-voyant et j&rsquo;utilise un lecteur d&rsquo;écran. Ce site est donc
construit dans l&rsquo;ordre inverse de l&rsquo;habitude : la structure d&rsquo;abord, le style
ensuite, et rien ne repose sur le fait de voir quoi que ce soit.</p>
<p>Le résultat vise le niveau AA des règles du W3C, plus les critères
supplémentaires que le Québec rend obligatoires. La page
<a href="https://beta.lfortin.ovh/accessibilite/">Accessibilité</a>
 dit précisément ce qui a été vérifié, avec
quels outils, et ce qui ne l&rsquo;est pas.</p>
<div class="titre-avec-ancre">
  <h2 id="me-joindre">Me joindre</h2>
  
</div>
<p>Ce site ne publie aucune coordonnée, par choix.</p>
]]></content:encoded></item><item><title>Accessibilité</title><link>https://beta.lfortin.ovh/accessibilite/</link><guid isPermaLink="true">https://beta.lfortin.ovh/accessibilite/</guid><dc:creator>Louis Fortin</dc:creator><description>Ce que ce site vise, comment ça a été vérifié, et ce qui n'est pas conforme.</description><content:encoded><![CDATA[<p>Cette page dit ce que ce site vise, avec quels outils ça a été vérifié, et ce
qui n&rsquo;est pas conforme. Elle est écrite pour être utile, pas pour rassurer :
vous y trouverez la liste des écarts assumés aussi bien que celle des réussites.</p>
<div class="titre-avec-ancre">
  <h2 id="ce-que-le-site-vise">Ce que le site vise</h2>
  
</div>
<p>Le site vise le <strong><abbr title="Standard du gouvernement du Québec relatif aux ressources informationnelles">SGQRI</abbr>
 008 version 3.0</strong>,
le <a href="https://www.quebec.ca/gouvernement/ministeres-organismes/cybersecurite-numerique/publications/standard-accessibilite-sites-web" rel="noopener noreferrer">Standard sur l&rsquo;accessibilité des sites Web du gouvernement du Québec<svg class="lien-externe__icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M15 3h6v6"/>
<path d="M10 14 21 3"/>
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/>
</svg><span class="lecteur-seul"> (site externe)</span></a>
,
en vigueur depuis le 29 avril 2024.</p>
<p>Ce standard est plus exigeant que le simple « niveau AA ». Il demande :</p>
<table caption="Les critères exigés par le SGQRI 008 3.0">
	<thead>
			<tr>
					<th>Ensemble</th>
					<th>Ce qui est exigé</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><abbr title="Web Content Accessibility Guidelines, les règles pour l&#39;accessibilité des contenus Web du W3C">WCAG</abbr>
 2.1, niveau A</td>
					<td>tous les critères</td>
			</tr>
			<tr>
					<td>WCAG 2.1, niveau AA</td>
					<td>tous, sauf 1.2.4 sous-titres en direct et 1.2.5 audiodescription</td>
			</tr>
			<tr>
					<td>WCAG 2.1, niveau AAA</td>
					<td>2.3.2 trois flashs, 3.1.4 abréviations, 2.5.6 modalités concomitantes</td>
			</tr>
			<tr>
					<td>WCAG 2.2, niveau A</td>
					<td>3.2.6 aide cohérente, 3.3.7 saisie redondante</td>
			</tr>
			<tr>
					<td>WCAG 2.2, niveau AA</td>
					<td>2.4.11 focus non masqué, 2.5.7 mouvements de glissement, 2.5.8 taille de cible, 3.3.8 authentification accessible</td>
			</tr>
			<tr>
					<td>WCAG 2.2, niveau AAA</td>
					<td>2.4.13 apparence du focus</td>
			</tr>
	</tbody>
</table>
<p>Ce site n&rsquo;a ni vidéo, ni son, ni formulaire d&rsquo;authentification, ni geste de
glissement. Les critères 1.2.x, 3.3.8 et 2.5.7 ne s&rsquo;y appliquent donc pas, ce
qui est une facilité et non un mérite.</p>
<div class="titre-avec-ancre">
  <h2 id="ce-qui-nest-pas-conforme">Ce qui n&rsquo;est pas conforme</h2>
  
</div>
<div class="encadre encadre--important" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M20.5 4.5v10a1 1 0 0 1-1 1H8l-4 4v-15a1 1 0 0 1 1-1h14.5a1 1 0 0 1 1 1z"/>
<path d="M12.25 6.5v3.5"/>
<path d="M12.25 12.6h.01"/>
</svg>Important
    </p>
    <p><strong>Le site n&rsquo;offre aucun moyen de me joindre.</strong> Pas d&rsquo;adresse courriel, pas de
formulaire, pas de page Contact.</p>
<p>C&rsquo;est un écart délibéré au SGQRI 008 3.0, qui demande qu&rsquo;une offre
d&rsquo;assistance figure sur la page d&rsquo;accessibilité. Je le sais et je l&rsquo;assume :
je ne souhaite pas publier de coordonnées.</p>
<p>À noter que le critère WCAG 3.2.6 Aide cohérente, lui, n&rsquo;est pas en échec :
il ne s&rsquo;applique que si un mécanisme d&rsquo;aide existe sur plusieurs pages, et il
n&rsquo;y en a aucun.</p>
  </div><p>C&rsquo;est le seul écart connu à ce jour. S&rsquo;il s&rsquo;en découvre d&rsquo;autres, ils seront
ajoutés ici plutôt que corrigés en silence.</p>
<div class="titre-avec-ancre">
  <h2 id="comment-ça-a-été-vérifié">Comment ça a été vérifié</h2>
  
</div>
<div class="titre-avec-ancre">
  <h3 id="les-contrastes-mesurés-et-non-estimés">Les contrastes, mesurés et non estimés</h3>
  
</div>
<p>Les couleurs des deux thèmes ne sont pas jugées à l&rsquo;œil. Un script parcourt le
fichier de jetons, résout chaque référence, et calcule le rapport de contraste
de chaque paire selon la formule des règles du W3C.</p>
<p><strong>54 paires mesurées, toutes au-dessus de leur seuil.</strong> Le texte courant
atteint 16,46:1 en thème clair et 15,59:1 en thème sombre, soit au-delà du
niveau AAA, qui demande 7:1. La marge la plus étroite est le contour d&rsquo;un champ
de saisie sur une fiche, à 3,8:1 pour un seuil de 3:1.</p>
<p>Le même script vérifie que les deux déclarations du thème sombre, celle qui
suit le réglage du système et celle qui suit un choix explicite, ne divergent
pas. Une duplication non vérifiée finit toujours par diverger.</p>
<div class="titre-avec-ancre">
  <h3 id="des-garde-fous-qui-arrêtent-la-construction">Des garde-fous qui arrêtent la construction</h3>
  
</div>
<p>Certaines erreurs ne produisent pas d&rsquo;avertissement : elles empêchent le site
d&rsquo;être produit.</p>
<ul>
<li>Une <strong>image sans texte de remplacement</strong> arrête la construction. La sortie de
secours pour une image vraiment décorative demande de l&rsquo;écrire noir sur
blanc, donc un oubli et une décision ne se ressemblent pas.</li>
<li>Un <strong>nom d&rsquo;icône inconnu</strong> arrête la construction. Le fichier qui déclare les
icônes est aussi celui qui engendre le tableau plus bas : une icône ne peut
donc pas exister sans sa description.</li>
<li>Une <strong>entrée de navigation sans adresse</strong> arrête la construction, plutôt que
de produire un lien mort répété sur chaque page.</li>
<li>Un <strong>lien dont le texte est vague</strong> ou qui affiche une URL nue déclenche un
avertissement nommant le fichier fautif.</li>
</ul>
<div class="titre-avec-ancre">
  <h3 id="ce-qui-a-été-parcouru-à-la-main">Ce qui a été parcouru à la main</h3>
  
</div>
<p>Le 2 août 2026, par lecture de l&rsquo;arbre d&rsquo;accessibilité du navigateur et mesure
du rendu réel.</p>
<table caption="Résultats de la vérification du 2 août 2026">
	<thead>
			<tr>
					<th>Ce qui a été vérifié</th>
					<th>Résultat</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Arrêts de tabulation sur un billet complet, de bout en bout</td>
					<td>52, dans l&rsquo;ordre du document</td>
			</tr>
			<tr>
					<td>Attributs <code>tabindex</code> positifs, qui désordonnent le parcours</td>
					<td>aucun</td>
			</tr>
			<tr>
					<td>Points de repère sans nom</td>
					<td>aucun</td>
			</tr>
			<tr>
					<td>Bannières et zones <code>main</code> par page</td>
					<td>une seule de chaque</td>
			</tr>
			<tr>
					<td>Sauts de niveau dans le plan de titres</td>
					<td>aucun</td>
			</tr>
			<tr>
					<td>Police effectivement chargée</td>
					<td>Atkinson Hyperlegible Next</td>
			</tr>
			<tr>
					<td>Taille du texte courant</td>
					<td>16 px au minimum</td>
			</tr>
			<tr>
					<td>Interligne du texte courant</td>
					<td>1,6</td>
			</tr>
			<tr>
					<td>Caractères par ligne</td>
					<td>65</td>
			</tr>
			<tr>
					<td>Défilement horizontal de la page à 320 px de large</td>
					<td>aucun</td>
			</tr>
			<tr>
					<td>Cibles interactives sous 24 px</td>
					<td>aucune, hors liens en pleine phrase, que le critère exempte</td>
			</tr>
	</tbody>
</table>
<p>Le seul contenu qui dépasse 320 pixels est l&rsquo;intérieur des blocs de code, dans
une zone qui défile et qu&rsquo;on atteint au clavier. Les règles du W3C autorisent
explicitement le défilement horizontal pour ce qui exige une disposition en
deux dimensions.</p>
<p>La recherche a été essayée : le compte de résultats est annoncé une seule fois,
quand il se stabilise ; le pluriel s&rsquo;accorde ; cocher un filtre réannonce le
nouveau compte ; une requête sans résultat propose quatre chemins réels ; et le
bouton « Effacer la recherche » rend le focus au champ.</p>
<p>Les deux thèmes ont été mesurés sur le rendu réel, et les chiffres obtenus sont
identiques au centième à ceux calculés par le script.</p>
<div class="titre-avec-ancre">
  <h3 id="ce-qui-na-pas-été-vérifié">Ce qui n&rsquo;a pas été vérifié</h3>
  
</div>
<div class="encadre encadre--avertissement" role="note">
    <p class="encadre__titre"><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m10.3 3.9-8.5 14.2A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/>
<path d="M12 9.5v4"/>
<path d="M12 17.2h.01"/>
</svg>Avertissement
    </p>
    <p><strong>Aucun test avec un vrai lecteur d&rsquo;écran n&rsquo;a encore été consigné ici.</strong></p>
<p>La vérification décrite plus haut passe par l&rsquo;arbre d&rsquo;accessibilité du
navigateur, qui est solide mais qui n&rsquo;est pas <abbr title="NonVisual Desktop Access, un lecteur d&#39;écran libre pour Windows">NVDA</abbr>
,
ni le Narrateur de Windows, ni <span lang="en">VoiceOver</span>
.
Ces logiciels ont chacun leurs habitudes, et un site correct dans l&rsquo;arbre peut
encore surprendre à l&rsquo;oreille.</p>
<p>Le standard québécois demande de nommer les technologies d&rsquo;assistance
employées pour la vérification, avec leurs versions. Cette ligne restera vide
tant qu&rsquo;un test réel n&rsquo;aura pas eu lieu, plutôt que d&rsquo;être remplie par
anticipation.</p>
  </div><div class="titre-avec-ancre">
  <h2 id="les-icônes-du-site">Les icônes du site</h2>
  
</div>
<p>Le standard demande que les icônes employées soient décrites. Les voici toutes.</p>
<p>Aucune ne porte seule une information : chacune accompagne un texte qui dit la
même chose, de sorte que le sens survit si le dessin n&rsquo;est pas perçu.</p>
<div class="tableau-defilant" role="region"
  aria-label="Description de toutes les icônes du site" tabindex="0">
  <table>
    <caption>
      Les 13 icônes du site, ce qu'elles représentent et
      où elles apparaissent. Toutes sont décoratives : chacune accompagne un
      texte qui porte le même sens, de sorte qu'aucune information ne dépend
      d'un dessin.
    </caption>
    <thead>
      <tr>
        <th scope="col">Icône</th>
        <th scope="col">Nom</th>
        <th scope="col">Ce qu'elle représente</th>
        <th scope="col">Où elle apparaît</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M9.5 18.5h5"/>
<path d="M10.5 21.5h3"/>
<path d="M15.1 14c.2-1 .7-1.7 1.4-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.8 1.2 1.5 1.4 2.5"/>
</svg></td>
        <th scope="row">Astuce</th>
        <td>Une ampoule vue de face, avec deux petits traits horizontaux sous le culot. Le mot « Astuce » est écrit à côté.</td>
        <td>Devant un encadré de conseil dans un billet.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M7.86 2.5h8.28L22 8.36v8.28L16.14 22.5H7.86L2 16.64V8.36z"/>
<path d="M12 8v4.5"/>
<path d="M12 16.2h.01"/>
</svg></td>
        <th scope="row">Attention</th>
        <td>Un octogone régulier, la forme d&#39;un panneau d&#39;arrêt, contenant un point d&#39;exclamation. Le mot « Attention » est écrit à côté.</td>
        <td>Devant un encadré qui signale un risque réel dans un billet.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m10.3 3.9-8.5 14.2A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/>
<path d="M12 9.5v4"/>
<path d="M12 17.2h.01"/>
</svg></td>
        <th scope="row">Avertissement</th>
        <td>Un triangle aux coins arrondis, pointe en haut, contenant un point d&#39;exclamation. Le mot « Avertissement » est écrit à côté, et l&#39;encadré porte aussi une bordure plus épaisse : trois signaux, dont deux survivent à l&#39;absence de couleur.</td>
        <td>Devant un encadré qui prévient d&#39;une conséquence dans un billet.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m9 18 6-6-6-6"/>
</svg></td>
        <th scope="row">Vers la page suivante</th>
        <td>Un chevron simple pointant vers la droite. Le libellé « Page suivante » est écrit à côté.</td>
        <td>Dans le bouton « Page suivante » de la pagination.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m15 18-6-6 6-6"/>
</svg></td>
        <th scope="row">Vers la page précédente</th>
        <td>Un chevron simple pointant vers la gauche, comme la pointe d&#39;une flèche sans sa hampe. Le libellé « Page précédente » est écrit à côté.</td>
        <td>Dans le bouton « Page précédente » de la pagination.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"/>
</svg></td>
        <th scope="row">Confirmation</th>
        <td>Une coche, trait descendant court puis trait montant long. Le mot « Copié » apparaît en même temps et est annoncé dans une région live, donc la coche n&#39;est qu&#39;un doublon visuel.</td>
        <td>Remplace l&#39;icône de copie pendant les deux secondes qui suivent une copie réussie.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="9" y="9" width="13" height="13" rx="2"/>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>
</svg></td>
        <th scope="row">Copier</th>
        <td>Deux rectangles aux coins arrondis qui se chevauchent, celui du dessus légèrement décalé vers le bas à droite, image d&#39;un document dupliqué.</td>
        <td>Dans le bouton de copie d&#39;un bloc de code.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M4 11a9 9 0 0 1 9 9"/>
<path d="M4 4a16 16 0 0 1 16 16"/>
<circle cx="5" cy="19" r="1.4" fill="currentColor" stroke="none"/>
</svg></td>
        <th scope="row">Flux RSS</th>
        <td>Un point plein en bas à gauche d&#39;où partent deux arcs concentriques vers le haut à droite, comme une onde qui se propage. C&#39;est le symbole usuel des flux de syndication depuis les années 2000.</td>
        <td>Lien vers un flux de syndication, dans le pied de page et à côté des flux de catégorie.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M20.5 4.5v10a1 1 0 0 1-1 1H8l-4 4v-15a1 1 0 0 1 1-1h14.5a1 1 0 0 1 1 1z"/>
<path d="M12.25 6.5v3.5"/>
<path d="M12.25 12.6h.01"/>
</svg></td>
        <th scope="row">Important</th>
        <td>Une bulle de parole rectangulaire avec une pointe en bas à gauche, contenant un point d&#39;exclamation. Le mot « Important » est écrit à côté.</td>
        <td>Devant un encadré à ne pas manquer dans un billet.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M15 3h6v6"/>
<path d="M10 14 21 3"/>
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/>
</svg></td>
        <th scope="row">Lien vers un autre site</th>
        <td>Un carré dont le coin supérieur droit est ouvert, avec une flèche qui en sort en diagonale vers le haut à droite. Elle signale que la destination est ailleurs. Le texte « site externe », réservé au lecteur d&#39;écran, dit la même chose, donc l&#39;information ne dépend jamais du dessin.</td>
        <td>Accolée à tout lien qui quitte le site.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/>
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>
</svg></td>
        <th scope="row">Lien permanent vers une section</th>
        <td>Deux maillons de chaîne ovales entrelacés en diagonale. Le lien porte comme nom accessible « Lien permanent vers la section », suivi du titre de la section, donc sa destination est annoncée en toutes lettres.</td>
        <td>À la fin de chaque titre de section dans un billet.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="9.5"/>
<path d="M12 16.5v-5"/>
<path d="M12 7.9h.01"/>
</svg></td>
        <th scope="row">Note</th>
        <td>Un cercle contenant un « i » minuscule, le point au-dessus de la barre. Le mot « Note » est écrit à côté, en toutes lettres.</td>
        <td>Devant un encadré d&#39;information dans un billet.</td>
      </tr>
      <tr>
        <td><svg class="icone" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="11" cy="11" r="7"/>
<path d="m21 21-4.3-4.3"/>
</svg></td>
        <th scope="row">Recherche</th>
        <td>Une loupe : un cercle avec un manche court partant en diagonale vers le bas à droite. Le bouton porte le mot « Rechercher » à côté, donc la loupe ne porte rien à elle seule.</td>
        <td>Dans le bouton d&#39;envoi du formulaire de recherche.</td>
      </tr>
    </tbody>
  </table>
</div>

<div class="titre-avec-ancre">
  <h2 id="ce-que-le-site-fait-pour-vous">Ce que le site fait pour vous</h2>
  
</div>
<ul>
<li><strong>Il suit votre réglage d&rsquo;apparence.</strong> Clair ou sombre selon votre système,
dès la première image affichée, sans éclair blanc au chargement. Un
sélecteur dans l&rsquo;en-tête permet de choisir autrement, et le choix est retenu.</li>
<li><strong>Il respecte votre taille de police.</strong> Aucune taille n&rsquo;est figée en pixels :
tout suit le réglage de votre navigateur.</li>
<li><strong>Il ne bloque pas le zoom.</strong> À 400 %, le contenu se replie en une colonne
sans défilement horizontal.</li>
<li><strong>Il s&rsquo;arrête si vous demandez moins de mouvement.</strong> Sous
<span lang="en">prefers-reduced-motion</span>
, toutes les
transitions tombent à zéro. Aucune information ne dépend d&rsquo;une animation.</li>
<li><strong>Il fonctionne sans JavaScript.</strong> Tout se lit et se parcourt. Seules la
recherche et le bouton de copie du code en ont besoin, et ils se cachent
plutôt que de rester inertes.</li>
<li><strong>Il ne vous suit pas.</strong> Aucun témoin, aucune analyse, aucune ressource
chargée depuis un autre serveur. Les polices sont servies d&rsquo;ici.</li>
<li><strong>Il s&rsquo;imprime correctement.</strong> La navigation disparaît, et l&rsquo;adresse des
liens externes part avec le papier.</li>
</ul>
<div class="titre-avec-ancre">
  <h2 id="dernière-évaluation">Dernière évaluation</h2>
  
</div>
<p>Le 2 août 2026.</p>
]]></content:encoded></item><item><title>Plan du site</title><link>https://beta.lfortin.ovh/plan-du-site/</link><guid isPermaLink="true">https://beta.lfortin.ovh/plan-du-site/</guid><dc:creator>Louis Fortin</dc:creator><description>Toutes les pages du site sur une seule page, dans leur hiérarchie.</description><content:encoded><![CDATA[<p>Cette page liste tout ce que contient le site, dans sa structure réelle. Elle
existe pour les gens, pas pour les moteurs de recherche : ceux-là ont leur
propre fichier, <code>sitemap.xml</code>.</p>
<p>C&rsquo;est un des moyens que les règles du W3C reconnaissent pour atteindre
n&rsquo;importe quelle page autrement qu&rsquo;en suivant la navigation, avec la recherche
et les liens entre pages.</p>
]]></content:encoded></item><item><title>Statistiques</title><link>https://beta.lfortin.ovh/statistiques/</link><guid isPermaLink="true">https://beta.lfortin.ovh/statistiques/</guid><dc:creator>Louis Fortin</dc:creator><description>Tout ce que le site sait compter sur lui-même, recalculé à chaque génération.</description><content:encoded><![CDATA[<p>Chaque chiffre de cette page est calculé au moment où le site est construit, à
partir de son contenu réel. Rien n&rsquo;est saisi à la main, rien n&rsquo;est mis en
cache, et il n&rsquo;y a pas une ligne de JavaScript : la page que vous lisez est le
résultat du dernier passage du générateur.</p>
<p>Chaque graphique est un vrai tableau, avec sa légende et ses en-têtes. Les
barres colorées sont un ornement calculé à partir des mêmes nombres. Retirez
tous les styles de cette page : elle reste entière.</p>
]]></content:encoded></item></channel></rss>