/* ============================================================
   LE SIGNE DE L'OMÉGA — feuille du composant partagé
   (Codex `symbole-omega-interface.md`, décision de Boris du 29 août).

   ⚠️ CETTE FEUILLE N'EST SCOPÉE SOUS AUCUNE RACINE, et c'est délibéré : le
   signe sert la coque du Jeu, la fenêtre des Omégas, les cartes, les bilans et
   les surfaces du Commun — des pages qui n'ont pas la même racine, dont
   certaines en Bootstrap pur. La même leçon que `_aide_page` du poste fixe.
   Le préfixe `pz-omega-` est donc son seul isolant : on ne l'emprunte pas.
   ============================================================ */

.pz-omega {
  display: inline-flex;
  align-items: center;
  gap: 7px; /* « la pastille conserve davantage d'air après le signe qu'avant le nombre » */
  line-height: 1;
}

.pz-omega-nombre {
  font-family: "Roboto Slab", Georgia, serif;
  font-weight: 700;
  color: var(--pz-violet-deep, #6d1a5c);
}

.pz-omega-signe { display: block; overflow: visible; }

/* ⚠️ LE TRAIT EST PLUS CLAIR QUE LE POINT (contrat §2), et ce n'est pas une
   nuance d'esthète : à 32 px de large, un point de la même teinte que son
   tracé disparaît dans les virages. C'est le point qui porte le mouvement,
   donc le sens — il doit rester le plus lisible des deux. */
.pz-omega-trace {
  fill: none;
  stroke: var(--pz-violet, #a20b86);
  stroke-width: 1.6;
  opacity: .55;
}
.pz-omega-point,
.pz-omega-point-fixe { fill: var(--pz-violet-deep, #6d1a5c); }

/* Le point mobile parcourt le tracé. ⚠️ LE CHEMIN EST RECOPIÉ ICI, et c'est la
   seule duplication de ce composant : `offset-path` ne sait pas viser un
   `<path>` du document. Elle est bornée à deux endroits d'un même lot, et le
   banc compare les deux chaînes — une divergence rougit au lieu de se voir
   à l'œil, un jour, sur un point qui glisse à côté de sa courbe. */
.pz-omega-point {
  offset-path: path("M20,10 C20,3 31,3 31,10 C31,17 20,17 20,10 C20,3 9,3 9,10 C9,17 20,17 20,10 Z");
  offset-rotate: 0deg;
  animation: pz-omega-course 3.6s linear infinite;
}
.pz-omega-point-fixe { display: none; }

@keyframes pz-omega-course { to { offset-distance: 100%; } }

/* ⚠️ TROIS CHEMINS MÈNENT AU MÊME REPLI, ET C'EST VOULU.
   · `prefers-reduced-motion` — contrat §4 : « le point mobile est remplacé par
     un point violet fixe au croisement » ;
   · un navigateur sans `offset-path` — sans cette garde, le point mobile
     resterait à l'origine du SVG, en haut à gauche, hors du dessin ;
   · la version statique demandée dans les tables denses (`anime: false`),
     « pour éviter une nuée de mouvements ».
   Les trois aboutissent au MÊME dessin, déjà prévu par le contrat. Une
   dégradation qui tombe sur un état pensé n'est pas une dégradation. */
@media (prefers-reduced-motion: reduce) {
  .pz-omega .pz-omega-point { display: none; }
  .pz-omega .pz-omega-point-fixe { display: block; }
}
@supports not (offset-path: path("M0,0 L1,1")) {
  .pz-omega .pz-omega-point { display: none; }
  .pz-omega .pz-omega-point-fixe { display: block; }
}
.pz-omega--fixe .pz-omega-point { display: none; }
.pz-omega--fixe .pz-omega-point-fixe { display: block; }

/* Les trois tailles du contrat §2. */
.pz-omega--entete .pz-omega-signe { width: 38px; height: 20px; }
.pz-omega--entete .pz-omega-nombre { font-size: 17px; }
.pz-omega--mobile .pz-omega-signe { width: 32px; height: 18px; }
.pz-omega--mobile .pz-omega-nombre { font-size: 13px; }
.pz-omega--titre .pz-omega-signe { width: 58px; height: 32px; }
.pz-omega--titre .pz-omega-nombre { font-size: 22px; }

/* ⚠️ L'EN-TÊTE RÉTRÉCIT AVEC L'ÉCRAN. Le contrat donne deux tailles pour la
   même surface — desktop et mobile — donc une bascule, pas deux composants à
   choisir dans la vue : un appelant qui doit connaître la largeur de l'écran
   finit toujours par se tromper d'un endroit. */
@media (max-width: 767px) {
  .pz-omega--entete .pz-omega-signe { width: 32px; height: 18px; }
  .pz-omega--entete .pz-omega-nombre { font-size: 13px; }
}
