[Mon Dashboard] @Guizmos

Bonjour Guizmos.
Peux-tu me communiquer le lien pour ce dashboard. J’aimerai m’en inspirer pour faire le mien.
Merci à toi.

Hello
Je vais regarder pour ajouter le code a mon Github. Je te redis quand il sera dispo
Pour info ce dashboard a quand même légèrement évolué.
J’ai ajouté quelques fonctionnalités et des effets de transparence un peu partout.

Voici le résultat :

Resalut Guizmos,
Je ne veux pas forcement ton dashboard mais savoir qu’elles ont été tes sources car ce qui m’intéresse c’est le type de dashboard qui à l’aspect de homekit. j’ai essayé d’installé homekit-infused 5 de Jimz011 mais je n’obtiens pas le même résultats que lui.https://github.com/jimz011/homekit-infused.
Merci.

Alors j’utilise le thème « Néon » (voir Édit de mon premier post)
Ensuite j’utilise des button-card avec des icônes qui vont bien et animée pour la plupart.
C’est pour cela que mon code devrait t’aider.

Exemple ici d’un button-card :

Screenshot_20220319-134555_Home Assistant
(Dédicace à @Clemalex pour cette icône)

type: custom:button-card
entity: media_player.nvidia_shield
name: Shield
icon: custom
styles:
  name:
    - top: 80%
    - left: 15%
    - position: center
    - color: rgba(240, 240, 240, 0.8)
  card:
    - font-size: 100%
    - background-color: rgba(240, 240, 240, 0.1)
    - border-radius: 15%
    - border-style: solid
    - border-color: rgba(240, 240, 240, 0.3)
    - border-width: 1px
    - box-shadow: true
    - transition: true
  custom_fields:
    icon_tv:
      - top: 4%
      - left: 6%
      - width: 130%
      - position: absolute
      - fill: >
          [[[ return (entity.state === 'standby' || entity.state === 'idle' ||
          entity.state === 'playing' || entity.state === 'on') ? 'rgba(122, 181,
          71)' : 'rgba(255, 255, 255, 0.8)'; ]]]
custom_fields:
  icon_tv: |
    [[[
      const state = (entity.state === 'on' || entity.state === 'home') ? 'animate' : null;
      return `
        <svg viewBox="0 0 50 50">
          <style>
            @keyframes animate {
              from {
                opacity: 0.5;
                transform: scale(0.6);
              }
              100% {
                opacity: 1;
              }
            }
            .animate {
              animation: animate 0.8s cubic-bezier(0.25, 1, 0.5, 1);
              transform-origin: center;
            }
          </style>
          <path class="${state}" d="m 9.2075967,4.7204413 v 1.9636454 c 0.129177,-0.01035 0.259031,-0.017662 0.388868,-0.022063 5.0012413,-0.1685642 8.2599973,4.1010403 8.2599973,4.1010403 0,0 -3.743022,4.550583 -7.642221,4.550583 -0.3573592,0 -0.6924262,-0.0326 -1.0066442,-0.08825 v 1.213489 c 0.268709,0.03417 0.547711,0.05516 0.8384112,0.05516 3.628471,0 6.254211,-1.852683 8.795035,-4.045881 0.421261,0.337387 2.144146,1.157547 2.498683,1.516861 -2.415866,2.022602 -8.046571,3.654255 -11.23856,3.654255 -0.3076812,0 -0.6031282,-0.01893 -0.8935692,-0.04688 v 1.707158 H 23 V 4.7204413 Z m 0,12.8519497 V 16.438882 C 4.7671878,15.88025 3.2477124,10.986456 3.2477124,10.986456 c 0,0 1.9882916,-2.9341912 5.9598843,-3.2378086 V 6.6840867 c -4.3990412,0.353282 -8.2075965,4.0789773 -8.2075965,4.0789773 0,0 2.1567355,6.238256 8.2075965,6.809327 z m 0,-9.8237436 v 1.3155321 c 0.235288,-0.025241 0.474916,-0.041369 0.725336,-0.041369 2.3036823,0 3.6708033,1.7898955 3.6708033,1.7898965 L 11.731102,12.393 C 10.88942,10.989878 10.607522,10.369645 9.2075967,10.200446 V 9.0641795 C 6.5314486,9.3536626 4.9217753,11.138142 4.9217751,11.138142 c 0,0 0.929864,3.488948 4.2858217,4.087251 V 14.188412 C 7.3157335,13.552651 6.7006394,11.344987 6.7006394,11.344987 c 0,0 0.9643032,-1.153062 2.2421963,-1.15833 0.08517,-3.5e-4 0.1714491,0.0028 0.259245,0.01379 0.0013,0 0.0029,0.0027 0.0055,0.0028 v 3.985208 c 0.317273,0.106653 0.671374,0.170991 1.0645613,0.170991 2.732453,0 5.281434,-3.538422 5.281434,-3.538422 0,0 -2.360742,-3.2046112 -5.9571273,-3.0916396 -0.131519,0.00388 -0.26105,0.010892 -0.388868,0.019305 z"/>
        </svg>
      `;
    ]]]
aspect_ratio: 1/1
state:
  - value: 'on'
    styles:
      card:
        - background-color: rgba(255, 255, 255, 0.7)
        - border: 1px rgba(80, 80, 80) solid
      name:
        - color: rgba(0, 0, 0, 0.6)
      icon:
        - color: rgba(122, 181, 71)
  - value: idle
    styles:
      card:
        - background-color: rgba(255, 255, 255, 0.7)
        - border: 1px rgba(80, 80, 80) solid
      name:
        - color: rgba(0, 0, 0, 0.6)
      icon:
        - color: rgba(122, 181, 71)
  - value: standby
    styles:
      card:
        - background-color: rgba(255, 255, 255, 0.7)
        - border: 1px rgba(80, 80, 80) solid
      name:
        - color: rgba(0, 0, 0, 0.6)
      icon:
        - color: rgba(122, 181, 71)
  - value: playing
    styles:
      card:
        - background-color: rgba(255, 255, 255, 0.7)
        - border: 1px rgba(80, 80, 80) solid
      name:
        - color: rgba(0, 0, 0, 0.6)
      icon:
        - color: rgba(122, 181, 71)
tap_action:
  action: fire-dom-event
  browser_mod:
    command: popup
    title: Nvidia SHIELD
    card:
      type: vertical-stack
      cards:
        - type: glance
          style: |
            ha-card {
              --ha-card-background: rgba(240, 240, 240, 0.1);
          entities:
            - entity: script.nvidia_shield_on
              tap_action:
                action: toggle
              name: Allumer
              icon: mdi:power
            - entity: script.nvidia_shield_off
              tap_action:
                action: toggle
              name: Eteindre
              icon: mdi:power
          show_state: false
        - type: conditional
          conditions:
            - entity: media_player.nvidia_shield
              state_not: 'off'
          card:
            type: custom:mini-media-player
            entity: media_player.nvidia_shield
            volume_stateless: false
            toggle_power: true
            artwork: full-cover
            source: full
            info: scroll
            style: |
              ha-card {
                --ha-card-background: rgba(240, 240, 240, 0.1);

Screenshot_20220319-134907_Home Assistant

type: custom:button-card
entity: light.lampe_buanderie_on_off
name: Buanderie
icon: custom
styles:
  icon:
    - top: '-2%'
    - left: 3%
    - width: 40%
    - position: absolute
  name:
    - top: 80%
    - left: 15%
    - position: center
    - color: rgba(240, 240, 240, 0.8)
  card:
    - font-size: 80%
    - background-color: rgba(240, 240, 240, 0.1)
    - border-radius: 15%
    - border-style: solid
    - border-color: rgba(240, 240, 240, 0.3)
    - border-width: 1px
    - box-shadow: true
    - transition: true
  custom_fields:
    icon_hue:
      - top: 18%
      - left: 4.5%
      - width: 45%
      - position: absolute
custom_fields:
  icon_hue: |
    [[[
      const state = entity.state === 'on' ? 'animate' : null;
      return `
        <svg viewBox="0 0 50 50">
          <style>
            @keyframes animate {
              0% {
                transform: scale(0.85);
              }
              20% {
                transform: scale(1.1);
              }
              40% {
                transform: scale(0.95);
              }
              60% {
                transform: scale(1.03);
              }
              80% {
                transform: scale(0.97);
              }
              100% {
                transform: scale(1);
              }
              }
              .animate {
              animation: animate 0.8s;
              transform-origin: center;
            }
          </style>
          <path fill="#9da0a2" d="M27.4 47.3h-4.9s-.7.1-.7.8.4.9.7.9h4.9c.3 0 .7-.1.7-.9s-.7-.8-.7-.8zm3.3-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-3H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9s-.9-.8-.9-.8zm5.2-23.2c-3.3-5.3-7-5.6-10.9-5.6-3.8 0-8.4.4-10.9 5.6-.1.1-.1.3.1.7.4.8 3.3 7.2 3.2 18.8 0 1.1-.1 1.6 0 1.7 0 .1 0 .7 1.1.7h13c1 0 1-.5 1.1-.7v-1.7c-.1-11.6 2.8-18 3.2-18.8.1-.4.1-.5.1-.7"/>
          <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M14.1 15.3c3.4-.3 7-.4 10.9-.4 3.8 0 7.5.2 10.9.4.4-.4.7-.8.9-1.1C39 8.5 38.9 6.5 38.9 6c-.2-4.4-8.4-5-12.1-5h0-3.4c-3.7 0-12 .5-12.1 5 0 .5-.1 2.5 2.1 8.2 0 .3.3.8.7 1.1z"/>
        </svg>
      `;
    ]]]
aspect_ratio: 1/1
state:
  - value: 'on'
    styles:
      card:
        - background-color: rgba(255, 255, 255, 0.8)
        - border: 1px rgba(80, 80, 80) solid
      name:
        - color: rgba(0, 0, 0, 0.6)
      icon:
        - color: var(--button-card-light-color-no-temperature)
hold_action:
  action: more-info
  styles: null
  icon:
    - top: '-2%'
    - left: 3%
    - width: 50%
    - position: absolute
  name:
    - top: 80%
    - left: 15%
    - position: center
  card:
    - font-size: 100%
    - border-radius: 15%
    - box-shadow: true
    - transition: true

1 « J'aime »

https://forum.hacf.fr/t/mon-dashboard-guizmos/5704?u=guizmos

Le code est dispo sur mon Github :wink:

2 « J'aime »

Merci pour le partage et ton boulot

je préfère la dernière pour mobile que tu as fait :slight_smile:

par contre, petite question comment faire pour changer les icônes des buttons card pour être plus précis sur le type d’ampoule

1 « J'aime »

T’as question ne serait pas la même qu’ici ? (va au moins voir ma réponse pour comprendre le fonctionnement… :innocent:)

https://forum.hacf.fr/t/modifier-lumieres-theme-de-mattias-persson/3439

1 « J'aime »

Voila des exemples d’icônes animés.
Tu peux copier coller le code et modifier les entités pour faire des tests.

icon

type: vertical-stack
cards:
  - type: grid
    title: Template
    cards:
      - type: custom:button-card
        entity: switch.lumiere_salon
        name: shade
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_shade:
              - top: 18%
              - left: 8%
              - width: 40%
              - position: absolute
        custom_fields:
          icon_shade: |
            [[[
              const state = entity.state === 'on' ? 'animate' : null;
              return `
                <svg viewBox="0 0 50 50">
                  <style>
                    @keyframes animate {
                      0% {
                        transform: scale(0.85);
                      }
                      20% {
                        transform: scale(1.1);
                      }
                      40% {
                        transform: scale(0.95);
                      }
                      60% {
                        transform: scale(1.03);
                      }
                      80% {
                        transform: scale(0.97);
                      }
                      100% {
                        transform: scale(1);
                      }
                    }
                    .animate {
                      animation: animate 0.8s;
                      transform-origin: center;
                    }
                  </style>
                  <path fill="#9da0a2" d="M26.4 25.6c.6-.3 1.1-.7 1.1-1.3L25 17.9l-2.5 6.4c0 .7.6 1.1 1.1 1.3v20.8h-5.5v2.7h13.7v-2.7h-5.5V25.6z"/>
                  <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M24.6.9l-9.4.5c-.6.1-1.9 0-2.5 2.1s-2.4 9.1-4 16.9c-.2.7-.5 2-.5 2.3s-.4 1.6.9 1.6c.8.1 7.4.3 15.9.3 8.6 0 15.1-.3 15.9-.3 1.3-.1.9-1.3.9-1.6s-.3-1.6-.5-2.3c-1.6-7.8-3.4-14.8-4-16.9s-1.9-2-2.5-2.1c-1.6-.2-6.9-.4-9.4-.5"/>
                </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: light.tz3000_hktqahrq_ts0001_2f2660fe_on_off
        name: hue
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_hue:
              - top: 18%
              - left: 4.5%
              - width: 40%
              - position: absolute
        custom_fields:
          icon_hue: |
            [[[
              const state = entity.state === 'home' ? 'animate' : null;
              return `
                <svg viewBox="0 0 50 50">
                  <style>
                    @keyframes animate {
                      0% {
                        transform: scale(0.85);
                      }
                      20% {
                        transform: scale(1.1);
                      }
                      40% {
                        transform: scale(0.95);
                      }
                      60% {
                        transform: scale(1.03);
                      }
                      80% {
                        transform: scale(0.97);
                      }
                      100% {
                        transform: scale(1);
                      }
                      }
                      .animate {
                      animation: animate 0.8s;
                      transform-origin: center;
                    }
                  </style>
                  <path fill="#9da0a2" d="M27.4 47.3h-4.9s-.7.1-.7.8.4.9.7.9h4.9c.3 0 .7-.1.7-.9s-.7-.8-.7-.8zm3.3-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-3H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9s-.9-.8-.9-.8zm5.2-23.2c-3.3-5.3-7-5.6-10.9-5.6-3.8 0-8.4.4-10.9 5.6-.1.1-.1.3.1.7.4.8 3.3 7.2 3.2 18.8 0 1.1-.1 1.6 0 1.7 0 .1 0 .7 1.1.7h13c1 0 1-.5 1.1-.7v-1.7c-.1-11.6 2.8-18 3.2-18.8.1-.4.1-.5.1-.7"/>
                  <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M14.1 15.3c3.4-.3 7-.4 10.9-.4 3.8 0 7.5.2 10.9.4.4-.4.7-.8.9-1.1C39 8.5 38.9 6.5 38.9 6c-.2-4.4-8.4-5-12.1-5h0-3.4c-3.7 0-12 .5-12.1 5 0 .5-.1 2.5 2.1 8.2 0 .3.3.8.7 1.1z"/>
                </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: 0px 0px 6px 3px var(--button-card-light-color)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: binary_sensor.ping_dalg_pc
        name: PC
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_imac:
              - top: 13%
              - left: 11%
              - width: 45%
              - position: absolute
              - fill: |
                  [[[ return entity.state === 'on' ? '#72757c' : '#9da0a2'; ]]]
            loader: |
              <img src="/local/loader.svg" width="100%">
          tap_action:
            loader: |
              [[[
                if (entity !== undefined) {
                  let elt = this.shadowRoot;
                  const loader = (id, style, timeout) => {
                    if (elt.getElementById(id)) {
                      elt.getElementById(id).style.display = style;
                      window.setTimeout(() => {
                        elt.getElementById(id).style.display = timeout;
                      }, 20000)
                    }
                  };
                  loader('circle', 'none', 'initial');
                  loader('loader', 'initial', 'none');
                }
              ]]]
        custom_fields:
          icon_imac: |
            [[[
              const state = entity.state === 'on' ? 'animate' : null;
              return `
                <svg viewBox="0 0 50 50">
                  <style>
                    @keyframes animate {
                      from {
                        opacity: 0.5;
                        transform: scale(0.6);
                      }
                      100% {
                        opacity: 1;
                      }
                    }
                    .animate {
                      animation: animate 0.8s cubic-bezier(0.25, 1, 0.5, 1);
                      transform-origin: center;
                    }
                  </style>
                  <path class="${state}" d="M31.9 44.5c-1-.3-1.9.4-1.9-3.7h-9.9c0 4.2-.9 3.4-1.9 3.7s-.2.7-.2.7h14.1s.8-.3-.2-.7zM47.6 4.8H2.5c-1.1 0-2 .9-2 2v30.1c0 1.1.9 2 2 2h45c1.1 0 2-.9 2-2v-30a1.95 1.95 0 0 0-1.9-2.1zm-.7 26.4H3.2V7.6H47v23.6z"/>
                </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
        tap_action:
          action: call-service
          service: script.my_computer_wake
        hold_action:
          action: call-service
          service: script.my_computer_shutdown
      - type: custom:button-card
        entity: switch.lumiere_salon
        name: monitor
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_monitors:
              - top: 13%
              - left: 7%
              - width: 45%
              - position: absolute
        custom_fields:
          icon_monitors: |
            [[[
              if (entity.state === "on") {
                return `
                  <svg viewBox="0 0 50 50">
                    <style>
                      @keyframes cone {
                        35% {
                          transform: scale(0.8);
                          animation-timing-function: cubic-bezier(0, 0.55, 0.45, 1);
                        }
                        36% {
                          transform: translateY(0%);
                        }
                        49% {
                          transform: scale(1.25);
                        }
                        63% {
                          transform: scale(0.85);
                          animation-timing-function: cubic-bezier(0, 0.55, 0.45, 1);
                        }
                        77% {
                          transform: scale(1.15);
                          animation-timing-function: cubic-bezier(0, 0.55, 0.45, 1);
                        }
                        95% {
                          transform: scale(1);
                        }
                      }
                      .cone {
                        animation: cone 1.4s;
                        transform-origin: center;
                      }
                      @keyframes speaker {
                        0% {
                          transform: scale(1);
                        }
                        40% {
                          transform: scale(1);
                        }
                        49% {
                          transform: scale(0.95);
                        }
                        63% {
                          transform: scale(1);
                        }
                        77% {
                          transform: scale(0.95);
                        }
                        100% {
                          transform: scale(1);
                        }
                      }
                      .speaker {
                        animation: speaker 1.3s;
                        transform-origin: center;
                      }
                    </style>
                    <g class="speaker">
                      <path fill="#686868" d="M35.8 46.9H14.2c-1.1 0-2-1-2-2.3V6.7c0-1.3.9-2.3 2-2.3h21.5c1.1 0 2 1 2 2.3v37.9c0 1.2-.9 2.3-1.9 2.3z"/>
                      <path fill="#2a2a2a" d="M39.2 1H10.8C9.4 1 8.3 2.1 8.2 3.5v42.9a2.65 2.65 0 0 0 2.6 2.6h28.3c1.4 0 2.5-1.2 2.6-2.6V3.5c0-1.4-1.1-2.5-2.5-2.5zM25 7c1.3 0 2.4 1.1 2.4 2.4s-1.1 2.4-2.4 2.4-2.4-1.1-2.4-2.4C22.5 8 23.6 7 25 7zm10.2 35.5l-.4 1.9s-.2.6-.6.6H15.8c-.4 0-.6-.6-.6-.6s-.1-1.1-.4-1.9.6-.9.6-.9h19.3c0-.1.8-.1.5.9z"/>
                    </g>
                    <path class="cone" fill="#e5dd00" d="M25 15.7c-6.2 0-11.3 5.1-11.3 11.3S18.8 38.3 25 38.3 36.3 33.2 36.3 27c-.1-6.3-5.1-11.3-11.3-11.3zm0 14.5a3.33 3.33 0 0 1-3.3-3.3 3.33 3.33 0 0 1 3.3-3.3 3.33 3.33 0 0 1 3.3 3.3c-.1 1.9-1.5 3.3-3.3 3.3z"/>
                  </svg>
                `;
              } else {
                return `
                  <svg viewBox="0 0 50 50">
                    <path fill="#9da0a2" d="M25 18.6c-4.6 0-8.4 3.8-8.4 8.4s3.8 8.4 8.4 8.4 8.4-3.8 8.4-8.4-3.7-8.4-8.4-8.4zm0 11.7a3.33 3.33 0 0 1-3.3-3.3 3.33 3.33 0 0 1 3.3-3.3 3.33 3.33 0 0 1 3.3 3.3c0 1.8-1.4 3.3-3.3 3.3zM39.2 1H10.9C9.4 1 8.3 2.1 8.3 3.6v42.9a2.65 2.65 0 0 0 2.6 2.6h28.3a2.65 2.65 0 0 0 2.6-2.6v-43C41.7 2 40.5.9 39.2 1zM25 7c1.3 0 2.4 1.1 2.4 2.4s-1.1 2.4-2.4 2.4-2.4-1.1-2.4-2.4S23.7 7 25 7zm10.3 35.5l-.4 1.9s-.2.6-.6.6H15.8c-.4 0-.6-.6-.6-.6l-.4-1.9c-.2-.9.6-.9.6-.9h19.3s.9.1.6.9zM25 38.2c-6.2 0-11.3-5.1-11.3-11.3a11.29 11.29 0 1 1 22.6 0c.1 6.3-5 11.3-11.3 11.3z"/>
                  </svg>
                `;
              }
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: switch.lumiere_salon
        name: lamp
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_lamp:
              - top: 13%
              - left: 4.5%
              - width: 47%
              - position: absolute
        custom_fields:
          icon_lamp: |
            [[[
              const state = entity.state === 'on' ? 'animate' : null;
              return `
                <svg viewBox="0 0 50 50">
                  <style>
                    @keyframes animate {
                      0% {
                        transform: scale(0.85);
                      }
                      20% {
                        transform: scale(1.1);
                      }
                      40% {
                        transform: scale(0.95);
                      }
                      60% {
                        transform: scale(1.03);
                      }
                      80% {
                        transform: scale(0.97);
                      }
                    }
                    .animate {
                      animation: animate 0.8s;
                      transform-origin: center;
                    }
                  </style>
                  <path fill="#9da0a2" d="M26.5 21.8l3.8-6.1H19.7l3.8 6.1c-5 .7-6.3 5.8-5.7 10.2.7 5.1 3.2 10.1 5.7 14.4H19v2.5h11.8v-2.5h-4.5C29 42 31.4 37 32.1 32c.6-4.4-.6-9.4-5.6-10.2zm3.1 9.1c-.3 4.3-2.3 8.7-4.4 12.4l-.2.1v.1-.1c-1.8-3-3.3-6.4-4.1-9.7-.7-3.1-1-7.2 2.7-8.4 1.4-.5 3.1-.1 4.2.8 1.6 1 1.8 3 1.8 4.8z"/>
                  <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M38.1 20L35.7 3.8c-.3-1.9-.4-1.7-.6-2-.9-.6-2.3-.7-2.3-.7H17.4s-1.4 0-2.3.7c-.2.3-.3.1-.6 2C14 5.7 11.9 20 11.9 20s5.8.3 13.4.3h0c7.3 0 12.8-.3 12.8-.3z"/>
                </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: switch.lumiere_salon
        name: WC
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_wc:
              - top: 15%
              - left: 6.5%
              - width: 45%
              - position: absolute
        custom_fields:
          icon_wc: |
            [[[
              const state = entity.state === 'on' ? 'animate_on' : 'animate_off';
              return `
                <svg viewBox="0 0 50 50" fill="var(--button-card-light-color-no-temperature)">
                  <style>
                    @keyframes animate_on {
                      0% {
                        transform: rotateZ(0deg) translate(0%, 0%);
                      }
                      100% {
                        transform: rotateZ(-90deg) translate(-1.5%, 0%);
                      }
                    }
                    @keyframes animate_off {
                      0% {
                        transform: rotateZ(-90deg) translate(-1.5%, 0%);
                      }
                      45% {
                        transform: rotateZ(-40deg);
                      }
                      55% {
                        transform: rotateZ(0deg);
                      }
                      65% {
                        transform: rotateZ(-15deg);
                      }
                      75% {
                        transform: rotateZ(0deg);
                      }
                      85% {
                        transform: rotateZ(-5deg);
                      }
                      95% {
                        transform: rotateZ(0deg);
                      }
                    }
                    .animate_on {
                      animation: animate_on 0.4s;
                      animation-fill-mode: forwards;
                      transform-origin: 45% 41%;
                      transition-timing-function: cubic-bezier(0.85, 0, 0.15, 1);
                    }
                    .animate_off {
                      animation: animate_off 1.05s linear;
                      animation-delay: 0.05s;
                      animation-fill-mode: both;
                      transform-origin: 45% 41%;
                    }
                  </style>
                  <path d="M12.9 1.2h2.5c1.6 0 2.9 1.3 2.9 2.9v18.6c0 1.4 1.1 2.5 2.4 2.5h20.5c.5 0 1 .4.9 1-.1 2.6-1.2 9.6-10.2 11v7.6c0 .2.2.4.4.4h1.5a1.58 1.58 0 0 1 1.6 1.6v.3a1.58 1.58 0 0 1-1.6 1.6H11a1.58 1.58 0 0 1-1.6-1.6v-.3a1.58 1.58 0 0 1 1.6-1.6h1.6c.2 0 .4-.2.4-.4v-7.6s-5.2-.3-5.2-5.9V4.2c0-1.6 1.3-2.9 2.9-2.9l2.2-.1c0 .1 0 0 0 0z"/>
                  <path class="${state}" d="M22.3 18.8h18.3a1.58 1.58 0 0 1 1.6 1.6v.6a1.58 1.58 0 0 1-1.6 1.6h-19c-.4 0-.7-.3-.8-.7v-2.3c0-.4.3-.7.7-.8h.8z"/>
                </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: switch.lumiere_salon
        name: fan2
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_fan2:
              - top: 13%
              - left: 11%
              - width: 45%
              - position: absolute
        custom_fields:
          icon_fan2: |
            [[[
              const path = `
                <circle cx="25" cy="25" r="6.6"/>
                <path d="M31.9 30.4c-.5.6-1.1 1.1-1.7 1.5-1.4 1.1-3.2 1.7-5.2 1.7-2.3 0-4.5-.9-6-2.4-.9 1.1-1.6 2.3-2.3 3.2l-4.9 5.4c-1.8 2.7.3 5.6 2.5 7 3.9 2.4 9.8 3.1 14.1 1.9 4.6-1.3 7.9-4.7 7.4-9.7-.2-3.4-1.9-6-3.9-8.6zM17 28.3c-.4-1-.6-2.1-.6-3.3a8.7 8.7 0 0 1 6.4-8.4l-1.6-3.5L19 6.2c-1.5-2.8-5-2.5-7.3-1.2-4 2.2-7.5 6.9-8.7 11.3-1.2 4.6.2 9.2 4.7 11.3 3.1 1.3 6.1 1.2 9.3.7zm26.9-17.6c-3.3-3.4-8-4.6-12.1-1.8-2.8 1.8-4.2 4.6-5.5 7.5 4.2.6 7.4 4.2 7.4 8.6 0 .9-.1 1.7-.4 2.5 1.3.2 2.8.3 3.8.4 2.3.4 4.7 1.3 7.1 1.7 3.2.3 4.7-3 4.8-5.6.3-4.6-1.9-10.1-5.1-13.3z"/>
              `;
              const style = `
                <svg viewBox="0 0 50 50">
                  <style>
                    @keyframes rotate {
                      0% {
                        visibility: visible;
                        transform: rotate(0deg);
                      }
                      100% {
                        transform: rotate(1080deg);
                      }
                    }
                    .start {
                      animation: rotate 2.8s ease-in;
                      transform-origin: center;
                      fill: #5daeea;
                      visibility: hidden;
                    }
                    .on {
                      animation: rotate 1.8s linear infinite;
                      transform-origin: center;
                      fill: #5daeea;
                      animation-delay: 2.8s;
                      visibility: hidden;
                    }
                    .end {
                      animation: rotate 2.8s;
                      transform-origin: center;
                      fill: #9ca2a5;
                      animation-timing-function: cubic-bezier(0.61, 1, 0.88, 1);
                    }
                  </style>
              `;
              if (entity.state === 'on') {
                return `${style}<g class="start">${path}</g><g class="on">${path}</g></svg>`;
              } else {
                return `${style}<g class="end">${path}</g></svg>`;
              }
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: switch.lumiere_salon
        name: spot
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_spot:
              - top: 18%
              - left: 8%
              - width: 40%
              - position: absolute
        custom_fields:
          icon_spot: |
            [[[
              const state = entity.state === 'on' ? 'animate_on' : 'animate_off';
              return `
                <svg viewBox="0 0 50 50">
                  <style>
                    @keyframes animate_on {
                      0% {
                        transform: rotateZ(0deg);
                        animation-timing-function: cubic-bezier(0.7, 0, 0.84, 0);
                      }
                      70% {
                        transform: rotateZ(-15deg);
                        animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
                      }
                      75% {
                        transform: rotateZ(-15deg);
                        animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
                      }
                      88% {
                        transform: rotateZ(-11deg);
                      }
                      100% {
                        transform: rotateZ(-15deg);
                      }
                    }
                    .animate_on {
                      animation: animate_on 0.7s;
                      transform-origin: 40% 20%;
                      animation-fill-mode: forwards;
                      animation-delay: -0.1s;
                    }
                    @keyframes animate_off {
                      0% {
                        transform: rotateZ(-15deg);
                        animation-timing-function: cubic-bezier(0.7, 0, 0.84, 0);
                      }
                      70% {
                        transform: rotateZ(0deg);
                        animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
                      }
                      75% {
                        transform: rotateZ(0deg);
                        animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
                      }
                      88% {
                        transform: rotateZ(-4deg);
                      }
                      100% {
                        transform: rotateZ(0deg);
                      }
                    }
                    .animate_off {
                      animation: animate_off 0.7s;
                      transform-origin: 40% 20%;
                      animation-fill-mode: forwards;
                    }
                  </style>
                  <path style="clip-path: url(#mask);" fill="#9da0a2" d="M40.5.8H17.1c-.1 0-.1 0-.1.1A3.12 3.12 0 0 0 20.1 4h6.1c.1 0 .1 0 .1.1v7.4L18 19.1l3.6 3.5 9.1-8.6c.4-.4.6-1 .7-1.6V4c0-.1 0-.1.1-.1h6c1.7.1 3.1-1.3 3-3.1z"/>
                  <defs>
                    <clipPath id="mask">
                      <path class="${state}" d="M0 9.1h24l8.3 8.8H50V-9H0z"/>
                    </clipPath>
                  </defs>
                  <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M25.5 46.4s1.4.5 10.4-8.2c.5-.4 6.3-6.3 5.8-7.1-.7-.8-18.6-19.5-18.6-19.5s-.6-.9-8.6 6.4c-.6.5-8.7 8-7.7 9.1l18.7 19.3z"/>
                </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: switch.lumiere_salon
        name: ampoule
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_ampoule:
              - top: 13%
              - left: 11%
              - width: 38%
              - position: absolute
        custom_fields:
          icon_ampoule: >
            [[[  const state = entity.state === 'on' ? 'animate' : null; return
            ` <svg viewBox="0 0 50 50"> <style>@keyframes animate{0%{transform:
            scale(0.85);}20%{transform: scale(1.1);}40%{transform:
            scale(0.95);}60%{transform: scale(1.03);}80%{transform:
            scale(0.97);}100%{transform: scale(1);}}.animate{animation: animate
            0.8s; transform-origin: center;}</style> <path fill="rgba(180, 180,
            180)" d="M 29.147 48.105 L 21.281 48.105 C 21.281 48.105 20.157
            48.173 20.157 48.629 C 20.157 49.087 20.801 49.218 21.281 49.218 L
            29.147 49.218 C 29.629 49.218 30.271 49.152 30.271 48.629 C 30.271
            48.105 29.147 48.105 29.147 48.105 Z M 34.446 46.209 L 16.144 46.209
            C 16.144 46.209 14.857 46.209 14.857 46.733 C 14.857 47.256 15.822
            47.319 16.144 47.319 L 34.606 47.319 C 34.927 47.319 35.89 47.256
            35.89 46.733 C 35.729 46.209 34.446 46.209 34.446 46.209 Z M 34.446
            44.248 L 16.144 44.248 C 16.144 44.248 14.857 44.248 14.857 44.771 C
            14.857 45.295 15.822 45.359 16.144 45.359 L 34.606 45.359 C 34.927
            45.359 35.89 45.295 35.89 44.771 C 35.729 44.248 34.446 44.248
            34.446 44.248 Z M 34.446 42.351 L 25.295 42.351 L 16.144 42.351 C
            16.144 42.351 14.857 42.351 14.857 42.874 C 14.857 43.397 15.822
            43.463 16.144 43.463 L 34.606 43.463 C 34.927 43.463 35.89 43.397
            35.89 42.874 C 35.89 42.351 34.446 42.351 34.446 42.351 Z M 42.794
            27.181 C 37.494 23.714 31.556 23.519 25.294 23.519 C 19.194 23.519
            11.809 23.781 7.796 27.181 C 7.635 27.246 7.635 27.379 7.956 27.639
            C 8.597 28.161 13.252 32.346 13.094 39.932 C 13.094 40.651 12.932
            40.978 13.094 41.044 C 13.094 41.109 13.094 41.5 14.857 41.5 L
            35.729 41.5 C 37.334 41.5 37.334 41.174 37.494 41.044 L 37.494
            39.932 C 37.334 32.346 41.99 28.161 42.633 27.639 C 42.794 27.379
            42.794 27.31 42.794 27.181" style=""/> <path fill="rgba(150, 150,
            150)" d="M 6.828 35.24 C 14.261 41.681 38.81 39.96 43.204 35.24 C
            43.872 34.362 44.375 33.484 44.707 32.825 C 48.372 20.309 48.215
            15.922 48.215 14.824 C 47.874 5.16 34.192 3.846 28.021 3.846 L
            22.347 3.846 C 16.172 3.846 2.321 4.943 2.152 14.824 C 2.152 15.922
            1.983 20.309 5.66 32.825 C 5.66 33.484 6.158 34.582 6.828 35.24 Z"
            style=""/> <path class="${state}"
            fill="var(--button-card-light-color-no-temperature)" d="M 7.783
            34.174 C 14.751 40.14 37.764 38.546 41.882 34.174 C 42.509 33.361
            42.981 32.547 43.292 31.937 C 46.727 20.344 46.58 16.28 46.58 15.265
            C 46.26 6.312 33.433 5.093 27.65 5.093 L 22.332 5.093 C 16.543 5.093
            3.559 6.11 3.4 15.265 C 3.4 16.28 3.241 20.344 6.688 31.937 C 6.688
            32.547 7.156 33.564 7.783 34.174 Z" style=""/> </svg> `; ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: switch.lumiere_salon
        name: closet
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_closet:
              - top: 15%
              - left: 5%
              - width: 45%
              - position: absolute
        custom_fields:
          icon_closet: |
            [[[
              const state = entity.state === 'on' ? 'door' : 'door reverse';
              const opacity = entity.state === 'on' ? 'room' : 'room reverse';
              return `
                <svg viewBox="0 0 50 50">
                  <style>
                    .door {
                      animation: door 0.4s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
                    }
                    .room {
                      animation: room 0.4s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
                    }
                    .reverse {
                      animation-direction: reverse;
                    }
                    @keyframes door {
                      0% {
                        transform: none;
                        fill: #9da0a2;
                      }
                      100% {
                        transform: skewY(10deg) translate(4.5%, -3.9%) scaleX(0.8);
                        fill: #b68349;
                      }
                    }
                    @keyframes room {
                      0% {
                        opacity: 0;
                      }
                      100% {
                        opacity: 1;
                      }
                    }
                  </style>
                  <path class="${opacity}" d="M11.4,1.4h27.2v43.1H11.4V1.4z" fill="#bcbcbc"/>
                  <path class="${state}" d="M11.4 1.4v43.1h27.2V1.4H11.4zm23 23.4c0 1.1-.9 1.9-1.9 1.9h0c-1.1 0-1.9-.9-1.9-1.9V21c0-1.1.9-1.9 1.9-1.9h0c1.1 0 1.9.9 1.9 1.9v3.8z"/>
                </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: sensor.lumi_lumi_weather_temperature
        show_name: false
        show_state: true
        show_icon: false
        styles:
          state:
            - color: rgba(240, 240, 240, 0.8)
            - font-size: 100%
            - top: 75%
            - left: 24%
            - position: absolute
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_temp:
              - top: 18%
              - left: 10%
              - width: 45%
              - position: absolute
        custom_fields:
          icon_temp: |
            <svg viewBox="10 5 50 50">
              <style>@keyframes animate{0%{transform: scale(0.85);}20%{transform: scale(1.1);}40%{transform: scale(0.95);}60%{transform: scale(1.03);}80%{transform: scale(0.97);}100%{transform: scale(1);}}.animate{animation: animate 0.8s; transform-origin: center;}</style>
              <path fill="#9da0a2" d="M41.74 10.852v2h-7.75v-2zm-3.25 4.36h-4.5v2h4.5zm-4.5 6.36h7.75v-2h-7.75zm4.5 2.36h-4.5v2h4.5zm-4.5 6.36h7.75v-2h-7.75zM35.2 41.685A10.14 10.14 0 0 1 25.074 51.81a10.14 10.14 0 0 1-10.125-10.125c0-3.618 1.9-6.906 5-8.725V10.006c0-2.826 2.3-5.125 5.125-5.125s5.125 2.3 5.125 5.125V32.96c3.1 1.817 5 5.106 5 8.725zm-2 0c0-3.07-1.706-5.845-4.453-7.24l-.547-.278v-24.16a3.13 3.13 0 0 0-3.125-3.125 3.13 3.13 0 0 0-3.125 3.125v24.16l-.547.278a8.09 8.09 0 0 0-4.453 7.24c0 4.48 3.645 8.125 8.125 8.125s8.125-3.645 8.125-8.125zm-1.666 0a6.47 6.47 0 0 1-6.459 6.458 6.47 6.47 0 0 1-6.458-6.458 6.46 6.46 0 0 1 4.796-6.233l.37-.1v-22.23h2.583v22.23l.37.1a6.46 6.46 0 0 1 4.796 6.233zm-6.14-4.305c-.154-.684-.842-1.134-1.543-.974a5.31 5.31 0 0 0-4.158 5.207 1.29 1.29 0 0 0 2.58 0c0-1.277.902-2.41 2.147-2.7.692-.16 1.13-.85.974-1.543z"/>
            </svg>
        aspect_ratio: 1/1
      - type: custom:button-card
        entity: light.tz3000_hktqahrq_ts0001_2f2660fe_on_off
        name: ps5
        icon: custom
        styles:
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_ps5:
              - top: 13%
              - left: 11%
              - width: 45%
              - position: absolute
        custom_fields:
          icon_ps5: |
            [[[
              if (entity.state === 'on') {
                return `
                  <svg viewBox="0 0 50 50">
                    <style>
                    @keyframes animate {
                      50% {
                        transform: translateY(0);
                      }
                      100% {
                        transform: translateY(-45%);
                      }
                    }
                    .animate {
                      animation: animate 2s cubic-bezier(0.550, 0.085, 0.680, 0.530) both;
                    }
                  </style>
                  <g style="clip-path: url(#mask);">
                    <g class="animate">
                      <path fill="#00aa9e" d="M49.2 38.9l-75.6-25.1v7.4l75.6 25.2z"/>
                      <path fill="#f3c202" d="M49.2 46.4l-75.6-25.2v7.5l75.6 25.1z"/>
                      <path fill="#326db3" d="M49.2 53.8l-75.6-25.1V51l75.6 25.1zm0-22.3L-26.4 6.4v7.4l75.6 25.1z"/>
                    </g>
                  </g>
                  <defs>
                    <clipPath id="mask">
                      <path d="M47.5 33.2c-.5-2.2-3.9-3.5-9.1-3.9-3.8-.3-7.5.6-11.1 1.9l-.6.2v-5.7l-5.7.8-4.6 1.6L6 31.9h-.1c-1.9.7-3.8 2.2-3.7 4.2.1 2.1 4.7 2.6 8.2 3.2 3.3.6 6.2.2 8.9-.7l7.3 4.8L33 41l10.7-4h.1c2.8-1 4-2.5 3.7-3.8zm-31.3 2l-3.6 1.3c-2.2.8-4.1-1.1-2.1-1.9l1.7-.6 7.2-2.7v2.8l-3.2 1.1zm22.5-1.1l-1.9.7-10.2 3.7V36l6.5-2.4 3.8-1.3c4-.9 5.6.5 1.8 1.8z"/>
                    </clipPath>
                  </defs>
                  <path fill="#de0029" d="M26.7 14.6v28.7l-7.3-2.5V7.1l9.3 2.6c6 1.7 9.6 5 9.6 10.7-.1 6.7-3 9.4-8.7 7.6V14.9c-.1-1.6-2.9-1.7-2.9-.3h0z"/>
                </svg>
              `;
              } else {
                return `
                  <svg viewBox="0 0 50 50">
                    <path fill="#9da0a2" d="M43.8 37h-.1l-10.6 4-4.2 1.6v-4.9l8-2.9 1.9-.7c3.8-1.3 2.2-2.7-1.8-1.9l-3.8 1.3-4.3 1.6v-4.5c3.1-1 6.3-1.6 9.5-1.4 5.3.4 8.7 1.6 9.1 3.9.3 1.4-.9 2.9-3.7 3.9zm-26.7-2.1l-.9.3-3.6 1.3c-2.2.8-4.1-1.1-2.1-1.9l1.7-.6 5-1.9v-4.2l-.6.2L6 31.9h-.1c-1.9.7-3.8 2.2-3.7 4.2.1 2.1 4.7 2.6 8.2 3.2 2.4.4 4.6.3 6.7-.1v-4.3zm12.4-20V28c5.7 1.7 8.7-.9 8.7-7.6.1-5.7-3.6-9-9.6-10.7l-9.3-2.6v33.8l7.2 2.5.1.1V14.6c.1-1.4 2.9-1.3 2.9.3z"/>
                  </svg>
                `;
              }
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: switch.dalg_s10e
        name: closet
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_away:
              - top: 15%
              - left: 5%
              - width: 45%
              - position: absolute
        custom_fields:
          icon_away: |
            [[[
              const state = entity.state === 'on' ? 'animate' : null;
              return `
                <svg viewBox="0 0 50 50">
                  <style>
                    @keyframes animate {
                      10%,
                      20%,
                      100% {
                        transform: rotateZ(0deg);
                      }
                      30%,
                      50%,
                      70% {
                        transform: rotateZ(7deg);
                      }
                      90% {
                        transform: rotateZ(3deg);
                      }
                      40%,
                      60%,
                      80% {
                        transform: rotateZ(-7deg);
                      }
                    }
                    .animate {
                      animation: animate 1.35s cubic-bezier(0.5, 1, 0.89, 1);
                      animation-fill-mode: both;
                      transform-origin: 70% 80%;
                      animation-delay: 0s;
                    }
                  </style>
                  <path class="${state}" d="M32.1 18.4s.3-1.6.7-2.1c.3-.6.9-1.4 1.6-1.8.6-.4 1.1-.7 1.4-.7s.7-.1 1 .1.6.4.8 1.3l.3 2.7.1 2.4.2 4.1c0 .3.2 3.1.2 3.3s.2 2.7.2 3.2l-.1 2.5c.1 1.6.5 3.1-.2 4.6-.6 1.4-1.7 2.7-2.9 3.6-.5.4-1.9 1.3-2.9 1.7-1.1.5-2.2.8-3.3 1.1-.5.1-1.4.4-2.3.3s-1.8-.6-2.1-1l-1.6-2.3c-.6-.8-2.1-2.3-2.3-2.5l-2.7-2.8c-.2-.2-2.7-3.5-2.9-3.8l-3.1-4.7-1.8-3.2-1.5-2.8-.9-1.8c-.1-.2-.3-1.1-.2-1.4.3-1.2 1.4-1.4 2.3-.7.3.2.9 1 1.1 1.3s6.1 8.1 6.1 8.1c.2.3.7.3.9 0s-.1-.7-.2-.9c-.4-.6-8.3-11.5-8.3-11.5s-.6-.9-.7-1.1c-.3-1.1 0-2.3 1.1-2.7s1.9.3 2.6 1.1c.3.3 8.3 11.5 8.3 11.5.2.2.3.3.5.3.3 0 .5-.4.4-.7-.1-.2-.5-.9-.5-.9L11.8 9c-.6-1-.9-2-.1-3 .7-.8 2.2-1.3 3-.2.3.3 10.1 14.3 10.1 14.3.2.2.5.4.7.3.5-.1.3-.7.1-1-.1-.2-8.4-11.8-8.4-11.8-.4-.9-.6-2 .2-2.8 1-1.1 2.5-.5 3.3.5.2.3 1 1.4 1 1.4l2.7 3.7c.1.2 3.4 4.4 3.8 4.8.9 1.1 1.8 2.2 2.7 3.2l.5.5c.1.1.1.4.1.8 0 1.3.1 2.6.1 3.9 0 .2.1.4.2.6.3.3.6.1.7-.2.1-.2 0-2.4 0-2.7-.3-.3-.5-1.3-.4-2.9zM12.2 46.9s-2.8-.8-4.8-2.7-2.6-2.7-2.8-3-1.8-3-2-3.6c-.2-.5-.2-.7.2-1 .4-.4 1-.5 1.3.1.1.2.4 1 .5 1.2s1 1.9 1.7 2.8 1.6 2.2 4.4 3.8c.6.3 1.2.6 1.9.9.3.1.6.2.8.4.1.2.1.6-.1.8-.2.4-.7.4-1.1.3zM7.1 30.7l.9 3.1c.3.7 1.1 2.3 1.9 3.3s2.4 2.6 3.4 3.2 2 1.1 3 1.5c1 .3 1.1.4 1.2.5.3.4.2 1.2-.4 1.3-.2 0-1.2 0-1.8-.3L12 41.7c-.5-.4-3.9-3.1-5.1-6S5.3 31 5.2 30.4s-.2-1.1 0-1.4c.3-.4.9-.8 1.3-.3.2.3.3.6.3.9.1 0 .2.8.3 1.1zm26.8-25s.2-.1.5-.1.8.3 1.4.7 1.9 1 3.6 2.9 2.9 3.9 3.4 5.8c.5 1.8.8 3.1.9 5.5 0 .5.1 1.6 0 1.7-.2.5-.5.7-1 .7-.6 0-.7-.5-.7-1l-.1-2.9c-.1-.6-.3-1.9-.7-2.9-.3-1-.7-2.3-1.7-3.6-.9-1.3-2.1-2.8-3.2-3.5l-2.4-1.5c-.6-.6-.7-1.2 0-1.8zm4.9-2.5s.3-.2.5-.1c.2 0 .7.3.9.4s2.1 1.3 3.6 3c1.5 1.6 3.5 5.1 3.7 7.4.1.4.2.9 0 1-.2.2-.4.4-.7.4-.2 0-.5 0-.7-.1-.1-.2-.4-1.1-.4-1.3s-.6-2-1.1-3.1C44 9.7 43.5 8.5 42 7.1s-2.2-1.9-2.8-2.2-1.1-.6-1.1-1c.1-.3.3-.6.7-.7z"/>
                </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
      - type: custom:button-card
        entity: media_player.dalg_tv
        triggers_update: input_boolean.nvidia_shield
        name: tv
        icon: custom
        styles:
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_tv:
              - top: 10%
              - left: 10.7%
              - width: 50%
              - position: absolute
              - fill: |
                  [[[ return entity.state === 'on' ? '#616161' : '#9da0a2'; ]]]
            loader: |
              <img src="/local/loader.svg" width="100%">
          tap_action:
            loader: |
              [[[
                if (entity !== undefined) {
                  let elt = this.shadowRoot;
                  const loader = (id, style, timeout) => {
                    if (elt.getElementById(id)) {
                      elt.getElementById(id).style.display = style;
                      window.setTimeout(() => {
                        elt.getElementById(id).style.display = timeout;
                      }, 20000)
                    }
                  };
                  loader('circle', 'none', 'initial');
                  loader('loader', 'initial', 'none');
                }
              ]]]
        custom_fields:
          icon_tv: |
            [[[
              const boolean = states[entity.entity_id.replace(entity.entity_id.split('.')[0], 'input_boolean')].state;
              const style = `
                <style>
                  @keyframes animate_on {
                    from {
                      transform: scaleY(0);
                    }
                    to {
                      transform: scaleY(1);
                    }
                  }
                  .animate_on {
                    animation: animate_on 1s;
                    transform-origin: -100% 46%;
                    animation-fill-mode: forwards;
                  }
                  @keyframes animate_off {
                    from {
                      transform: scaleY(1);
                    }
                    to {
                      transform: scaleY(0);
                    }
                  }
                  .animate_off {
                    animation: animate_off 1s;
                    transform-origin: -100% 46%;
                    animation-fill-mode: forwards;
                  }
                </style>
              `;
              const path = `
                <path d="M46 9.2v27.5H4.1V9.2H46m2.4-2.4H1.6v32.3h46.7c.1 0 .1-32.3.1-32.3zM11.9 43.2h26.3c.6 0 1.1-.4 1.1-1v-.3c0-.6-.4-1.1-1-1.1H11.9c-.6 0-1.1.4-1.1 1v.3a1.11 1.11 0 0 0 1.1 1.1z"/>
              `;
              const gradient = `
                <linearGradient id="A" gradientUnits="userSpaceOnUse" x1="5.401" y1="34.714" x2="43.817" y2="11.74">
                  <stop offset="0" stop-color="#64acb7"/>
                  <stop offset="1" stop-color="#7fdbe9"/>
                </linearGradient>
              `;
              if (entity.state === 'off' && boolean === 'off') {
                return `
                  <svg viewBox="0 0 50 50"> ${style} ${gradient} 
                    <path class="animate_off" d="M2.9,8h44.3v29.9H2.9V8z" fill="url(#A)"/> ${path} 
                  </svg>
                `;
              }
              if (entity.state === 'on' && boolean === 'off') {
                return `
                  <svg viewBox="0 0 50 50"> ${style} ${gradient} 
                    <path d="M2.9,8h44.3v29.9H2.9V8z" fill="#20262890"/>
                    <path class="animate_on" d="M2.9,8h44.3v29.9H2.9V8z" fill="url(#A)"/> ${path} 
                  </svg>
                `;
              }
              if (entity.state === 'on' && boolean === 'on') {
                return `
                  <svg viewBox="0 0 50 50"> ${gradient} 
                    <path d="M2.9,8h44.3v29.9H2.9V8z" fill="url(#A)"/> ${path} 
                  </svg>
                `;
              } else if (entity.state === 'off' && boolean === 'on') {
                return `
                  <svg viewBox="0 0 50 50"> ${path} </svg>
                `;
              }
            ]]]
        aspect_ratio: 1/1
        state:
          - value: idle
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: >-
                    0px 0px 6px 3px
                    var(--button-card-light-color-no-temperature)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
        tap_action:
          action: fire-dom-event
          browser_mod:
            command: popup
            title: Philips
            card:
              type: entities
              state_color: true
              show_header_toggle: false
              entities:
                - entity: media_player.nvidia_shield
                  name: TV
                  icon: television
                  secondary_info: last-changed
                - entity: light.dalg_tv
                - type: custom:hui-element
                  card_type: horizontal-stack
                  card_mod:
                    style: |
                      #root {
                        justify-content: space-evenly;
                        margin: 1.4em -0.7em 0.7em 0;
                      }
                  cards:
                    - type: custom:button-card
                      entity: media_player.nvidia_shield
                      icon: mdi:volume-mute
                      show_name: false
                      tap_action:
                        action: call-service
                        service: media_player.volume_mute
                        service_data:
                          entity_id: |
                            [[[ return entity.entity_id; ]]]
                          is_volume_muted: >
                            [[[ return entity.attributes.is_volume_muted ===
                            'false' ? 'true' : 'false'; ]]]
                      styles:
                        card:
                          - color: '#9da0a2'
                          - border-radius: 0.6em
                          - width: 4em
                          - height: 3.7em
                          - background: '#FFFFFF10'
                    - type: custom:button-card
                      icon: mdi:volume-minus
                      tap_action:
                        action: call-service
                        service: media_player.volume_down
                        service_data:
                          entity_id: media_player.nvidia_shield
                      styles:
                        card:
                          - color: '#9da0a2'
                          - border-radius: 0.6em
                          - width: 4em
                          - height: 3.7em
                          - background: '#FFFFFF10'
                    - type: custom:button-card
                      icon: mdi:volume-plus
                      tap_action:
                        action: call-service
                        service: media_player.volume_up
                        service_data:
                          entity_id: media_player.nvidia_shield
                      styles:
                        card:
                          - color: '#9da0a2'
                          - border-radius: 0.6em
                          - width: 4em
                          - height: 3.7em
                          - background: '#FFFFFF10'
                - type: custom:hui-element
                  card_type: horizontal-stack
                  card_mod:
                    style: |
                      #root {
                        justify-content: space-evenly;
                        margin: 1.4em -0.7em 0.7em 0;
                      }
                  cards:
                    - type: custom:button-card
                      entity: media_player.nvidia_shield
                      icon: mdi:skip-previous
                      show_name: false
                      tap_action:
                        action: call-service
                        service: media_player.previous_track
                        service_data:
                          entity_id: media_player.nvidia_shield
                      styles:
                        card:
                          - color: '#9da0a2'
                          - border-radius: 0.6em
                          - width: 4em
                          - height: 3.7em
                          - background: '#FFFFFF10'
                    - type: custom:button-card
                      entity: media_player.nvidia_shield
                      icon: mdi:play-pause
                      show_name: false
                      tap_action:
                        action: call-service
                        service: media_player.play_pause
                        service_data:
                          entity_id: media_player.nvidia_shield
                      styles:
                        card:
                          - color: '#9da0a2'
                          - border-radius: 0.6em
                          - width: 7em
                          - height: 3.7em
                          - background: '#FFFFFF10'
                    - type: custom:button-card
                      entity: media_player.nvidia_shield
                      icon: mdi:skip-next
                      show_name: false
                      tap_action:
                        action: call-service
                        service: media_player.next_track
                        service_data:
                          entity_id: media_player.nvidia_shield
                      styles:
                        card:
                          - color: '#9da0a2'
                          - border-radius: 0.6em
                          - width: 4em
                          - height: 3.7em
                          - background: '#FFFFFF10'
      - type: custom:button-card
        entity: media_player.nvidia_shield
        name: Plex
        icon: custom
        styles:
          icon:
            - top: '-2%'
            - left: 3%
            - width: 18%
            - position: absolute
          name:
            - top: 80%
            - left: 15%
            - position: center
            - color: rgba(240, 240, 240, 0.8)
          card:
            - font-size: 100%
            - background-color: rgba(240, 240, 240, 0.1)
            - border-radius: 15%
            - border-style: solid
            - border-color: rgba(240, 240, 240, 0.3)
            - border-width: 1px
            - transition: true
          custom_fields:
            icon_plex:
              - top: 14%
              - left: 10%
              - width: 40%
              - position: absolute
        custom_fields:
          icon_plex: |
            [[[
              const state = entity.state === 'idle' ? 'animate' : null;
              return `
                <svg viewBox="0 0 50 50">
                  <style>
                    @keyframes animate {
                      0% {
                        transform: scale(0.85);
                      }
                      20% {
                        transform: scale(1.1);
                      }
                      40% {
                        transform: scale(0.95);
                      }
                      60% {
                        transform: scale(1.03);
                      }
                      80% {
                        transform: scale(0.97);
                      }
                      100% {
                        transform: scale(1);
                      }
                      }
                      .animate {
                      animation: animate 0.8s;
                      transform-origin: center;
                    }
                  </style>
              <path d="M7.7.3h34.6c4.1 0 7.4 3.3 7.4 7.4v34.6c0 4.1-3.3 7.4-7.4 7.4H7.7c-4.1 0-7.4-3.3-7.4-7.4V7.7C.3 3.6 3.6.3 7.7.3z" fill="#282a2d"/>
              <path d="M25,7.1H14.6L25,25L14.6,42.9H25L35.4,25L25,7.1z" fill="#e5a00d"/>
            </svg>
              `;
            ]]]
        aspect_ratio: 1/1
        state:
          - value: 'on'
            styles:
              card:
                - background-color: rgba(255, 255, 255, 0.8)
                - border: 1px rgba(80, 80, 80) solid
                - box-shadow: 0px 0px 6px 3px var(--button-card-light-color)
              name:
                - color: rgba(0, 0, 0, 0.6)
              icon:
                - color: var(--button-card-light-color-no-temperature)
        tap_action:
          action: fire-dom-event
          browser_mod:
            command: popup
            title: Filmographie
            hide_header: true
            large: false
            card:
              type: custom:button-card
              show_entity_picture: false
              entity_picture: /local/Neon/tv.png
              name: Filmographie
              tap_action:
                action: navigate
                navigation_path: '#empty'
              styles:
                card:
                  - font-size: 12px
                  - border-radius: 10px
                  - background-color: transparent
                  - height: 500px
                name:
                  - font-weight: lighter
                  - z-index: 2
                  - position: absolute
                  - top: 20px
                  - left: 20px
                  - font-size: 45px
                  - color: var(--secondary-text-color)
                icon:
                  - width: 50%
                img_cell:
                  - z-index: 2
                  - padding-bottom: 20px
                custom_fields:
                  blur:
                    - z-index: 1
                    - border-radius: 10px
                    - top: 0%
                    - left: 0%
                    - width: 100%
                    - height: 100%
                    - position: absolute
                    - background-color: rgba(0, 0, 0, 0.1)
                    - backdrop-filter: blur(20px)
                    - '-webkit-backdrop-filter': blur(20px)
                  films:
                    - z-index: 3
                    - position: absolute
                    - left: 20px
                    - width: 50px
                    - top: 410px
                  series:
                    - z-index: 3
                    - left: 150px
                    - width: 50px
                    - position: absolute
                    - top: 410px
                  animation:
                    - z-index: 3
                    - left: 280px
                    - width: 50px
                    - position: absolute
                    - top: 410px
                  centre:
                    - z-index: 3
                    - left: 20px
                    - width: 350px
                    - position: absolute
                    - top: 100px
              custom_fields:
                blur: |
                  <div></div>
                films:
                  card:
                    type: custom:button-card
                    name: Films
                    entity: input_select.stat_plex
                    show_state: false
                    show_icon: false
                    tap_action:
                      action: call-service
                      service: input_select.select_option
                      service_data:
                        option: Films2
                        entity_id: input_select.stat_plex
                    styles:
                      card:
                        - '--mdc-ripple-press-opacity': 0
                        - '--mdc-ripple-press-opacity': 0
                        - border-radius: 10px
                        - height: 70px
                        - width: 100px
                        - background: rgba(240, 240, 240, 0.1)
                      name:
                        - color: white
                        - font-weight: bold
                        - font-size: 12px
                        - justify-self: center
                series:
                  card:
                    type: custom:button-card
                    name: Séries
                    entity: input_select.stat_plex
                    show_state: false
                    show_icon: false
                    tap_action:
                      action: call-service
                      service: input_select.select_option
                      service_data:
                        option: Séries2
                        entity_id: input_select.stat_plex
                    styles:
                      card:
                        - '--mdc-ripple-press-opacity': 0
                        - '--mdc-ripple-press-opacity': 0
                        - border-radius: 10px
                        - height: 70px
                        - width: 100px
                        - background: rgba(240, 240, 240, 0.1)
                      name:
                        - color: white
                        - font-weight: bold
                        - font-size: 12px
                        - justify-self: center
                animation:
                  card:
                    type: custom:button-card
                    name: Animation
                    entity: input_select.stat_plex
                    show_state: false
                    show_icon: false
                    tap_action:
                      action: call-service
                      service: input_select.select_option
                      service_data:
                        option: Animations2
                        entity_id: input_select.stat_plex
                    styles:
                      card:
                        - '--mdc-ripple-press-opacity': 0
                        - '--mdc-ripple-press-opacity': 0
                        - border-radius: 10px
                        - height: 70px
                        - width: 100px
                        - background: rgba(240, 240, 240, 0.1)
                      name:
                        - color: white
                        - font-weight: bold
                        - font-size: 12px
                        - justify-self: center
                centre:
                  card:
                    type: custom:state-switch
                    entity: input_select.stat_plex
                    transition: swap-right
                    states:
                      Films2:
                        type: entities
                        card_mod:
                          style: |
                            ha-card {
                             overflow: visible !important;
                             background: rgba(240, 240, 240, 0.1);
                               }
                        entities:
                          - entity: sensor.dalg_plex_library_films
                            name: Films
                      Séries2:
                        type: entities
                        card_mod:
                          style: |
                            ha-card {
                             overflow: visible !important;
                             background: rgba(240, 240, 240, 0.1);
                               }
                        entities:
                          - entity: sensor.dalg_plex_library_series_tv
                            name: Séries TV
                      Animations2:
                        type: entities
                        card_mod:
                          style: |
                            ha-card {
                             overflow: visible !important;
                             background: rgba(240, 240, 240, 0.1);
                               }
                        entities:
                          - entity: sensor.dalg_plex_library_films_animation
                            name: Films d'animation
      - type: conditional
        conditions:
          - entity: input_boolean.bal
            state: 'on'
        card:
          type: custom:button-card
          entity: input_boolean.bal
          name: BAL
          icon: none
          style: |
            @keyframes bgcolorswap {
              0% {
                background-color: red;
              }
              25% {
                background-color: transparent;
              }
              50% {
                background-color: red;
              }
              75% {
                background-color: transparent;
              }
              100% {
                background-color: red;
              }
             }
          styles:
            name:
              - top: 80%
              - left: 15%
              - position: center
              - color: rgba(240, 240, 240, 0.8)
            card:
              - font-size: 75%
              - background-color: rgba(240, 240, 240, 0.1)
              - border-radius: 15%
              - border-style: solid
              - border-color: rgba(240, 240, 240, 0.3)
              - border-width: 1px
              - box-shadow: true
              - transition: true
              - animation: bgcolorswap 4s linear infinite
            custom_fields:
              bal:
                - top: 11%
                - left: 13%
                - width: 96%
                - position: absolute
                - display: |
                    [[[
                      if (states["input_boolean.bal"].state == 'on') return '';
                      else return 'none';
                    ]]] 
          custom_fields:
            bal: |
              [[[
                const state = (entity.state === 'on') ? 'animate' : null;
                return `
                  <svg viewBox="0 0 50 50">
                    <path class="${state}" d="m 12.569321,3.6514222 -0.0128,2.655463 -4.0389784,0.021548 C 4.0015336,6.3542448 4.319632,6.3326885 3.6192308,6.6721236 2.8802183,7.0330993 2.3344885,7.5788282 1.9607171,8.3306372 1.5651695,9.1340781 1.5779661,8.9021824 1.5779661,14.006804 v 4.438568 H 5.9393095 10.300652 V 20.722798 23 h 1.890634 1.890634 v -2.277427 -2.277426 h 4.167836 4.172325 l -0.01728,-4.803809 C 22.392004,8.2918011 22.413309,8.6785932 22.091188,8.034089 21.713151,7.2777907 21.107259,6.7536121 20.269247,6.4485334 L 19.989985,6.349759 16.659936,6.3282119 13.329889,6.3066638 V 5.5546306 4.8025975 l 2.440629,-0.012793 c 1.340638,-0.00425 2.436362,-0.017283 2.436362,-0.030077 0,-0.012793 -0.309344,-0.4381998 -0.691871,-0.9410522 L 16.8274,2.8948995 17.536331,1.9495819 18.249528,0.99999994 H 15.413802 12.578076 Z M 5.6600446,7.1188566 c 1.0571118,0.1890192 1.8906343,0.9280317 2.2430796,1.9808781 l 0.098774,0.3008135 0.012793,4.1334888 0.012793,4.137754 h -2.839992 -2.835951 l 0.00852,-4.180856 0.012793,-4.1765896 0.1160602,-0.3136091 C 2.6563746,8.5409852 2.8498823,8.2401718 3.1935729,7.896482 3.8468317,7.2391821 4.749047,6.9556545 5.6600177,7.1188566 Z m 6.9180314,3.2698854 v 1.01401 l 0.107305,0.10304 c 0.06869,0.07297 0.150406,0.10753 0.257935,0.10753 0.107531,0 0.189019,-0.03435 0.257713,-0.10753 l 0.107529,-0.10304 v -1.01401 -1.009745 l 0.120325,0.025821 c 0.253447,0.060162 0.704667,0.3351603 0.897951,0.5499941 0.919501,1.0140109 0.532709,2.5995659 -0.747768,3.0635809 -0.571546,0.206304 -1.271946,0.10304 -1.766044,-0.262201 -1.00548,-0.734748 -0.992459,-2.346119 0.02581,-3.0507855 0.154673,-0.1073048 0.622953,-0.3223636 0.708932,-0.3266289 0.01729,2.241e-4 0.03031,0.4557099 0.03031,1.0099694 z m 0.730482,8.249916 v 0.193284 h -0.442465 c -0.485566,0 -0.597361,0.04736 -0.657524,0.287794 -0.08171,0.322363 0.158937,0.485567 0.726217,0.485567 h 0.373772 v 0.167692 0.167467 l -0.455485,0.01729 c -0.4382,0.0128 -0.459751,0.01706 -0.558525,0.133121 -0.141876,0.167692 -0.133121,0.347955 0.02155,0.506893 0.124589,0.120325 0.13761,0.124591 0.558524,0.124591 h 0.433934 v 0.193283 0.193284 h -0.446951 c -0.421138,0 -0.45122,0.0042 -0.558525,0.111795 -0.120325,0.12459 -0.146141,0.300813 -0.06442,0.455485 0.07296,0.13761 0.305078,0.206304 0.704665,0.206304 h 0.365242 v 0.171958 0.171956 h -1.138604 -1.138601 v -1.890631 -1.890633 h 1.138601 1.138601 z"/>
                  </svg>
                `;
              ]]]
          aspect_ratio: 1/1
          state:
            - value: 'on'
              styles:
                card:
                  - background-color: rgba(255, 255, 255, 0.7)
                  - border: 1px rgba(80, 80, 80) solid
                name:
                  - color: rgba(0, 0, 0, 0.6)
                icon:
                  - color: var(--button-card-light-color-no-temperature)
          tap_action:
            action: toggle
    columns: 5

Voici mon résultat ça ne fonctionne pas loooool

2022-03-22_15-01-15

type: conditional
conditions:
  - entity: light.lumiere_buffet
    state: 'on'
card:
  type: custom:button-card
  entity: light.lumiere_buffet
  name: Buffet
  show_icon: true
  icon: 'hue:lightstrip'
  styles:
    icon:
      - top: '-2%'
      - left: 3%
      - width: 18%
      - position: absolute
    name:
      - top: 80%
      - left: 15%
      - position: center
      - color: rgba(240, 240, 240, 0.8)
    card:
      - font-size: 70%
      - background-color: rgba(240, 240, 240, 0.1)
      - border-radius: 15%
      - border-style: solid
      - border-color: rgba(240, 240, 240, 0.3)
      - border-width: 1px
      - box-shadow: true
      - transition: true
    custom_fields:
      icon_hue:
        - top: 18%
        - left: 4.5%
        - width: 45%
        - position: absolute
  custom_fields:
    icon_hue: |
      [[[
        const state = entity.state === 'on' ? 'animate' : null;
        return `
          <svg viewBox="0 0 50 50">
            <style>
              @keyframes animate {
                0% {
                  transform: scale(0.85);
                }
                20% {
                  transform: scale(1.1);
                }
                40% {
                  transform: scale(0.95);
                }
                60% {
                  transform: scale(1.03);
                }
                80% {
                  transform: scale(0.97);
                }
                100% {
                  transform: scale(1);
                }
                }
                .animate {
                animation: animate 0.8s;
                transform-origin: center;
              }
            </style>
            <path fill="#9da0a2" d="M27.4 47.3h-4.9s-.7.1-.7.8.4.9.7.9h4.9c.3 0 .7-.1.7-.9s-.7-.8-.7-.8zm3.3-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-3H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9s-.9-.8-.9-.8zm5.2-23.2c-3.3-5.3-7-5.6-10.9-5.6-3.8 0-8.4.4-10.9 5.6-.1.1-.1.3.1.7.4.8 3.3 7.2 3.2 18.8 0 1.1-.1 1.6 0 1.7 0 .1 0 .7 1.1.7h13c1 0 1-.5 1.1-.7v-1.7c-.1-11.6 2.8-18 3.2-18.8.1-.4.1-.5.1-.7"/>
            <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M14.1 15.3c3.4-.3 7-.4 10.9-.4 3.8 0 7.5.2 10.9.4.4-.4.7-.8.9-1.1C39 8.5 38.9 6.5 38.9 6c-.2-4.4-8.4-5-12.1-5h0-3.4c-3.7 0-12 .5-12.1 5 0 .5-.1 2.5 2.1 8.2 0 .3.3.8.7 1.1z"/>
          </svg>
        `;
      ]]]
  aspect_ratio: 1/1
  state:
    - value: 'on'
      styles:
        card:
          - background-color: rgba(255, 255, 255, 0.8)
          - border: 1px rgba(80, 80, 80) solid
          - box-shadow: 0px 0px 6px 3px var(--button-card-light-color)
        name:
          - color: rgba(0, 0, 0, 0.6)
        icon:
          - color: var(--button-card-light-color-no-temperature)
  double_tap_action:
    action: more-info
    styles: null
    icon:
      - top: '-2%'
      - left: 3%
      - width: 50%
      - position: absolute
    name:
      - top: 80%
      - left: 15%
      - position: center
    card:
      - font-size: 100%
      - border-radius: 15%
      - box-shadow: true
      - transition: true

Je ne vois null part le nom des icônes dans tes button-card ou alors c’est ailleurs

C’est cette partie :

  custom_fields:
    icon_hue: |
      [[[
        const state = entity.state === 'on' ? 'animate' : null;
        return `
          <svg viewBox="0 0 50 50">
            <style>
              @keyframes animate {
                0% {
                  transform: scale(0.85);
                }
                20% {
                  transform: scale(1.1);
                }
                40% {
                  transform: scale(0.95);
                }
                60% {
                  transform: scale(1.03);
                }
                80% {
                  transform: scale(0.97);
                }
                100% {
                  transform: scale(1);
                }
                }
                .animate {
                animation: animate 0.8s;
                transform-origin: center;
              }
            </style>
            <path fill="#9da0a2" d="M27.4 47.3h-4.9s-.7.1-.7.8.4.9.7.9h4.9c.3 0 .7-.1.7-.9s-.7-.8-.7-.8zm3.3-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-3H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9s-.9-.8-.9-.8zm5.2-23.2c-3.3-5.3-7-5.6-10.9-5.6-3.8 0-8.4.4-10.9 5.6-.1.1-.1.3.1.7.4.8 3.3 7.2 3.2 18.8 0 1.1-.1 1.6 0 1.7 0 .1 0 .7 1.1.7h13c1 0 1-.5 1.1-.7v-1.7c-.1-11.6 2.8-18 3.2-18.8.1-.4.1-.5.1-.7"/>
            <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M14.1 15.3c3.4-.3 7-.4 10.9-.4 3.8 0 7.5.2 10.9.4.4-.4.7-.8.9-1.1C39 8.5 38.9 6.5 38.9 6c-.2-4.4-8.4-5-12.1-5h0-3.4c-3.7 0-12 .5-12.1 5 0 .5-.1 2.5 2.1 8.2 0 .3.3.8.7 1.1z"/>
          </svg>
        `;
      ]]]

Le nom de l’icone c’est « icon_hue »
Le code comprends l’animation :

        const state = entity.state === 'on' ? 'animate' : null;
        return `
          <svg viewBox="0 0 50 50">
            <style>
              @keyframes animate {
                0% {
                  transform: scale(0.85);
                }
                20% {
                  transform: scale(1.1);
                }
                40% {
                  transform: scale(0.95);
                }
                60% {
                  transform: scale(1.03);
                }
                80% {
                  transform: scale(0.97);
                }
                100% {
                  transform: scale(1);
                }
                }
                .animate {
                animation: animate 0.8s;
                transform-origin: center;
              }

et l’icône :

d="M27.4 47.3h-4.9s-.7.1-.7.8.4.9.7.9h4.9c.3 0 .7-.1.7-.9s-.7-.8-.7-.8zm3.3-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-3H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9s-.9-.8-.9-.8zm5.2-23.2c-3.3-5.3-7-5.6-10.9-5.6-3.8 0-8.4.4-10.9 5.6-.1.1-.1.3.1.7.4.8 3.3 7.2 3.2 18.8 0 1.1-.1 1.6 0 1.7 0 .1 0 .7 1.1.7h13c1 0 1-.5 1.1-.7v-1.7c-.1-11.6 2.8-18 3.2-18.8.1-.4.1-.5.1-.7"/>

Donc pour la supprimer, ton code devrait ressembler à ça :

type: conditional
conditions:
  - entity: light.lumiere_buffet
    state: 'on'
card:
  type: custom:button-card
  entity: light.lumiere_buffet
  name: Buffet
  show_icon: true
  icon: 'hue:lightstrip'
  styles:
    icon:
      - top: '-2%'
      - left: 3%
      - width: 18%
      - position: absolute
    name:
      - top: 80%
      - left: 15%
      - position: center
      - color: rgba(240, 240, 240, 0.8)
    card:
      - font-size: 70%
      - background-color: rgba(240, 240, 240, 0.1)
      - border-radius: 15%
      - border-style: solid
      - border-color: rgba(240, 240, 240, 0.3)
      - border-width: 1px
      - box-shadow: true
      - transition: true
  aspect_ratio: 1/1
  state:
    - value: 'on'
      styles:
        card:
          - background-color: rgba(255, 255, 255, 0.8)
          - border: 1px rgba(80, 80, 80) solid
          - box-shadow: 0px 0px 6px 3px var(--button-card-light-color)
        name:
          - color: rgba(0, 0, 0, 0.6)
        icon:
          - color: var(--button-card-light-color-no-temperature)
  double_tap_action:
    action: more-info
    styles: null
    icon:
      - top: '-2%'
      - left: 3%
      - width: 50%
      - position: absolute
    name:
      - top: 80%
      - left: 15%
      - position: center
    card:
      - font-size: 100%
      - border-radius: 15%
      - box-shadow: true
      - transition: true

Ok donc en faite l’icône c’est :

d="M27.4 47.3h-4.9s-.7.1-.7.8.4.9.7.9h4.9c.3 0 .7-.1.7-.9s-.7-.8-.7-.8zm3.3-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-3H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9-.1-.8-.9-.8-.9-.8zm0-2.9H19.3s-.8 0-.8.8.6.9.8.9h11.5c.2 0 .8-.1.8-.9s-.9-.8-.9-.8zm5.2-23.2c-3.3-5.3-7-5.6-10.9-5.6-3.8 0-8.4.4-10.9 5.6-.1.1-.1.3.1.7.4.8 3.3 7.2 3.2 18.8 0 1.1-.1 1.6 0 1.7 0 .1 0 .7 1.1.7h13c1 0 1-.5 1.1-.7v-1.7c-.1-11.6 2.8-18 3.2-18.8.1-.4.1-.5.1-.7"/>
au lieu de mdi:xxxxxx ?

Donc il faudrait que je trouve une icône svg strip (pour l’exemple) et que je remplace son code SVG par celui que j’ai mentionné juste au-dessus ?

Autre question en enlevant le code « custom_fields » sa enlève l’icône. Par contre, ou c’est config qu’il prenne l’icône quand le custom_fields est indiqué pourquoi ce logo et pas un autre ?

Bon je pense avoir compris pour l’icône :

2022-03-22_16-25-22

et le code :

type: conditional
conditions:
  - entity: light.lumiere_buffet
    state: 'on'
card:
  type: custom:button-card
  entity: light.lumiere_buffet
  name: Buffet
  icon: custom
  styles:
    icon:
      - top: '-2%'
      - left: 3%
      - width: 18%
      - position: absolute
    name:
      - top: 80%
      - left: 15%
      - position: center
      - color: rgba(240, 240, 240, 0.8)
    card:
      - font-size: 70%
      - background-color: rgba(240, 240, 240, 0.1)
      - border-radius: 15%
      - border-style: solid
      - border-color: rgba(240, 240, 240, 0.3)
      - border-width: 1px
      - box-shadow: true
      - transition: true
    custom_fields:
      icon_hue:
        - top: 18%
        - left: 4.5%
        - width: 45%
        - position: absolute
  custom_fields:
    icon_hue: |
      [[[
        const state = entity.state === 'on' ? 'animate' : null;
        return `
          <svg viewBox="0 0 50 50">
            <style>
              @keyframes animate {
                0% {
                  transform: scale(0.85);
                }
                20% {
                  transform: scale(1.1);
                }
                40% {
                  transform: scale(0.95);
                }
                60% {
                  transform: scale(1.03);
                }
                80% {
                  transform: scale(0.97);
                }
                100% {
                  transform: scale(1);
                }
                }
                .animate {
                animation: animate 0.8s;
                transform-origin: center;
              }
            </style>
            <path fill="#9da0a2" d="M 6.328125 12.5 C 6.734375 12.414062 7.132812 12.671875 7.222656 13.078125 C 7.308594 13.480469 7.050781 13.878906 6.648438 13.96875 C 6.242188 14.054688 5.84375 13.796875 5.753906 13.394531 C 5.667969 12.988281 5.925781 12.589844 6.328125 12.5 M 9.996094 11.707031 C 10.398438 11.621094 10.800781 11.878906 10.886719 12.28125 C 10.972656 12.6875 10.71875 13.085938 10.3125 13.175781 C 9.90625 13.261719 9.507812 13.003906 9.421875 12.601562 C 9.332031 12.195312 9.589844 11.796875 9.996094 11.707031 M 13.660156 10.917969 C 14.066406 10.828125 14.464844 11.085938 14.550781 11.488281 C 14.640625 11.894531 14.382812 12.292969 13.976562 12.382812 C 13.574219 12.46875 13.171875 12.210938 13.085938 11.808594 C 13 11.402344 13.253906 11.003906 13.660156 10.917969 M 17.324219 10.125 C 17.730469 10.035156 18.128906 10.292969 18.21875 10.699219 C 18.304688 11.101562 18.046875 11.503906 17.644531 11.589844 C 17.238281 11.675781 16.839844 11.421875 16.75 11.015625 C 16.664062 10.609375 16.921875 10.210938 17.324219 10.125 M 8.003906 15.480469 L 19.105469 13.082031 C 19.914062 12.910156 20.429688 12.109375 20.253906 11.300781 C 19.835938 9.363281 17.925781 8.132812 15.992188 8.550781 L 4.886719 10.945312 C 4.078125 11.121094 3.5625 11.917969 3.738281 12.726562 C 4.15625 14.664062 6.066406 15.898438 8.003906 15.480469 M 18.75 19.5 C 18.335938 19.5 18 19.164062 18 18.75 C 18 18.335938 18.335938 18 18.75 18 C 19.164062 18 19.5 18.335938 19.5 18.75 C 19.5 19.164062 19.164062 19.5 18.75 19.5 M 15 19.5 C 14.585938 19.5 14.25 19.164062 14.25 18.75 C 14.25 18.335938 14.585938 18 15 18 C 15.414062 18 15.75 18.335938 15.75 18.75 C 15.75 19.164062 15.414062 19.5 15 19.5 M 11.25 19.5 C 10.835938 19.5 10.5 19.164062 10.5 18.75 C 10.5 18.335938 10.835938 18 11.25 18 C 11.664062 18 12 18.335938 12 18.75 C 12 19.164062 11.664062 19.5 11.25 19.5 M 7.5 19.5 C 7.085938 19.5 6.75 19.164062 6.75 18.75 C 6.75 18.335938 7.085938 18 7.5 18 C 7.914062 18 8.25 18.335938 8.25 18.75 C 8.25 19.164062 7.914062 19.5 7.5 19.5 M 20.25 16.5 L 6.75 16.5 C 3.75 16.5 3 14.25 3 13.5 L 3 17.25 C 3 19.320312 4.679688 21 6.75 21 L 20.25 21 C 20.664062 21 21 20.664062 21 20.25 L 21 17.25 C 21 16.835938 20.664062 16.5 20.25 16.5 M 16.5 6 C 16.085938 6 15.75 5.664062 15.75 5.25 C 15.75 4.835938 16.085938 4.5 16.5 4.5 C 16.914062 4.5 17.25 4.835938 17.25 5.25 C 17.25 5.664062 16.914062 6 16.5 6 M 12.75 6 C 12.335938 6 12 5.664062 12 5.25 C 12 4.835938 12.335938 4.5 12.75 4.5 C 13.164062 4.5 13.5 4.835938 13.5 5.25 C 13.5 5.664062 13.164062 6 12.75 6 M 9 6 C 8.585938 6 8.25 5.664062 8.25 5.25 C 8.25 4.835938 8.585938 4.5 9 4.5 C 9.414062 4.5 9.75 4.835938 9.75 5.25 C 9.75 5.664062 9.414062 6 9 6 M 5.25 6 C 4.835938 6 4.5 5.664062 4.5 5.25 C 4.5 4.835938 4.835938 4.5 5.25 4.5 C 5.664062 4.5 6 4.835938 6 5.25 C 6 5.664062 5.664062 6 5.25 6 M 17.25 3 L 3.75 3 C 3.335938 3 3 3.335938 3 3.75 L 3 6.75 C 3 7.164062 3.335938 7.5 3.75 7.5 L 17.25 7.5 C 20.25 7.5 21 9.75 21 10.5 L 21 6.75 C 21 4.679688 19.320312 3 17.25 3"/>
            <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M 6.328125 12.5 C 6.734375 12.414062 7.132812 12.671875 7.222656 13.078125 C 7.308594 13.480469 7.050781 13.878906 6.648438 13.96875 C 6.242188 14.054688 5.84375 13.796875 5.753906 13.394531 C 5.667969 12.988281 5.925781 12.589844 6.328125 12.5 M 9.996094 11.707031 C 10.398438 11.621094 10.800781 11.878906 10.886719 12.28125 C 10.972656 12.6875 10.71875 13.085938 10.3125 13.175781 C 9.90625 13.261719 9.507812 13.003906 9.421875 12.601562 C 9.332031 12.195312 9.589844 11.796875 9.996094 11.707031 M 13.660156 10.917969 C 14.066406 10.828125 14.464844 11.085938 14.550781 11.488281 C 14.640625 11.894531 14.382812 12.292969 13.976562 12.382812 C 13.574219 12.46875 13.171875 12.210938 13.085938 11.808594 C 13 11.402344 13.253906 11.003906 13.660156 10.917969 M 17.324219 10.125 C 17.730469 10.035156 18.128906 10.292969 18.21875 10.699219 C 18.304688 11.101562 18.046875 11.503906 17.644531 11.589844 C 17.238281 11.675781 16.839844 11.421875 16.75 11.015625 C 16.664062 10.609375 16.921875 10.210938 17.324219 10.125 M 8.003906 15.480469 L 19.105469 13.082031 C 19.914062 12.910156 20.429688 12.109375 20.253906 11.300781 C 19.835938 9.363281 17.925781 8.132812 15.992188 8.550781 L 4.886719 10.945312 C 4.078125 11.121094 3.5625 11.917969 3.738281 12.726562 C 4.15625 14.664062 6.066406 15.898438 8.003906 15.480469 M 18.75 19.5 C 18.335938 19.5 18 19.164062 18 18.75 C 18 18.335938 18.335938 18 18.75 18 C 19.164062 18 19.5 18.335938 19.5 18.75 C 19.5 19.164062 19.164062 19.5 18.75 19.5 M 15 19.5 C 14.585938 19.5 14.25 19.164062 14.25 18.75 C 14.25 18.335938 14.585938 18 15 18 C 15.414062 18 15.75 18.335938 15.75 18.75 C 15.75 19.164062 15.414062 19.5 15 19.5 M 11.25 19.5 C 10.835938 19.5 10.5 19.164062 10.5 18.75 C 10.5 18.335938 10.835938 18 11.25 18 C 11.664062 18 12 18.335938 12 18.75 C 12 19.164062 11.664062 19.5 11.25 19.5 M 7.5 19.5 C 7.085938 19.5 6.75 19.164062 6.75 18.75 C 6.75 18.335938 7.085938 18 7.5 18 C 7.914062 18 8.25 18.335938 8.25 18.75 C 8.25 19.164062 7.914062 19.5 7.5 19.5 M 20.25 16.5 L 6.75 16.5 C 3.75 16.5 3 14.25 3 13.5 L 3 17.25 C 3 19.320312 4.679688 21 6.75 21 L 20.25 21 C 20.664062 21 21 20.664062 21 20.25 L 21 17.25 C 21 16.835938 20.664062 16.5 20.25 16.5 M 16.5 6 C 16.085938 6 15.75 5.664062 15.75 5.25 C 15.75 4.835938 16.085938 4.5 16.5 4.5 C 16.914062 4.5 17.25 4.835938 17.25 5.25 C 17.25 5.664062 16.914062 6 16.5 6 M 12.75 6 C 12.335938 6 12 5.664062 12 5.25 C 12 4.835938 12.335938 4.5 12.75 4.5 C 13.164062 4.5 13.5 4.835938 13.5 5.25 C 13.5 5.664062 13.164062 6 12.75 6 M 9 6 C 8.585938 6 8.25 5.664062 8.25 5.25 C 8.25 4.835938 8.585938 4.5 9 4.5 C 9.414062 4.5 9.75 4.835938 9.75 5.25 C 9.75 5.664062 9.414062 6 9 6 M 5.25 6 C 4.835938 6 4.5 5.664062 4.5 5.25 C 4.5 4.835938 4.835938 4.5 5.25 4.5 C 5.664062 4.5 6 4.835938 6 5.25 C 6 5.664062 5.664062 6 5.25 6 M 17.25 3 L 3.75 3 C 3.335938 3 3 3.335938 3 3.75 L 3 6.75 C 3 7.164062 3.335938 7.5 3.75 7.5 L 17.25 7.5 C 20.25 7.5 21 9.75 21 10.5 L 21 6.75 C 21 4.679688 19.320312 3 17.25 3"/>
          </svg>
        `;
      ]]]
  aspect_ratio: 1/1
  state:
    - value: 'on'
      styles:
        card:
          - background-color: rgba(255, 255, 255, 0.8)
          - border: 1px rgba(80, 80, 80) solid
          - box-shadow: 0px 0px 6px 3px var(--button-card-light-color)
        name:
          - color: rgba(0, 0, 0, 0.6)
        icon:
          - color: var(--button-card-light-color-no-temperature)
  double_tap_action:
    action: more-info
    styles: null
    icon:
      - top: '-2%'
      - left: 3%
      - width: 50%
      - position: absolute
    name:
      - top: 80%
      - left: 15%
      - position: center
    card:
      - font-size: 100%
      - border-radius: 15%
      - box-shadow: true
      - transition: true

bon par contre reste à comprendre pourquoi elle et toute petite

Augmente cette valeur et tu devrais agrandir ton icône

Ok, car en comparent avec une icône de MDI il indique :

<svg viewBox="0 0 50 50">

Donc lequel choisir le width ou le viewBox ?

le custom_fields c’est uniquement pour les icônes personnalisées.
Sinon comme pour toi, la ligne icon: hue:lightstrip fait apparaitre une icône « classique »

A ta place j’utiliserais le code que je t’ai donné plus haut (sans custom_field)
Test avec une icone mdi au lieu de hue pour voir

avec une icone mdi :
2022-03-22_16-39-54

et le code : (dans les deux lignes <path…> j’ai mis le même code svg)

custom_fields:
    icon_hue: |
      [[[
        const state = entity.state === 'on' ? 'animate' : null;
        return `
          <svg viewBox="0 0 50 50">
            <style>
              @keyframes animate {
                0% {
                  transform: scale(0.85);
                }
                20% {
                  transform: scale(1.1);
                }
                40% {
                  transform: scale(0.95);
                }
                60% {
                  transform: scale(1.03);
                }
                80% {
                  transform: scale(0.97);
                }
                100% {
                  transform: scale(1);
                }
                }
                .animate {
                animation: animate 0.8s;
                transform-origin: center;
              }
            </style>
            <path fill="#9da0a2" d="M2.95 3L2 6.91L19.34 11.25L20.29 7.34L2.95 3M6.09 6.89L4.16 6.41L4.64 4.46L6.57 4.94L6.09 6.89M9.94 7.86L8 7.38L8.5 5.42L10.42 5.91L9.94 7.86M13.8 8.82L11.87 8.34L12.35 6.39L14.27 6.87L13.8 8.82M17.65 9.79L15.72 9.31L16.2 7.35L18.13 7.84L17.65 9.79M4.66 12.75L3.71 16.66L21.05 21L22 17.1L4.66 12.75M7.8 16.65L5.88 16.16L6.35 14.21L8.28 14.69L7.8 16.65M11.65 17.61L9.73 17.13L10.2 15.18L12.13 15.66L11.65 17.61M15.5 18.58L13.58 18.09L14.06 16.14L16 16.62L15.5 18.58M19.36 19.54L17.43 19.06L17.91 17.11L19.84 17.59L19.36 19.54M6.25 12.11L11 10.2L17.75 11.89L13 13.8L6.25 12.11Z"/>
            <path class="${state}" fill="var(--button-card-light-color-no-temperature)" d="M2.95 3L2 6.91L19.34 11.25L20.29 7.34L2.95 3M6.09 6.89L4.16 6.41L4.64 4.46L6.57 4.94L6.09 6.89M9.94 7.86L8 7.38L8.5 5.42L10.42 5.91L9.94 7.86M13.8 8.82L11.87 8.34L12.35 6.39L14.27 6.87L13.8 8.82M17.65 9.79L15.72 9.31L16.2 7.35L18.13 7.84L17.65 9.79M4.66 12.75L3.71 16.66L21.05 21L22 17.1L4.66 12.75M7.8 16.65L5.88 16.16L6.35 14.21L8.28 14.69L7.8 16.65M11.65 17.61L9.73 17.13L10.2 15.18L12.13 15.66L11.65 17.61M15.5 18.58L13.58 18.09L14.06 16.14L16 16.62L15.5 18.58M19.36 19.54L17.43 19.06L17.91 17.11L19.84 17.59L19.36 19.54M6.25 12.11L11 10.2L17.75 11.89L13 13.8L6.25 12.11Z"/>
          </svg>
        `;
      ]]]

et ici le code fourni par MDI pour le SVG :

Et en augmentant cette valeur, l’icône ne grossit pas ?