/* Shaker - petite secousse d'appel sur le menu lateral complet
   (#oaka_colonne_sidebar_collapsible), pour suggerer qu'il y a un menu
   entier derriere l'onglet (.sidebar-tab). Declenchee par
   oaka-modules-shaker.js. --------------------------------------------------
   IMPORTANT : une SEULE animation, posee sur le menu (parent) uniquement.
   L'onglet est un enfant positionne en left:100% par rapport a lui : sans
   animation propre, il suit donc le menu AU PIXEL PRES (un enfant herite
   automatiquement du deplacement de son parent), garantissant un onglet
   toujours parfaitement colle au bord du menu. On a essaye de donner a
   l'onglet sa propre animation en plus de celle du menu (pour un effet plus
   marque sur l'icone) : les deux s'additionnaient, et des qu'elles
   n'etaient pas a l'identique au meme instant, un ecart apparaissait entre
   les deux (on voyait a travers). D'ou ce choix : un seul mouvement pour
   tout l'ensemble, rigide, sans ecart possible. */

/* Le menu est cache via translateX(-100%) : on le fait ressortir de 12px
   maximum, tres brievement, puis revenir. */
@keyframes oaka-sidebar-menu-peek {
    0%   { transform: translateX(-100%); }
    15%  { transform: translateX(calc(-100% - 12px)); }
    30%  { transform: translateX(calc(-100% + 10px)); }
    45%  { transform: translateX(calc(-100% - 10px)); }
    60%  { transform: translateX(calc(-100% + 7px)); }
    75%  { transform: translateX(calc(-100% - 5px)); }
    100% { transform: translateX(-100%); }
}

#oaka_colonne_sidebar_collapsible.shaking {
    animation: oaka-sidebar-menu-peek .7s ease;
}

/* Le menu a par ailleurs "transition: transform .35s ease" (pour son
   ouverture/fermeture douce au clic). Le script relance l'animation en
   retirant puis rajoutant ".shaking" toutes les 2.5s : pendant ce micro-
   instant sans la classe, le transform retombe a sa valeur de base, ce que
   cette transition peut intercepter et adoucir a sa maniere EN PLUS de
   l'animation - d'ou le petit "rebond" parasite. On la desactive tant que
   le shaker est arme (pas juste pendant .shaking, pour couvrir aussi ce
   micro-instant entre deux cycles), et pas apres : stopShakeForever()
   retire cette classe des la premiere interaction, pour que l'ouverture/
   fermeture normale du menu retrouve alors sa transition habituelle. */
#oaka_colonne_sidebar_collapsible.oaka-shake-armed {
    transition: none;
}
