/* Tattà® GEPY — stili del rig a immagini (17/10/2026). Il personaggio è il disegno del suo autore: corpo della posa e
   facce della griglia come immagini; qui solo variabili, varianti (una accesa alla volta, data-on da gepy.js),
   rotazione lieve della testa, oggetti di scena e animazioni leggere. Coordinate: la tavola 520 x 805. */
.gepy {
  --gp-speed: 1; --gp-ink: #141414; --gp-bulb: #ffd23f;
  --head-r: 0deg; --lid: 0;
  display: inline-block; line-height: 0;
}
.gepy svg { width: 100%; height: auto; display: block; overflow: visible; }
.gepy image { image-rendering: auto; }
.gepy .gp-var { display: none; }
.gepy .gp-var[data-on="1"] { display: inline; }
.gepy #gepy-testa { transform-origin: 279px 400px; transform: rotate(var(--head-r)); transition: transform calc(.55s / var(--gp-speed)) cubic-bezier(.3, .9, .35, 1.04); }
.gepy .gp-arm { transform: rotate(var(--arm-r, 0deg)); transition: transform calc(.5s / var(--gp-speed)) ease-out; }
/* movimento blando delle braccia (skin con le braccia separate): un'oscillazione attorno alla spalla, per stato */
@keyframes gp-arm-wave { 0%, 100% { transform: rotate(-7deg); } 50% { transform: rotate(7deg); } }
@keyframes gp-arm-sway { 0%, 100% { transform: rotate(0deg); } 50% { transform: rotate(1.5deg); } }
@keyframes gp-arm-talk { 0%, 100% { transform: rotate(-2deg); } 50% { transform: rotate(3deg); } }
@keyframes gp-arm-pump { 0%, 100% { transform: rotate(0deg); } 50% { transform: rotate(-6deg); } }
.gepy[data-motion="on"] svg[data-arm-sx="wave"] .gp-arm-sx[data-on="1"] { animation: gp-arm-wave calc(.9s / var(--gp-speed)) ease-in-out infinite; }
.gepy[data-motion="on"] svg[data-arm-dx="wave"] .gp-arm-dx[data-on="1"] { animation: gp-arm-wave calc(.9s / var(--gp-speed)) ease-in-out infinite reverse; }
.gepy[data-motion="on"] svg[data-arm-sx="sway"] .gp-arm-sx[data-on="1"] { animation: gp-arm-sway calc(6s / var(--gp-speed)) ease-in-out infinite; }
.gepy[data-motion="on"] svg[data-arm-dx="sway"] .gp-arm-dx[data-on="1"] { animation: gp-arm-sway calc(6s / var(--gp-speed)) ease-in-out infinite reverse; }
.gepy[data-motion="on"] svg[data-arm-sx="talk"] .gp-arm-sx[data-on="1"] { animation: gp-arm-talk calc(1.6s / var(--gp-speed)) ease-in-out infinite; }
.gepy[data-motion="on"] svg[data-arm-dx="talk"] .gp-arm-dx[data-on="1"] { animation: gp-arm-talk calc(1.6s / var(--gp-speed)) ease-in-out infinite reverse; }
.gepy[data-motion="on"] svg[data-arm-sx="pump"] .gp-arm-sx[data-on="1"] { animation: gp-arm-pump calc(.6s / var(--gp-speed)) ease-in-out infinite; }
.gepy[data-motion="on"] svg[data-arm-dx="pump"] .gp-arm-dx[data-on="1"] { animation: gp-arm-pump calc(.6s / var(--gp-speed)) ease-in-out infinite reverse; }
.gepy .gp-prop { display: none; }
.gepy .prop-dots circle { fill: #fff; stroke: var(--gp-ink); stroke-width: 3; }
.gepy .prop-dots .gp-dot-in { fill: var(--gp-ink); stroke: none; }
.gepy .gp-rays path { fill: none; stroke: var(--gp-bulb); stroke-width: 6; stroke-linecap: round; }
.gepy .gp-bulb { fill: var(--gp-bulb); stroke: var(--gp-ink); stroke-width: 3; }
.gepy .gp-bulb-base { fill: #9aa3ad; stroke: var(--gp-ink); stroke-width: 2; }
@keyframes gp-sway { 0%, 100% { transform: rotate(var(--head-r)); } 50% { transform: rotate(calc(var(--head-r) + 1deg)); } }
@keyframes gp-nod  { 0%, 100% { transform: rotate(var(--head-r)); } 50% { transform: rotate(calc(var(--head-r) + 2deg)); } }
@keyframes gp-pulse { 0%, 100% { opacity: .35; } 50% { opacity: 1; } }
@keyframes gp-glow  { 0%, 100% { opacity: .6; } 50% { opacity: 1; } }
.gepy[data-motion="on"] [data-state="idle"] #gepy-testa { animation: gp-sway calc(6s / var(--gp-speed)) ease-in-out infinite; }
.gepy[data-motion="on"] [data-state="listening"] #gepy-testa { animation: gp-nod calc(2.4s / var(--gp-speed)) ease-in-out infinite; }
.gepy[data-motion="on"] [data-state="thinking"] .prop-dots circle:nth-child(1) { animation: gp-pulse calc(1.5s / var(--gp-speed)) ease-in-out infinite; }
.gepy[data-motion="on"] [data-state="thinking"] .prop-dots circle:nth-child(2) { animation: gp-pulse calc(1.5s / var(--gp-speed)) ease-in-out .25s infinite; }
.gepy[data-motion="on"] [data-state="thinking"] .prop-dots circle:nth-child(3) { animation: gp-pulse calc(1.5s / var(--gp-speed)) ease-in-out .5s infinite; }
.gepy[data-motion="on"] [data-state="idea"] .gp-rays { animation: gp-glow calc(1.2s / var(--gp-speed)) ease-in-out infinite; }
.gepy [data-state="thinking"] .prop-dots, .gepy [data-state="idea"] .prop-bulb { display: inline; }
.gepy[data-motion="off"] * { animation: none !important; transition: none !important; }
@media (prefers-reduced-motion: reduce) { .gepy:not([data-motion="on"]) * { animation: none !important; transition: none !important; } }
