:root {
--always-hide-trailing-spine: 0;
--thread-expand-delay: 0.15s;
--thread-collapse-delay: 0.3s;
--thread-animation-speed: 0.4s;
}
#channels ul[role=group] li {
display: block !important;
max-height: 0;
opacity: 0;
overflow: hidden;
list-style: none;
pointer-events: none;
transform: scaleY(0);
transform-origin: top;
will-change: transform, opacity, max-height;
transition:
max-height var(--thread-animation-speed) ease,
transform var(--thread-animation-speed) ease,
opacity var(--thread-animation-speed) ease;
transition-delay: var(--thread-collapse-delay);
}
#channels li[class$=containerDefault]:hover + li[class$=container] ul[role=group] li,
#channels li[class$=selected] + li[class$=container] ul[role=group] li,
#channels ul[role=group]:hover li,
#channels ul[role=group] li[class$=selected] {
max-height: 40px;
opacity: 1;
transform: scaleY(1);
pointer-events: auto;
transition-delay: var(--thread-expand-delay);
}
#channels ul[role=group] li [class$=invertedSpine] {
opacity: 0 !important;
transition: opacity 0.2s ease;
}
#channels ul[role=group]:hover li [class$=invertedSpine],
#channels li[class$=containerDefault]:hover + li[class$=container] [class$=invertedSpine],
#channels li[class$=selected] + li[class$=container] [class$=invertedSpine] {
opacity: calc(1 - var(--always-hide-trailing-spine)) !important;
}
#channels ul[role=group] {
contain: paint;
}
Variables do what they sound like they do. If the channel is selected the threads will remain expanded. If the thread is selected only it remains expanded. Hovering will reveal all currently followed threads for that channel.