/* The generated PNGs stay anchored to the sculpture; only light and opacity move. */
.tt-surface-svg{isolation:isolate}
.tt-surface{pointer-events:none}
.tt-surface-grain{opacity:var(--surface-coverage);animation:tt-surface-breathe var(--surface-speed) ease-in-out infinite;mix-blend-mode:screen}
.tt-surface-sheen{opacity:var(--surface-shine);animation:tt-surface-sweep calc(var(--surface-speed) + 2s) ease-in-out infinite;transform-box:view-box;transform-origin:center;mix-blend-mode:screen}
.tt-surface-glint{opacity:.2;animation:tt-surface-glint calc(var(--surface-speed) * .7) ease-in-out infinite}
.tt-surface[data-kind=heat] .tt-surface-grain{animation-name:tt-surface-warmth;transform-box:view-box;transform-origin:center}
.tt-surface[data-kind=frost] .tt-surface-grain{mix-blend-mode:normal}
.tt-statue-art .tt-surface-svg{filter:none!important}
.tt-statue-art .tt-statue-base{filter:contrast(1.08) brightness(1.08)}
.tt-statue-art.tt-mini .tt-surface-glints{display:none}
.tt-statue-art.tt-mini .tt-surface *{animation:none!important}
.tt-surface-paused .tt-surface *{animation-play-state:paused!important}
@keyframes tt-surface-breathe{0%,100%{opacity:calc(var(--surface-coverage)*.78)}50%{opacity:var(--surface-coverage)}}
@keyframes tt-surface-warmth{0%,100%{opacity:calc(var(--surface-coverage)*.65);transform:translateY(1.3%) scale(1.01)}50%{opacity:var(--surface-coverage);transform:translateY(-1.3%) scale(1.025)}}
@keyframes tt-surface-sweep{0%,12%{transform:translateX(-42%);opacity:0}24%{opacity:var(--surface-shine)}62%{opacity:var(--surface-shine)}82%,100%{transform:translateX(90%);opacity:0}}
@keyframes tt-surface-glint{0%,52%,100%{opacity:.08}65%{opacity:.95}77%{opacity:.18}}
@media(prefers-reduced-motion:reduce){.tt-surface *{animation:none!important}.tt-surface-grain{opacity:var(--surface-coverage)}.tt-surface-sheen{opacity:calc(var(--surface-shine)*.25);transform:translateX(28%)}.tt-surface-glint{opacity:.22}}
