@keyframes shimmer{0%{background-position:200%}to{background-position:-200%}}.animate-shimmer{animation:3s linear infinite shimmer}.landing-grid-bg{background-image:linear-gradient(to right, var(--border) 1px, transparent 1px), linear-gradient(to bottom, var(--border) 1px, transparent 1px);background-size:48px 48px}.tools-marquee-mask{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.tools-marquee-track{gap:8rem;width:max-content;animation:28s linear infinite tools-marquee;display:flex}@media (min-width:768px){.tools-marquee-track{gap:16rem}}@keyframes tools-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.tools-marquee-track{flex-wrap:wrap;justify-content:center;padding-inline:1rem;animation:none}}.lp-hero-glow{background:radial-gradient(closest-side,#5b5cf029,#5b5cf012 45%,#5b5cf000 100%)}.lp-underline{white-space:nowrap;position:relative}.lp-underline:after{content:"";background:var(--lp-accent);transform-origin:0;border-radius:999px;height:.075em;animation:.7s cubic-bezier(.7,0,.2,1) .65s both lp-sweep;position:absolute;bottom:.03em;left:0;right:0}.lp-strike:after{content:"";transform-origin:0;background:#ef4444;border-radius:999px;height:3px;position:absolute;top:54%;left:-4px;right:-4px;transform:scaleX(0)}[data-inview] .lp-strike:after{animation:lp-sweep .38s cubic-bezier(.7, 0, .2, 1) calc(var(--d,0s) + .45s) forwards}#forgejo .lp-strike:after{background:#ff7a1a;height:.09em}.lp-stage{perspective:1800px}.lp-tilt{transform-origin:50% 0;transition:transform .6s;transform:rotateX(14deg)scale(.94)}@supports (animation-timeline:view()){.lp-tilt{animation:linear both lp-untilt;animation-timeline:view();animation-range:entry cover 45%}}.lp-phone-stage{perspective:1400px}.lp-phone{transition:transform .7s cubic-bezier(.2,1,.3,1);transform:rotateY(-14deg)rotateX(6deg)}.lp-phone-stage:hover .lp-phone{transform:rotateY(-4deg)rotateX(2deg)translateY(-8px)}.lp-float{animation:6s ease-in-out infinite lp-float}.lp-card{transition:transform .3s cubic-bezier(.2,1,.3,1),box-shadow .3s}.lp-card:hover{transform:translateY(-4px);box-shadow:0 24px 60px -30px #17181c59}.lp-nudge{animation:1.6s ease-in-out infinite lp-nudge}.lp-pulse{animation:1.8s ease-in-out infinite lp-pulse}.lp-blink{animation:1s steps(2,end) infinite lp-blink}.lp-draw{stroke-dasharray:1;stroke-dashoffset:1px}[data-inview] .lp-draw{animation:lp-draw 1.1s cubic-bezier(.5, 0, .3, 1) var(--d,0s) forwards}.lp-dot{transform-box:fill-box;transform-origin:50%}@media (scripting:enabled) and (prefers-reduced-motion:no-preference){.lp-hero-in{animation:.8s cubic-bezier(.2,1,.3,1) both lp-rise}.lp-scope .lp-reveal,.lp-scope .lp-rise,.lp-scope .lp-pop,.lp-scope .lp-dot,.lp-scope .lp-stamp{opacity:0}[data-inview] .lp-reveal{animation:lp-rise .7s cubic-bezier(.2, 1, .3, 1) var(--d,0s) both}[data-inview] .lp-rise{animation:lp-rise .65s cubic-bezier(.2, 1, .3, 1) var(--d,0s) both}[data-inview] .lp-pop{animation:lp-pop .8s cubic-bezier(.2, 1.2, .3, 1) var(--d,.15s) both}[data-inview] .lp-dot{animation:lp-pop-dot .35s cubic-bezier(.2, 1.6, .4, 1) var(--d,0s) both}[data-inview] .lp-stamp{animation:.35s cubic-bezier(.3,1.6,.5,1) 1.75s both lp-stamp}.lp-line{transform-origin:0;transform:scaleX(0)}[data-inview] .lp-line{animation:1.4s cubic-bezier(.6,0,.2,1) .3s forwards lp-sweep}}@media (prefers-reduced-motion:reduce){.lp-tilt,.lp-phone{animation:none;transform:none}.lp-float,.lp-nudge,.lp-pulse,.lp-blink,.lp-underline:after{animation:none}.lp-draw{stroke-dashoffset:0}.lp-strike:after{transform:scaleX(1);animation:none!important}}@keyframes lp-rise{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}@keyframes lp-pop{0%{opacity:0;transform:perspective(1200px)rotateX(18deg)translateY(40px)scale(.94)}to{opacity:1;transform:none}}@keyframes lp-pop-dot{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:none}}@keyframes lp-stamp{0%{opacity:0;transform:rotate(-8deg)scale(2.4)}to{opacity:1;transform:rotate(-8deg)scale(1)}}@keyframes lp-sweep{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes lp-draw{to{stroke-dashoffset:0}}@keyframes lp-untilt{0%{transform:rotateX(18deg)scale(.92)}to{transform:rotateX(0)scale(1)}}@keyframes lp-float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes lp-nudge{0%,to{transform:translate(0)}50%{transform:translate(4px)}}@keyframes lp-pulse{0%,to{box-shadow:0 0 #34d39999}50%{box-shadow:0 0 0 6px #34d39900}}@keyframes lp-blink{50%{opacity:0}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}:root{--lp-canvas:#f7f6f2;--lp-surface:#fff;--lp-muted:#f2f1ed;--lp-ink:#17181c;--lp-on-ink:#fff;--lp-accent:#5b5cf0;--lp-accent-soft:#eeefff;--lp-accent-tint:#e9e9ff;--lp-grid:#17181c0a}.dark{--lp-canvas:#0b0c0f;--lp-surface:#141519;--lp-muted:#1c1d23;--lp-ink:#f2f1ed;--lp-on-ink:#17181c;--lp-accent:#8b8cff;--lp-accent-soft:#212348;--lp-accent-tint:#191a36;--lp-grid:#ffffff0b}.dark .lp-card:hover{box-shadow:0 24px 60px -30px #000000e6,0 0 0 1px #ffffff14}.dark .lp-hero-glow{background:radial-gradient(closest-side,#5b5cf047,#5b5cf01a 45%,#5b5cf000 100%)}
