Mushroom Cards - Build a beautiful dashboard easily šŸ„ (Part 1)

How do I add script ā†’ last changed (last time the script was called) to a template card secondary information?
Thanks

Iā€™m having the same problems you experienced but Iā€™m on the correct theme i believe. Can you elaborate what you had to do to fix it?

type: custom:stack-in-card
mode: horizontal
cards:
  - type: custom:mushroom-light-card
    entity: light.br_desk_lightbulb
    layout: vertical
    card_mod:
      style: |
        mushroom-state-info {
          text-align: start;
          width: fit-content;
        }
        ha-card {
          width: 66px;
        }
  - type: custom:my-slider-v2
    entity: light.br_desk_lightbulb
    vertical: true
    styles:
      card:
        - height: 147px
        - width: 42px
      container:
        - border-radius: 12px
      track:
        - background: >
            [[[ if (entity.state == "off") return
            "rgba(var(--mush-rgb-disabled), 0.2)";
             else return "rgba(var(--mush-rgb-amber), 0.2)";
            ]]]
      progress:
        - background: >
            [[[ if (entity.state == "off") return
            "rgb(var(--mush-rgb-disabled))";
             else return "rgb(var(--mush-rgb-amber))";
            ]]]
      thumb:
        - width: 0px
    card_mod:
      style: |
        ha-card {
          padding: 12px 12px 12px;
          margin-left: auto;
        }
card_mod:
  style: |
    ha-card {
      height: 171px;
    }

In this file;

I replaced everything with this;

Mushroom:
  # HA variables
  ha-card-box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.16)
  ha-card-border-radius: 12px
  # Mushroom layout
  mush-spacing: 12px
  # Title
  mush-title-padding: 24px 12px 16px
  mush-title-spacing: 12px
  mush-title-font-size: 24px
  mush-title-font-weight: normal
  mush-title-line-height: 1.2
  # Subtitle
  mush-subtitle-font-size: 16px
  mush-subtitle-font-weight: normal
  mush-subtitle-line-height: 1.2
  # Card
  mush-card-primary-font-size: 14px
  mush-card-secondary-font-size: 12px
  mush-card-primary-font-weight: bold
  mush-card-secondary-font-weight: bolder
  mush-card-primary-line-height: 1.5
  mush-card-secondary-line-height: 1.5
  # Chip
  mush-chip-spacing: 8px
  mush-chip-padding: 0 0.25em
  mush-chip-height: 36px
  mush-chip-border-radius: 18px
  mush-chip-font-size: 0.3em
  mush-chip-font-weight: bold
  mush-chip-icon-size: 0.5em
  mush-chip-avatar-padding: 0.1em
  mush-chip-avatar-border-radius: 50%
  mush-chip-box-shadow: var(--ha-card-box-shadow)
  mush-chip-background: var(--ha-card-background)
  # Control
  mush-control-border-radius: 12px
  mush-control-height: 42px
  mush-control-button-ratio: 1
  mush-control-icon-size: 0.5em
  # Slider
  mush-slider-threshold: 10
  # Badge
  mush-badge-size: 16px
  mush-badge-icon-size: 0.75em
  mush-badge-border-radius: 50%
  # Icon
  mush-icon-border-radius: 50%
  mush-icon-size: 42px
  mush-icon-symbol-size: 0.5em
  # Colors
  mush-rgb-red: 244, 67, 54
  mush-rgb-pink: 233, 30, 99
  mush-rgb-purple: 156, 39, 176
  mush-rgb-deep-purple: 103, 58, 183
  mush-rgb-indigo: 63, 81, 181
  mush-rgb-blue: 33, 150, 243
  mush-rgb-light-blue: 3, 169, 244
  mush-rgb-cyan: 0, 188, 212
  mush-rgb-teal: 0, 150, 136
  mush-rgb-green: 76, 175, 80
  mush-rgb-light-green: 139, 195, 74
  mush-rgb-lime: 205, 220, 57
  mush-rgb-yellow: 255, 235, 59
  mush-rgb-amber: 255, 193, 7
  mush-rgb-orange: 255, 152, 0
  mush-rgb-deep-orange: 255, 87, 34
  mush-rgb-brown: 121, 85, 72
  mush-rgb-grey: 158, 158, 158
  mush-rgb-blue-grey: 96, 125, 139
  mush-rgb-black: 0, 0, 0
  mush-rgb-white: 255, 255, 255

  mush-rgb-info: var(--mush-rgb-blue)
  mush-rgb-success: var(--mush-rgb-green)
  mush-rgb-warning: var(--mush-rgb-orange)
  mush-rgb-danger: var(--mush-rgb-red)

  mush-rgb-state-fan: var(--mush-rgb-green)
  mush-rgb-state-light: var(--mush-rgb-orange)
  mush-rgb-state-entity: var(--mush-rgb-blue)
  mush-rgb-state-switch: var(--mush-rgb-blue)

  mush-rgb-state-alarm-disarmed: var(--mush-rgb-info)
  mush-rgb-state-alarm-armed: var(--mush-rgb-success)
  mush-rgb-state-alarm-triggered: var(--mush-rgb-danger)

  mush-rgb-state-person-home: var(--mush-rgb-success)
  mush-rgb-state-person-not-home: var(--mush-rgb-danger)
  mush-rgb-state-person-zone: var(--mush-rgb-info)
  mush-rgb-state-person-unknown: var(--mush-rgb-grey)

  mush-rgb-state-cover-open: var(--mush-rgb-blue)
  mush-rgb-state-cover-closed: var(--mush-rgb-disabled)

  mush-rgb-state-climate-auto: var(--mush-rgb-green);
  mush-rgb-state-climate-cool: var(--mush-rgb-blue);
  mush-rgb-state-climate-dry: var(--mush-rgb-orange);
  mush-rgb-state-climate-fan-only: var(--mush-rgb-blue-grey);
  mush-rgb-state-climate-heat: var(--mush-rgb-deep-orange);
  mush-rgb-state-climate-heat-cool: var(--mush-rgb-green);
  mush-rgb-state-climate-idle: var(--mush-rgb-grey);
  mush-rgb-state-climate-off: var(--mush-rgb-disabled);

  # You must keep this to support light/dark theme
  modes:
    light:
      mush-rgb-disabled: 189, 189, 189
    dark:
      mush-rgb-disabled: 111, 111, 111

Then I selected the Mushrrom theme

1 Like

Worked perfectly! Thank you!

Follow-up Idea for this post:

@rhysb Do you think itā€™s possibile to combine the my-slider-card-v2 + the mushroom light card and maybe the card-mod to put the slider on the right side?

Proposed design:

I did some playing around with all the my-slider-card-v2 and everytime I try it I run into the same problem that I canā€™t place the my-slider-card-v2 within the mushroom entity card. If i could figure that peice of the puzzle out I think it could flow easily.

Test code:

type: custom:stack-in-card
mode: horizontal
cards:
  - type: custom:mushroom-light-card
    entity: light.lr_light_group
    name: All Living Room Lights
    show_brightness_control: true
    use_light_color: true
    show_color_control: true
    layout: vertical
    card_mod:
      style: |
        mushroom-state-info {
          text-align: start;
          width: fit-content;
        }
        ha-card {
          width: 66px;
        }
  - type: custom:my-slider-v2
    entity: light.lr_light_group
    vertical: true
    styles:
      card:
        - height: 147px
        - width: 42px
      container:
        - border-radius: 12px
      track:
        - background: >
            [[[ if (entity.state == "off") return
            "rgba(var(--mush-rgb-disabled), 0.2)";
             else return "rgba(var(--mush-rgb-amber), 0.2)";
            ]]]
      progress:
        - background: >
            [[[ if (entity.state == "off") return
            "rgb(var(--mush-rgb-disabled))";
             else return "rgb(var(--mush-rgb-amber))";
            ]]]
      thumb:
        - width: 0px
    card_mod:
      style: |
        ha-card {
          padding: 12px 12px 12px;
          margin-left: auto;
        }
card_mod:
  style: |
    ha-card {
      height: 171px;
    }

Other test code:

Notes on this code:

  • conditional card that shows only if the light isnā€™t unavailable
  • within that is a grid that shows the light + switch group for group control
  • within each group is the pop-up-card that shows all the individual entities for individual control

Goal in mind: On mobile, the slider is too small to dial in desired amounts and if I can move the slider like in my proposed design, hopefully Itā€™ll display better on mobile and enable finer detailed controls while maintaining individual control as well via popup. Best of both worlds I guess.

square: false
columns: 2
type: grid
cards:
  - type: conditional
    conditions:
      - entity: light.lr_light_group
        state_not: unavailable
    card:
      type: custom:stack-in-card
      cards:
        - type: custom:layout-card
          layout_type: custom:grid-layout
          layout:
            grid-template-columns: auto 42px
            margin: '-4px -4px -8px -4px;'
          cards:
            - type: custom:mushroom-light-card
              entity: light.lr_light_group
              name: 'All Living Room Lights '
              show_brightness_control: true
              use_light_color: true
              show_color_control: true
              show_color_temp_control: true
              icon: mdi:sofa-outline
              layout: vertical
              hold_action:
                action: toggle
              tap_action:
                action: fire-dom-event
                browser_mod:
                  service: browser_mod.popup
                  data:
                    title: All Living Room Lights
                    content:
                      type: custom:stack-in-card
                      cards:
                        - type: custom:mushroom-light-card
                          entity: light.lr_couch_lightbulb
                          name: 'Couch Lightbulb '
                          show_brightness_control: true
                          use_light_color: true
                          show_color_control: true
                          show_color_temp_control: true
                          collapsible_controls: true
                          icon: mdi:sofa
                          tap_action:
                            action: toggle
                          card_mod:
                            style: |
                              ha-card {
                                padding: 8px 24px !important;
                              }
                        - type: custom:mushroom-light-card
                          entity: light.lr_porch_lightbulb
                          name: Porch Lightbulb
                          show_brightness_control: true
                          use_light_color: true
                          show_color_control: true
                          show_color_temp_control: true
                          collapsible_controls: true
                          icon: mdi:outdoor-lamp
                          tap_action:
                            action: toggle
                          card_mod:
                            style: |
                              ha-card {
                                padding: 8px 24px !important;
                              }
                        - type: custom:mushroom-light-card
                          entity: light.lr_small_couch_lightbulb
                          name: 'Small Couch Lightbulb '
                          show_brightness_control: true
                          use_light_color: true
                          show_color_control: true
                          show_color_temp_control: true
                          collapsible_controls: true
                          icon: mdi:sofa-single-outline
                          tap_action:
                            action: toggle
                          card_mod:
                            style: |
                              ha-card {
                                padding: 8px 24px !important;
                              }
                        - type: custom:mushroom-light-card
                          entity: light.lr_small_porch_lightbulb
                          name: 'Small Porch Lightbulb '
                          show_brightness_control: true
                          use_light_color: true
                          show_color_control: true
                          show_color_temp_control: true
                          collapsible_controls: true
                          icon: mdi:coach-lamp
                          tap_action:
                            action: toggle
                          card_mod:
                            style: |
                              ha-card {
                                padding: 8px 24px !important;
                              }
                        - type: custom:mushroom-light-card
                          entity: light.lr_tv_light_bars
                          name: TV Light Bars
                          show_brightness_control: true
                          use_light_color: true
                          show_color_control: true
                          show_color_temp_control: true
                          collapsible_controls: true
                          icon: mdi:led-strip
                          tap_action:
                            action: toggle
                          card_mod:
                            style: |
                              ha-card {
                                padding: 8px 24px !important;
                              }
                              ha-card {
                                    --badge-size: 0px;
                                  }
                    layout: vertical
                    card_mod:
                      style: |
                        ha-card {
                          background: none;
                          --ha-card-box-shadow: 0px;
                        }
  - type: custom:stack-in-card
    cards:
      - type: custom:layout-card
        layout_type: custom:grid-layout
        layout:
          grid-template-columns: auto 42px
          margin: '-4px -4px -8px -4px;'
        cards:
          - type: custom:mushroom-entity-card
            entity: switch.lr_switch_group
            name: 'All Living Room Switches '
            show_brightness_control: true
            use_light_color: true
            icon_color: blue
            icon: mdi:sofa-single
            layout: vertical
            card_mod:
              style: |
                ha-card {
                  background: none;
                  --ha-card-box-shadow: 0px;
                }
            hold_action:
              action: toggle
            tap_action:
              action: fire-dom-event
              browser_mod:
                service: browser_mod.popup
                data:
                  title: All Living Room Switches
                  content:
                    type: grid
                    square: false
                    columns: 2
                    cards:
                      - type: custom:mushroom-entity-card
                        entity: switch.lr_couch_light
                        name: Couch Light (Disabled)
                        icon: mdi:sofa
                        layout: vertical
                        tap_action:
                          action: toggle
                        card_mod:
                          style: |
                            ha-card {
                              --badge-size: 0px;
                            }
                      - type: custom:mushroom-entity-card
                        entity: switch.lr_porch_light_switch
                        name: Porch Light (disabled)
                        icon: mdi:outdoor-lamp
                        layout: vertical
                        tap_action:
                          action: toggle
                        card_mod:
                          style: |
                            ha-card {
                              --badge-size: 0px;
                            }
                      - type: custom:mushroom-entity-card
                        entity: switch.lr_tv
                        name: 'TV '
                        icon: mdi:television-box
                        layout: vertical
                        icon_type: icon
                        tap_action:
                          action: toggle
                      - type: custom:mushroom-entity-card
                        entity: switch.lr_light_bars
                        name: Light Bars
                        layout: vertical
                        icon: mdi:led-strip
                        tap_action:
                          action: toggle
                      - type: custom:mushroom-entity-card
                        entity: switch.lr_vinyl_player
                        name: Vinyl Player (disabled)
                        icon: mdi:album
                        layout: vertical
                        tap_action:
                          action: toggle
                        card_mod:
                          style: |
                            ha-card {
                              --badge-size: 0px;
                            }
                      - type: custom:mushroom-entity-card
                        entity: switch.lr_video_games
                        name: V.G / Air Purifer
                        icon: mdi:video-input-component
                        layout: vertical
                        tap_action:
                          action: toggle
                      - type: conditional
                        conditions:
                          - entity: fan.cr_air_purifier
                            state_not: unavailable
                        card:
                          type: custom:mushroom-fan-card
                          entity: fan.cr_air_purifier
                          icon_animation: true
                          name: 'Air Purifier Fan '
                          icon: mdi:fan
                          layout: vertical
                          secondary_info: state
                          icon_type: entity-picture
                          show_percentage_control: true
                          show_oscillate_control: false
                          collapsible_controls: true
                          tap_action:
                            action: toggle
                          hold_action:
                            action: more-info

I just KNOW the answer is close but I just donā€™t have the knowledge and experience yet on how to configure this the right way.

Could you ā€œphotoshopā€ the card that you want to create? Iā€™m doing the exact same thing here on my end. And I think Iā€™m close to getting it the way I want it.

My suggestion is; start with one horizontal card, followed by two vertical cards.
In the first vertical card, add entities as you wish.
In the second, add the slider.

type: horizontal-stack
cards:
  - type: vertical-stack
    cards:
      - type: custom:mushroom-entity-card
        entity: light.vardagsrum_golvlampa_tv_soffa_light
        name: LƤslampa
        secondary_info: none
        fill_container: false
        tap_action:
          action: toggle
        icon: mdi:floor-lamp
        primary_info: none
      - type: custom:mushroom-entity-card
        entity: light.vardagsrum_golvlampa_tv_soffa_light
        layout: horizontal
        name: LampTitle
        secondary_info: name
        fill_container: false
        tap_action:
          action: toggle
        icon: ''
        icon_type: none
        primary_info: state
  - type: custom:my-slider-v2
    entity: light.vardagsrum_golvlampa_tv_soffa_light
    vertical: true
    styles:
      card:
        - height: 140px
        - width: 35px
      container:
        - border-radius: 12px
      track:
        - background: >
            [[[ if (entity.state == "off") return
            "rgba(var(--mush-rgb-disabled), 0.2)";
             else return "rgba(var(--mush-rgb-amber), 0.2)";
            ]]]
      progress:
        - background: >
            [[[ if (entity.state == "off") return
            "rgb(var(--mush-rgb-disabled))";
             else return "rgb(var(--mush-rgb-amber))";
            ]]]      
      thumb:
        - width: 0px
    card_mod:
      style: |
        ha-card {
          padding: 12px 12px 12px;
          margin-left: auto;
        }
      card_mod:
        style: |
          ha-card {
            height: 140x;
          }

Then when You have it the way you want it, change the first horizontal card to a stack in card instead.

image

This is three cards, nested with custom stack in card in the end.
(I always do the stack-in-card at the very end, so I can see all the other cards malfunctioning up until where I get it the way I want it).

  • The struggle for me right now is that; my left half of the card is two entities cards, stacked vertically. And the second (lower) entity card, I want to align to the BOTTOM of the stack-in-card.

EDIT
Or I might do this

I see what youā€™re saying. Hereā€™s what Iā€™m trying to achieve as one card:
aad0712279e81ccefc03c184815d53954d6b05e8

and then ultimately end up with something like this:

But what I think what would be better and maybe more realistic is this or the same above but stacked onto each other:
Screen Shot 2022-10-17 at 1.31.10 PM

What I currently have:

type: horizontal-stack
cards:
  - type: vertical-stack
    cards:
      - type: custom:mushroom-light-card
        entity: light.lr_light_group
        use_light_color: true
        show_brightness_control: false
        show_color_temp_control: false
        show_color_control: false
        name: Living Room Lights
        collapsible_controls: true
      - type: custom:mushroom-entity-card
        entity: light.lr_light_group
        fill_container: false
        tap_action:
          action: toggle
        icon: ''
        primary_info: name
        name: Living Room Switches
        layout: horizontal
        secondary_info: state
  - type: custom:my-slider-v2
    entity: light.lr_light_group
    vertical: true
    styles:
      card:
        - height: 100px
        - width: 35px
      container:
        - border-radius: 12px
      track:
        - background: >
            [[[ if (entity.state == "off") return
            "rgba(var(--mush-rgb-disabled), 0.2)";
             else return "rgba(var(--mush-rgb-amber), 0.2)";
            ]]]
      progress:
        - background: >
            [[[ if (entity.state == "off") return
            "rgb(var(--mush-rgb-disabled))";
             else return "rgb(var(--mush-rgb-amber))";
            ]]]      
      thumb:
        - width: 0px
    card_mod:
      style: |
        ha-card {
          padding: 12px 12px 12px;
        }
      card_mod:
        style: |
          ha-card {
            height: 140x;
          }

Things that are left Iā€™m still struggling with:

  1. Making the slider match the current color state
  2. ā€œlinkingā€ the slider with the temp + color controls

I think problem 1 will be solved if we can solve problem 2 hopefully.

Other Notes:
3. Not a problem right now but thereā€™s a lot of negative space on the right of the slider card based on this config, Iā€™d like to clean that up after I get the 2 problems fixed above
4. Add in the pop-up cards for individual control like in my ā€œside by sideā€ code above.

Is it possible to make this in Mushroom (taken from Minimalist). Camera feed and Input datetime.

Nest_Camera

Input_datetime

Best Regards
Thekholm

2 Likes

The way I would go about it, is the same approach I presented in the above post; nested cards.
You can split the design into pieces first. From the top;

  1. Entity (Camera) with icon and primary info and secondary info
  2. Picture entity
  3. Entity (Alarm) with icon and primary and secondary info
  4. Entity (minus sign), entity (alarm time) and entity (plus sign).

Nowā€¦
Recreate the cards as individual cards using the horizontal stack card
I.e. 4th bullet point I made, see above

4.1. Start with the Horzontal card
4.2. Add Entity, remove all but ā€œiconā€, set the desired icon
4.3. Add a new entity, remove all but the time
4.4. Finaly add entity, remove all but ā€œiconā€, set the desired icon

Do all this for all bullets points, 1-4.
Show code editor for each and every new card you created.
Copy paste all code together, in order, into a Windows\Notepad or ā€œtext editorā€. Iā€™ll call this the Base

Create a new card, select vertical stack
Select Manual card
Paste the Base into the manual card
Now you have Base 2

Now create a custom:stack-in-card, and pase Base 2 into that card.
You will probably need to use tab or space-bar to make the syntax work, but it will work.

Where can I read more about this? for further information and learning?

and another question can we apply the animations to mushroom template chip?

type: conditional
conditions:
  - entity: switch.irrigation_valves
    state: 'on'
chip:
  type: template
  entity: switch.irrigation_pump_garden
  icon: mdi:sprinkler
  icon_color: '{{ ''light-blue'' if is_state(entity, ''on'') else ''disabled'' }}'
  card_mod:
    style:
      mushroom-shape-icon$: |
        ha-icon { 
          {{ '--icon-animation: sprinkle 2s linear infinite;' if is_state(config.entity, 'on') }}
          transform-origin: 29% 88%; 
        }
        @keyframes sprinkle {
          0%, 15%, 30%, 45%, 60%, 100% { clip-path: inset(0 55% 0 0); transform: rotate(0deg); }
          1%, 16%, 31%, 46% { clip-path: inset(0 0 0 0); transform: rotate(-10deg); }
          6%, 21%, 36%, 51% { transform: rotate(2deg); }
        }
  content_info: none
  tap_action:
    action: toggle
  hold_action:
    action: none
  double_tap_action:
    action: none

Hi,

I will try when I get some time. Great little guide you did, thanks! :grin:

Best regards
Thekholm

You are welcome m8. Iā€™ll try and put together a tutorial with screen captures when I have them time for it.
Peace :dove:

has anyone build a weather dashboard/page using mushroom?
would like to get some inspiration

2 Likes

How do you center primary and secondary text or just one of them using the mushroom template card?

1 Like

How to add a second Badge Icon under the first one?
Screenshot_20221018-142109_Home Assistant

type: custom:mushroom-template-card
primary: TV-Rum
icon: mdi:television
icon_color: '{{ ''orange'' if is_state(entity, ''on'') else ''grey'' }}'
layout: vertical
secondary: '{{ states(''sensor.tv_wave_temperature'') | round(0) }}Ā°C'
badge_icon: mdi:microsoft-xbox
badge_color: green
entity: light.tv_rum
tap_action:
  action: navigate
  navigation_path: /lovelace-mushroom/tvrum-page
hold_action:
  action: toggle
card_mod:
  style:
    .: |
      mushroom-shape-icon {
        display: block;
        margin-left: auto;
        width: 92px;
      }
      mushroom-state-info {
        text-align: start;
      }
      ha-card {
        width: 109px;
        height: 120px;
        margin: auto;
      }
      mushroom-state-item {
        height: 92px;
      }
    mushroom-state-info$: |
      .primary {
        white-space: normal !important;
        overflow: hidden;
      }

Best regards
Thekholm

1 Like

Is there a special theme required? If I use your code (thx for it!), I neither have the background colored nor is the chips bar slightly shaded. Also, all chips icons show up with a border line. Entities were altered, of course. What am I doing wrong?

Iā€™m an idiot. Missed installing card-mod. :grimacing:

1 Like

Thanks Rhysb.
I endend up with this for extending the slider:
style: |
mushroom-state-item {
max-width: 100px !important;
}
I used px instead of fit content as otherwise the sliders would go to the end of the names and not be aligned in the left side.

Furthermore i have change the height of the slider and control buttons to have it more compact.
style: |
ha-card {
ā€“control-height: 30px;
}
mushroom-state-item {
max-width: 100px !important;
}

2 Likes

You can make Mushroom Chips vertical like this:

Mushroom Vertical Chips

type: custom:mushroom-chips-card
chips:
  - type: template
    icon: mdi:mushroom
    icon_color: red
    content: Mushroom
  - type: template
    icon: mdi:mushroom
    icon_color: red
  - type: template
    icon: mdi:mushroom
    icon_color: red
card_mod:
  style: |
    .chip-container {
      flex-flow: column !important;
    }
2 Likes

Iā€™m curious about the input datetime card as well.

The minimalist camera card can be made with a stack-in-card combining a template card (with the icon and camera name) with the usual camera card.

Yes, you can add most of the animations to Chips like this:

type: custom:mushroom-chips-card
chips:
  - type: template
    entity: switch.irrigation_pump_garden
    icon: mdi:sprinkler
    icon_color: '{{ ''light-blue'' if is_state(entity, ''on'') else ''disabled'' }}'
    tap_action:
      action: toggle
    hold_action:
      action: none
    double_tap_action:
      action: none
card_mod:
  style:
    mushroom-template-chip:nth-child(1)$: |
      ha-icon { 
        {{ 'animation: sprinkle 2s linear infinite;' if is_state('switch.irrigation_pump_garden', 'on') }}
        transform-origin: 29% 88%; 
      }
      @keyframes sprinkle {
        0%, 15%, 30%, 45%, 60%, 100% { clip-path: inset(0 55% 0 0); transform: rotate(0deg); }
        1%, 16%, 31%, 46% { clip-path: inset(0 0 0 0); transform: rotate(-10deg); }
        6%, 21%, 36%, 51% { transform: rotate(2deg); }
      }

What are you wanting further info on?