/* Des effets sobres, liés aux couleurs du thème et aux préférences de mouvement de l'appareil. */
[data-go-count] { font-variant-numeric: tabular-nums; }
@media (hover: hover) {
  .go-files tr:hover > td:first-child { box-shadow: inset 2px 0 0 var(--ht-primary); }
  .go-catalog-repo:hover { box-shadow: inset 3px 0 0 var(--ht-primary); background: rgba(var(--ht-primary-rgb), .035); }
  .go-catalog-stat:hover { color: var(--ht-heading-color); border-color: rgba(var(--ht-primary-rgb), .65); }
}
@media (prefers-reduced-motion: no-preference) {
  :root:not([data-go-effects="off"]) :is(.go-catalog-stat, .go-catalog-repo, .go-group-chevron) { transition: border-color .18s, box-shadow .18s, background .18s, transform .18s; }
  /* v2.03 : plus d'arrivée en fondu des blocs (la page s'affiche d'un coup) ; les barres poussent vite */
  :root:not([data-go-effects="off"]) .go-grow { animation: go-grow .25s cubic-bezier(.2,.8,.2,1) both; transform-origin: left center; }
  :root[data-ht-style="hud"]:not([data-go-effects="off"]) .go-catalog-stat::before { transition: background-size .2s, opacity .2s; }
  :root[data-ht-style="hud"]:not([data-go-effects="off"]) .go-catalog-stat:hover::before { background-size: 18px 2px, 2px 18px, 18px 2px, 2px 18px; opacity: 1; }
  @keyframes go-arrive { from { opacity: .5; transform: translateY(5px); } to { opacity: 1; transform: none; } }
  @keyframes go-grow { from { transform: scaleX(0); } }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  :root:not([data-go-effects="off"]) .go-catalog-stat:hover { transform: translateY(-2px); box-shadow: 0 5px 18px rgba(var(--ht-primary-rgb), .07); }
}

/* Les effets de page, repris de BugsLog : l'arrivée des blocs, les reflets, la marque, les équerres, les fenêtres.
   Pas de trame ni de bande de balayage sur l'écran. Coupés par « Effets visuels » (menu du compte) ou « réduire les animations ». */
@media (prefers-reduced-motion: no-preference) {
  /* v2.03 : PLUS D'ARRIVÉE DE LA PAGE (chaque bloc en fondu, à son tour : la page mettait près d'une seconde à s'afficher) — comme
     ChartOps v6.95, ne pas la remettre */
  /* les boutons d'action : un reflet qui passe */
  :root:not([data-go-effects="off"]) :is(.btn-primary, .btn-ht-primary):not(.dropdown-toggle) { position: relative; overflow: hidden; }
  :root:not([data-go-effects="off"]) :is(.btn-primary, .btn-ht-primary):not(.dropdown-toggle)::before { content: ""; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.18), transparent); transform: skewX(-18deg); pointer-events: none; }
  :root:not([data-go-effects="off"]) :is(.btn-primary, .btn-ht-primary):not(.dropdown-toggle):hover::before { animation: go-sheen .7s ease-out; }
  /* la marque : un petit décalage chromatique au survol */
  :root:not([data-go-effects="off"]) .ht-brandlink:hover .ht-brand { animation: go-glitch .5s steps(2, jump-none) 1; }
  /* les équerres des cartes s'allongent au survol (style HUD) */
  :root[data-ht-style="hud"]:not([data-go-effects="off"]) :is(.card, .go-repo)::before { transition: background-size .2s; }
  :root[data-ht-style="hud"]:not([data-go-effects="off"]) :is(.card, .go-repo):hover::before { background-size: 16px 2px, 2px 16px, 16px 2px, 2px 16px; }
  /* les choses vivantes : les notifications non lues */
  :root:not([data-go-effects="off"]) .go-bell.on .go-bellnum { animation: go-beacon 2.4s ease-out infinite; }
  /* les fenêtres et les messages */
  :root:not([data-go-effects="off"]) .modal.show .modal-dialog { animation: go-arrive .3s cubic-bezier(.2,.8,.2,1) both; }
  :root:not([data-go-effects="off"]) .go-flash { animation: go-flash-in .45s cubic-bezier(.2,.8,.2,1) both; }
  :root:not([data-go-effects="off"]) .dropdown-menu.show { animation: go-fade .18s ease-out both; }   /* l'opacité seulement : Popper place le menu par transform */
  @keyframes go-sheen { to { left: 130%; } }
  @keyframes go-glitch { 0% { text-shadow: -2px 0 rgba(240,128,134,.8), 2px 0 rgba(80,165,213,.8); transform: translateX(1px); } 50% { text-shadow: 2px 0 rgba(240,128,134,.8), -2px 0 rgba(77,224,176,.8); transform: translateX(-1px); } 100% { text-shadow: none; transform: none; } }
  @keyframes go-beacon { 0% { box-shadow: 0 0 0 0 rgba(var(--ht-danger-rgb), .6); } 70%, 100% { box-shadow: 0 0 0 6px rgba(var(--ht-danger-rgb), 0); } }
  @keyframes go-flash-in { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: none; } }
}
