/* guez.io : rail de lecture + mage (assets/anim/guez-scroll.js), toutes les pages. 2026-10-24.
   Sous la sidebar (z45), le ticker Twitch (z48), le bouton de scroll (z210) et les modales. Aucun clic intercepté.
   Coins carrés, pas de dégradé / halo / flou. */
.gz-mrail {
  position: fixed;
  left: 0;
  right: 84px;
  bottom: env(safe-area-inset-bottom, 0px);
  height: 30px;
  z-index: 38;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  contain: layout style;
}
.gz-mrail * { pointer-events: none !important; border-radius: 0 !important; }
.gz-mrail.is-ready { opacity: 1; visibility: visible; transition: opacity .25s ease; }
/* page trop courte, tiroir mobile ouvert, écran de chargement /player (html.player-is-loading) : rail masqué */
.gz-mrail.is-flat,
html.guez-rail-open .gz-mrail,
html.player-is-loading .gz-mrail { opacity: 0; visibility: hidden; }
/* ticker Twitch : bottom posé en JS (hauteur réellement affichée, cf. syncTicker dans guez-scroll.js) */
.gz-mrail__fill {
  position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
  background: #ff8000; transform-origin: 0 50%; transform: scaleX(0);
}
.gz-mrail__walker { position: absolute; left: 0; bottom: 2px; width: 28px; height: 28px; will-change: transform; }
.gz-mrail__flip { width: 28px; height: 28px; }
.gz-mrail__mage { display: block; width: 28px; height: 28px; }
/* retournement sur le wrapper, jamais sur piix-sprite (qui gère ses propres styles) */
.gz-mrail.is-back .gz-mrail__flip { transform: scaleX(-1); }
.gz-mrail.is-top .gz-mrail__walker { opacity: .55; }
@media (min-width: 768px) {
  /* à droite de la sidebar (200 px, 56 px repliée) */
  body:has(.guez-rail) .gz-mrail { left: 200px; }
  html.guez-rail-collapsed body:has(.guez-rail) .gz-mrail { left: 56px; }
}
@media (max-width: 767px) {
  /* bouton de scroll mobile : right 2.75rem + 2.875rem de large -> on s'arrête 12 px avant */
  .gz-mrail { right: calc(5.625rem + 12px + env(safe-area-inset-right, 0px)); }
}
@media (prefers-reduced-motion: reduce) {
  .gz-mrail.is-ready { transition: none; }
  .gz-mrail__walker { will-change: auto; }
}
@media print { .gz-mrail { display: none !important; } }
