Use interpolate-size and ::details-content transitions so accordions
open and close smoothly when motion is not reduced.
Co-authored-by: Cursor <cursoragent@cursor.com>
background-color: var(--accordion-bg);
border: var(--accordion-border-width) solid var(--accordion-border-color);
+ @media (prefers-reduced-motion: no-preference) {
+ interpolate-size: allow-keywords;
+ }
+
+ &::details-content {
+ block-size: 0;
+ overflow-y: clip;
+ @include transition(content-visibility .2s allow-discrete, block-size .2s);
+ }
+
&:first-of-type {
@include border-top-radius(var(--accordion-border-radius));
// Open state - details[open] applies these styles
&[open] {
+
border-color: var(--theme-border, var(--accordion-border-color));
+ &::details-content {
+ block-size: auto;
+ }
> .accordion-header {
color: var(--theme-fg, var(--accordion-active-color));