.feedback {
  --normal: #ECEAF3;
  --normal-shadow: #D9D8E3;
  --normal-mouth: #9795A4;
  --normal-eye: #595861;
  --active: #F8DA69;
  --active-shadow: #F4B555;
  --active-mouth: #F05136;
  --active-eye: #313036;
  --active-tear: #76b5e7;
  --active-shadow-angry: #e94f1d;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}
.feedback li {
  position: relative;
  border-radius: 50%;
  background: var(--sb, var(--normal));
  box-shadow: inset 3px -3px 4px var(--sh, var(--normal-shadow));
  transition: background 0.4s, box-shadow 0.4s, transform 0.3s;
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}
.feedback li:not(:last-child) {
  margin-right: 20px;
}
.feedback li div {
  width: 40px;
  height: 40px;
  position: relative;
  transform: perspective(240px) translateZ(4px);
}
.feedback li div svg,
.feedback li div:before,
.feedback li div:after {
  display: block;
  position: absolute;
  left: var(--l, 9px);
  top: var(--t, 13px);
  width: var(--w, 8px);
  height: var(--h, 2px);
  transform: rotate(var(--r, 0deg)) scale(var(--sc, 1)) translateZ(0);
}
.feedback li div svg {
  
  fill: none;
  stroke: var(--s);
  stroke-width: 2px;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke 0.4s;
}

.feedback li div svg.eye {
  --s: var(--e, var(--normal-eye));
  --t: 17px;
  --w: 7px;
  --h: 4px;
}
.feedback li div svg.eye.right {
  --l: 23px;
}

.feedback li div svg.mouth {
  --s: var(--m, var(--normal-mouth));
  --l: 11px;
  --t: 23px;
  --w: 18px;
  --h: 7px;
}
.feedback li.angry div:before,
.feedback li.angry div:after,
.feedback li.sad div:before,
.feedback li.sad div:after,
.feedback li.ok div:before,
.feedback li.ok div:after,
.feedback li.good div:before,
.feedback li.good div:after,
.feedback li.happy div:before,
.feedback li.happy div:after {
  content: "";
  z-index: var(--zi, 1);
  border-radius: var(--br, 1px);
  background: var(--b, var(--e, var(--normal-eye)));
  transition: background 0.4s;
}


.feedback li.angry {
  --step-1-rx: -24deg;
  --step-1-ry: 20deg;
  --step-2-rx: -24deg;
  --step-2-ry: -20deg;
}
.feedback li.angry div:before {
  --r: 20deg;
}
.feedback li.angry div:after {
  --l: 23px;
  --r: -20deg;
}
.feedback li.angry div svg.eye {
  stroke-dasharray: 4.55;
  stroke-dashoffset: 8.15;
}
.feedback li.angry.active {
  animation: angry 1s linear;
}
.feedback li.angry.active div:before {
  --middle-y: -2px;
  --middle-r: 22deg;
  animation: toggle 0.8s linear forwards;
}
.feedback li.angry.active div:after {
  --middle-y: 1px;
  --middle-r: -18deg;
  animation: toggle 0.8s linear forwards;
}

.feedback li.sad {
  --step-1-rx: 20deg;
  --step-1-ry: -12deg;
  --step-2-rx: -18deg;
  --step-2-ry: 14deg;
}
.feedback li.sad div:before,
.feedback li.sad div:after {
  --b: var(--active-tear);
  --sc: 0;
  --w: 5px;
  --h: 5px;
  --t: 15px;
  --br: 50%;
}
.feedback li.sad div:after {
  --l: 25px;
}
.feedback li.sad div svg.eye {
  --t: 16px;
}
.feedback li.sad div svg.mouth {
  --t: 24px;
  stroke-dasharray: 9.5;
  stroke-dashoffset: 33.25;
}
.feedback li.sad.active div:before,
.feedback li.sad.active div:after {
  animation: tear 0.6s linear forwards;
}

.feedback li.ok {
  --step-1-rx: 4deg;
  --step-1-ry: -22deg;
  --step-1-rz: 6deg;
  --step-2-rx: 4deg;
  --step-2-ry: 22deg;
  --step-2-rz: -6deg;
}
.feedback li.ok div:before {
  --l: 12px;
  --t: 17px;
  --h: 4px;
  --w: 4px;
  --br: 50%;
  box-shadow: 12px 0 0 var(--e, var(--normal-eye));
}
.feedback li.ok div:after {
  --l: 13px;
  --t: 26px;
  --w: 14px;
  --h: 2px;
  --br: 1px;
  --b: var(--m, var(--normal-mouth));
}
.feedback li.ok.active div:before {
  --middle-s-y: .35;
  animation: toggle 0.2s linear forwards;
}
.feedback li.ok.active div:after {
  --middle-s-x: .5;
  animation: toggle 0.7s linear forwards;
}

.feedback li.good {
  --step-1-rx: -14deg;
  --step-1-rz: 10deg;
  --step-2-rx: 10deg;
  --step-2-rz: -8deg;
}
.feedback li.good div:before {
  --b: var(--m, var(--normal-mouth));
  --w: 5px;
  --h: 5px;
  --br: 50%;
  --t: 22px;
  --zi: 0;
  opacity: 0.5;
  box-shadow: 16px 0 0 var(--b);
  filter: blur(2px);
}
.feedback li.good div:after {
  --sc: 0;
}
.feedback li.good div svg.eye {
  --t: 15px;
  --sc: -1;
  stroke-dasharray: 4.55;
  stroke-dashoffset: 8.15;
}
.feedback li.good div svg.mouth {
  --t: 22px;
  --sc: -1;
  stroke-dasharray: 13.3;
  stroke-dashoffset: 23.75;
}
.feedback li.good.active div svg.mouth {
  --middle-y: 1px;
  --middle-s: -1;
  animation: toggle 0.8s linear forwards;
}

.feedback li.happy div {
  --step-1-rx: 18deg;
  --step-1-ry: 24deg;
  --step-2-rx: 18deg;
  --step-2-ry: -24deg;
}
.feedback li.happy div:before {
  --sc: 0;
}
.feedback li.happy div:after {
  --b: var(--m, var(--normal-mouth));
  --l: 11px;
  --t: 23px;
  --w: 18px;
  --h: 8px;
  --br: 0 0 8px 8px;
}
.feedback li.happy div svg.eye {
  --t: 14px;
  --sc: -1;
}
.feedback li.happy.active div:after {
  --middle-s-x: .95;
  --middle-s-y: .75;
  animation: toggle 0.8s linear forwards;
}


.feedback li:not(.active) {
  cursor: pointer;
}
.feedback li:not(.active):active {
  transform: scale(0.925);
}
.feedback li.active {
  --sb: var(--active);
  --sh: var(--active-shadow);
  --m: var(--active-mouth);
  --e: var(--active-eye);
}
.feedback li.active div {
  animation: shake 0.8s linear forwards;
}


@keyframes shake {
  30% {
    transform: perspective(240px)
               rotateX(var(--step-1-rx, 0deg))
               rotateY(var(--step-1-ry, 0deg))
               rotateZ(var(--step-1-rz, 0deg))
               translateZ(10px);
  }
  60% {
    transform: perspective(240px)
               rotateX(var(--step-2-rx, 0deg))
               rotateY(var(--step-2-ry, 0deg))
               rotateZ(var(--step-2-rz, 0deg))
               translateZ(10px);
  }
  100% {
    transform: perspective(240px) translateZ(4px);
  }
}
@keyframes tear {
  0% {
    opacity: 0;
    transform: translateY(-2px) scale(0) translateZ(0);
  }
  50% {
    transform: translateY(12px) scale(0.6, 1.2) translateZ(0);
  }
  20%, 80% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateY(24px) translateX(4px) rotateZ(-30deg) scale(0.7, 1.1) translateZ(0);
  }
}
@keyframes toggle {
  50% {
    transform: translateY(var(--middle-y, 0))
               scale(var(--middle-s-x, var(--middle-s, 1)),
                     var(--middle-s-y, var(--middle-s, 1)))
               rotate(var(--middle-r, 0deg));
  }
}
@keyframes angry {
  40% {
    background: var(--active);
  }
  45% {
    box-shadow: inset 3px -3px 4px var(--active-shadow),
                inset 0 8px 10px var(--active-shadow-angry);
  }
}







.feedback li.shock {
  --step-1-rx: 12deg;
  --step-1-ry: 8deg;
  --step-2-rx: -10deg;
  --step-2-ry: -6deg;
}

.feedback li.shock div .eye.left {
  --l: 8px; 
  --t: 12px;
  --w: 7px; 
  --h: 4px;
}
.feedback li.shock div .eye.right {
  --l: 24px;
  --t: 12px;
  --w: 7px;
  --h: 4px;
}

.feedback li.shock div .brow.left {
  --l: 8px;
  --t: 6px;
  --w: 10px;
  --h: 5px;
}
.feedback li.shock div .brow.right {
  --l: 22px;
  --t: 6px;
  --w: 10px;
  --h: 5px;
}

.feedback li.shock div .mouth {
  --l: 15px;
  --t: 23px;
  --w: 10px;
  --h: 10px;
}

.feedback li.shock.active div .mouth {
  animation: shock-mouth-scale 0.7s ease forwards;
}
@keyframes shock-mouth-scale {
  50% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}


.feedback li.grumpy {
  --step-1-rx: -8deg;
  --step-1-ry: 6deg;
  --step-2-rx: 8deg;
  --step-2-ry: -6deg;
}

.feedback li.grumpy div .eye {
  --t: 16px;
  --w: 6px;
  --h: 2px;
}

.feedback li.grumpy div .brow.left {
  --l: 7px;
  --t: 9px;
  --w: 9px;
  --h: 5px;
  transform: rotate(-15deg);
}
.feedback li.grumpy div .brow.right {
  --l: 24px;
  --t: 9px;
  --w: 9px;
  --h: 5px;
  transform: rotate(15deg);
}

.feedback li.grumpy div .mouth {
  --l: 9px;
    --t: 22px;
    --w: 22px;
    --h: 10px;
}
.feedback li.grumpy.active div .mouth {
  animation: grumpy-mouth 0.6s ease forwards;
}
@keyframes grumpy-mouth {
  50% {
    transform: scale(1.1, 0.8);
  }
  100% {
    transform: scale(1);
  }
}

.feedback li div .brow {
    color: black;
  }

  .feedback li div .eye {
    color: black;
  }




  .emoji-panel {
    position: absolute;
    bottom: 60px;
    right: 20px;
    height: fit-content;
    background: #1b1d2b;
    border-radius: 14px;
    padding: 12px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6);
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    column-gap: 0px;
    row-gap: 12px;
    z-index: 1000;
    transition: opacity 0.3s ease, transform 0.3s ease;
    max-width: calc(100vw - 20px);
    max-width: 253px;
  }
  
  
  .emoji-panel.hidden {
    display: none;
  }
  
  
  .feedback {
    display: contents; 
  }
  
  .feedback li {
    background: var(--sb, var(--normal));
    border-radius: 50%;
    box-shadow: inset 3px -3px 4px var(--sh, var(--normal-shadow));
    width: 42px;
    height: 42px;
    transition: background 0.4s, box-shadow 0.4s, transform 0.3s;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
  }
  .feedback li:hover {
    transform: scale(1.1);
  }
  
  .feedback li div {
    width: 40px;
    height: 40px;
    position: relative;
  }

  .message-content .feedback li:not(:last-child) {
    margin-right: 5px;
}