/* GreenTouch — animații (vezi handoff.md §12) */
@keyframes gtDrift{0%{transform:translate(0,0) rotate(0)}50%{transform:translate(14px,-12px) rotate(4deg)}100%{transform:translate(0,0) rotate(0)}}
@keyframes gtFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes gtPulse{0%{transform:scale(1)}40%{transform:scale(1.35)}100%{transform:scale(1)}}
@keyframes gtBounce{0%,100%{transform:translateY(0);opacity:.7}50%{transform:translateY(5px);opacity:1}}
@keyframes gtIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes gtInX{from{opacity:0;transform:translateX(26px)}to{opacity:1;transform:none}}
@keyframes gtScaleIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
@keyframes gtShimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}

/* reveal la scroll — aplicat prin IntersectionObserver (app.js) */
[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity var(--t-section) var(--ease),transform .6s var(--ease),clip-path .7s var(--ease)}
[data-reveal="mask"]{transform:none;clip-path:inset(4% 92% 4% 0)}
[data-reveal="scale"]{transform:scale(.94)}
[data-reveal].is-in{opacity:1;transform:none;clip-path:inset(0 0 0 0)}
[data-reveal="bar"]{opacity:1;transform:none;width:0}
[data-reveal="bar"].is-in{width:var(--bar-w,100%)}
.anim-in{animation:gtIn .35s var(--ease) both}
.anim-in-x{animation:gtInX .35s var(--ease) both}
.anim-scale-in{animation:gtScaleIn .32s var(--ease) both}
@media (prefers-reduced-motion: reduce){
  [data-reveal]{opacity:1 !important;transform:none !important;clip-path:none !important}
}
