/* KarbonCero motion/UI presets. Use with Next.js, React, Tailwind, or plain HTML. */
@keyframes kc-pulse-glow { 0%,100% { box-shadow: 0 0 0 rgba(107,224,0,0); } 50% { box-shadow: 0 0 34px rgba(107,224,0,.35); } }
@keyframes kc-scan-x { 0% { transform: translateX(-120%); opacity: 0; } 18% { opacity: .75; } 82% { opacity: .75; } 100% { transform: translateX(120%); opacity: 0; } }
@keyframes kc-float-soft { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes kc-carbon-fade { 0% { opacity: .9; transform: translate(0,0) scale(1); } 100% { opacity: 0; transform: translate(42px,-12px) scale(.35); } }
@keyframes kc-metric-up { from { opacity:0; transform: translateY(12px); } to { opacity:1; transform: translateY(0); } }

.kc-animate-glow { animation: kc-pulse-glow 2.8s ease-in-out infinite; }
.kc-animate-float { animation: kc-float-soft 4s ease-in-out infinite; }
.kc-scanline { position: relative; overflow: hidden; }
.kc-scanline::after { content:""; position:absolute; inset:0; width:42%; background: linear-gradient(90deg, transparent, rgba(107,224,0,.22), transparent); animation: kc-scan-x 3.8s ease-in-out infinite; }
.kc-reveal { opacity:0; transform: translateY(18px); transition: opacity .55s ease, transform .55s ease; }
.kc-reveal.is-visible { opacity:1; transform: translateY(0); }
